Документация
Здесь описано, как подключить ваш сервис к загрузке изображений на платформу ChezarovIMG и получать готовые ссылки для публикаций и профилей GTA5RP.
Для обращения к API используйте авторизованную сессию пользователя ChezarovIMG. Достаточно выполнить обычный вход и передавать cookie
chezarovimg_session и XSRF-TOKEN вместе с заголовком X-CSRF-TOKEN и Accept: application/json в каждом запросе.
Эндпоинт загрузки
Отправьте POST запрос на https://img.davidordyan.online/upload с типом multipart/form-data. Поддерживаются следующие поля:
- files[] - одно или несколько изображений (обязательное поле).
- title - заголовок, будет применён ко всем изображениям (необязательно).
- album_id - ID существующего альбома пользователя.
- new_album - название нового альбома, создаётся автоматически.
- auto_delete - время автоудаления (доступно:
0,5m,1h,1d,1w). - is_public -
1или0, определяет видимость снимков.
Минимальный пример на curl:
curl -X POST "https://img.davidordyan.online/upload" \
-H "Accept: application/json" \
-H "X-CSRF-TOKEN: <ваш_csrf_token>" \
-b "XSRF-TOKEN=<cookie>; chezarovimg_session=<cookie>" \
-F "files[]=@/path/to/screenshot.png" \
-F "title=Вид из окна"
Ответ сервера
Успешная загрузка возвращает JSON с массивом созданных изображений:
{
"items": [
{
"id": 418,
"user_id": 7,
"album_id": null,
"title": "night-city",
"slug": "xk39p4m2q1vw",
"path": "uploads/xk39p4m2q1vw.png",
"mime": "image/png",
"ext": "png",
"size_bytes": 482133,
"width": 1920,
"height": 1080,
"delete_at": null,
"views": 0,
"is_public": true,
"ip_address": "127.0.0.1",
"is_blocked": false,
"created_at": "2024-03-25T12:13:14.000000Z",
"updated_at": "2024-03-25T12:13:14.000000Z"
}
]
}
Python (requests)
import requests
session = requests.Session()
session.headers.update({"Accept": "application/json"})
# Сюда поместите действительные cookie после авторизации
session.cookies.set("chezarovimg_session", "<session-cookie>")
session.cookies.set("XSRF-TOKEN", "<xsrf-cookie>")
files = {"files[]": ("garage.png", open("garage.png", "rb"), "image/png")}
data = {"title": "GTA5RP Garage", "auto_delete": "0"}
headers = {"X-CSRF-TOKEN": "<ваш_csrf_token>"}
response = session.post("https://img.davidordyan.online/upload", files=files, data=data, headers=headers)
response.raise_for_status()
for item in response.json().get("items", []):
public_link = f"https://img.davidordyan.online/f/{item['slug']}.{item['ext']}"
print("Загружено:", public_link)
JavaScript (браузер)
async function uploadScreenshot(file) {
const csrf = document.querySelector('meta[name="csrf-token"]').content;
const formData = new FormData();
formData.append('files[]', file);
formData.append('title', 'Raid highlight');
const response = await fetch('https://img.davidordyan.online/upload', {
method: 'POST',
headers: {
'Accept': 'application/json',
'X-CSRF-TOKEN': csrf,
},
credentials: 'include',
body: formData,
});
if (!response.ok) {
throw new Error('Upload failed');
}
const payload = await response.json();
return payload.items.map(item => ({
slug: item.slug,
url: `https://img.davidordyan.online/f/${item.slug}.${item.ext}`,
}));
}
Функция ожидает, что пользователь уже авторизован в том же домене (куки и CSRF-токен доступны на странице).
Node.js (axios)
import axios from 'axios';
import FormData from 'form-data';
import fs from 'node:fs';
const form = new FormData();
form.append('files[]', fs.createReadStream('heist.jpg'));
form.append('is_public', '1');
const response = await axios.post('https://img.davidordyan.online/upload', form, {
headers: {
...form.getHeaders(),
'Accept': 'application/json',
'X-CSRF-TOKEN': process.env.CSRF_TOKEN,
},
withCredentials: true,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-CSRF-TOKEN',
});
for (const item of response.data.items) {
console.log('Direct link:', `https://img.davidordyan.online/f/${item.slug}.${item.ext}`);
}
Перед выполнением запроса сохраните cookies авторизованного аккаунта (например, через tough-cookie) и передайте их в axios.