Skip to content

Керування файлами через API Token

Керування файлами через API Token призначене для скриптів, автоматизованих задач і сторонніх панелей керування. Воно використовує дозвіл manage і дає змогу без відкриття адмін-панелі редагувати інформацію про файли, переміщувати файли, перейменовувати файли, створювати файли-заповнювачі каталогів, налаштовувати теги файлів і статус списків, забороняти або відновлювати IP для завантаження, а також створювати чи видаляти короткострокові Token для завантаження.

Цей скрипт обробляє лише легкі дії в керуванні файлами та користувачами. Завантаження, списки, видалення, налаштування завантаження, налаштування сайту та федеративні зв'язки й надалі використовують власні спеціалізовані скрипти.

Редагування API Token

Підготовка

В адмін-панелі відкрийте:

System Settings -> Security Settings -> API Token

Під час створення або редагування API Token переконайтеся, що цей Token має дозвіл керування. Дозвіл manage може змінювати стан файлів, стан завантаження користувачів і створювати короткострокові Token для завантаження, тому надавайте його лише довіреним скриптам або користувачам.

Операції запису в скрипті керування файлами типово працюють у режимі попереднього перегляду й нічого фактично не зберігають. Після перевірки попереднього результату додайте --apply, щоб виконати запис.

Token також можна зберегти у змінній середовища:

powershell
$env:IMGHOST_API_TOKEN="your API Token"

Завантаження скрипту

СкриптПризначення
скрипт керування файламиМетадані файлів, мітки модерації, теги файлів, статус списків, переміщення, перейменування, створення папок, блокування/відновлення IP, створення і видалення короткострокових Token для завантаження

Для запуску потрібен Node.js 18 або новіший на локальному комп'ютері.

Межі функцій

МожливістьСкриптДозвіл
Завантажувати файлиimghost-token-single-upload.mjs / imghost-token-chunk-upload.mjsupload
Показувати файли, фільтрувати файли та читати статистику користувачівimghost-token-list.mjslist
Видаляти явно вказані файлиimghost-token-delete.mjsdelete
Редагувати інформацію про файли, теги й списки, переміщувати, перейменовувати, створювати папки, блокувати IP і створювати або видаляти короткострокові Token для завантаженняimghost-token-manage.mjsmanage
Редагувати канали завантаження, налаштування безпеки, налаштування сторінок, інші налаштування та федеративні зв'язкиСкрипти керування конфігурацієюmanage

imghost-token-manage.mjs не завантажує файли, не показує список файлів і не видаляє файли. Якщо потрібно знайти fileId, спочатку скористайтеся скриптом списку для фільтрування файлів. Якщо потрібно видалити файл, передайте конкретний fileId у скрипт видалення.

Загальні параметри

ПараметрОбов'язковоОпис
--base-url <url>ТакАдреса ImgHost, наприклад https://image.ai6.me
--token <token>ТакAPI Token; можна використовувати змінну середовища IMGHOST_API_TOKEN
--retries <n>НіКількість повторів для тимчасових помилок; типово 3
--timeout-ms <n>НіТаймаут одного запиту; типово 180000
--output <pretty|json>НіФормат виводу; типово pretty; для програмної обробки краще json
--save-response <path>НіЗберігає фінальний результат у JSON-файл
--batch-size <n>НіКількість елементів, які обробляються одним пакетним запитом; типово 15, максимум 15
--applyНіСправді виконує запис; без цього параметра показує лише попередній результат
-h / --helpНіПоказує довідку скрипту

Спочатку підтвердьте fileId

Більшість дій скрипту керування файлами потребують fileId. Спочатку його можна знайти через скрипт списку:

powershell
node imghost-token-list.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --files `
  --dir "test4" `
  --count 10 `
  --output json

Поле name у результаті зазвичай є тим fileId, який можна передати скрипту керування файлами.

Метадані файлу

Метадані файлу використовуються для зміни імені, яке відображається в керуванні файлами адмін-панелі, і джерела читання.

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --set-metadata `
  --file-id "photos/2026/a.jpg" `
  --file-name "cover.jpg" `
  --read-source backup

Після перевірки попереднього результату збережіть зміну:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --set-metadata `
  --file-id "photos/2026/a.jpg" `
  --file-name "cover.jpg" `
  --read-source backup `
  --apply

Параметри метаданих файлу

ПараметрОпис
--set-metadataЗмінює метадані одного файлу
--file-id <id>ID файлу, який потрібно змінити
--file-name <name>Нове ім'я, що відображається в адмін-панелі
--read-source <primary|backup>Джерело читання. primary — основне джерело, backup — резервне джерело

Передайте принаймні один параметр: --file-name або --read-source.

Мітки модерації

Мітки модерації відповідають віковій класифікації файлу. Поточну мітку можна спочатку прочитати, а потім змінити.

Прочитати мітку модерації:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --get-label `
  --file-id "photos/2026/a.jpg"

Установити мітку модерації:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --set-label `
  --file-id "photos/2026/a.jpg" `
  --label r12 `
  --apply

Параметри міток модерації

ПараметрОпис
--get-labelЧитає мітку модерації одного файлу
--set-labelЗмінює мітку модерації одного файлу
--file-id <id>ID файлу
--label <value>Значення мітки: all-ages, r12, r16, r18, None

Теги файлів

Теги файлів додають до файлів пошукові робочі мітки. Скрипт підтримує читання, заміну, додавання й видалення тегів, а також пакетну обробку кількох файлів.

Прочитати теги файлу:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --get-tags `
  --file-id "photos/2026/a.jpg"

Додати теги:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --add-tags `
  --file-id "photos/2026/a.jpg" `
  --tag "cover" `
  --tag "2026" `
  --apply

Видалити теги:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --remove-tags `
  --file-id "photos/2026/a.jpg" `
  --tag "cover" `
  --apply

Замінити теги:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --set-tags `
  --file-id "photos/2026/a.jpg" `
  --tag "archive" `
  --tag "public" `
  --apply

Додати теги пакетно:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --batch-tags `
  --file-id "photos/2026/a.jpg" `
  --file-id "photos/2026/b.jpg" `
  --tag-action add `
  --tag "batch-test" `
  --apply

Параметри тегів файлів

ПараметрОпис
--get-tagsЧитає теги одного файлу
--set-tagsЗамінює теги одного файлу
--add-tagsДодає теги до одного файлу
--remove-tagsВидаляє теги з одного файлу
--batch-tagsУстановлює, додає або видаляє теги пакетно
--file-id <id>ID файлу; у пакетних діях можна передавати кілька разів
--tag <tag>Значення тегу; можна передавати кілька разів
--tags-json <path>Читає масив тегів із JSON-файла
--tag-action <set|add|remove>Пакетна дія з тегами

Приклад вмісту файла --tags-json:

json
["cover", "2026", "public"]

Статус чорного та білого списку

Статус списку визначає поведінку контролю доступу до файлу в режимі публічного доступу. Його можна змінити для одного файлу або пакетно.

Додати один файл до білого списку:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --set-list-type `
  --file-id "photos/2026/a.jpg" `
  --list-type White `
  --apply

Пакетно додати файли до чорного списку:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --batch-list-type `
  --file-id "photos/2026/a.jpg" `
  --file-id "photos/2026/b.jpg" `
  --list-type Block `
  --apply

Відновити типовий статус списку:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --set-list-type `
  --file-id "photos/2026/a.jpg" `
  --list-type None `
  --apply

Параметри чорного та білого списку

ПараметрОпис
--set-list-typeЗмінює статус списку одного файлу
--batch-list-typeПакетно змінює статус списку файлів. Один запит обробляє щонайбільше 15 файлів
--file-id <id>ID файлу; у пакетних діях можна передавати кілька разів
--list-type <None|White|Block>None — типовий статус, White — білий список, Block — чорний список

Переміщення файлів

Переміщення файлів переносить один або кілька файлів до цільового каталогу. Backend обробляє щонайбільше 15 файлів за один запит. Скрипт автоматично ділить роботу за --batch-size і виконує запити послідовно.

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --move `
  --file-id "photos/2026/a.jpg" `
  --file-id "photos/2026/b.jpg" `
  --target-path "archive/2026" `
  --apply

Параметри переміщення

ПараметрОпис
--moveПереміщує файли
--file-id <id>ID файлу для переміщення; можна передавати кілька разів
--target-path <dir>Цільовий каталог
--batch-size <n>Кількість файлів, що переміщуються одним запитом; типово 15, максимум 15

Перейменування або зміна шляху

Перейменування використовує явний старий ID файлу та новий ID файлу. Новий ID може змінити лише ім'я файлу або одночасно змінити каталог.

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --rename `
  --old-file-id "photos/2026/a.jpg" `
  --new-file-id "photos/2026/a-renamed.jpg" `
  --apply

Для пакетного перейменування повторюйте --old-file-id і --new-file-id:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --rename `
  --old-file-id "photos/2026/a.jpg" `
  --new-file-id "archive/2026/a.jpg" `
  --old-file-id "photos/2026/b.jpg" `
  --new-file-id "archive/2026/b.jpg" `
  --apply

Відповідність також можна записати в JSON-файл:

json
[
  {
    "oldFileId": "photos/2026/a.jpg",
    "newFileId": "archive/2026/a.jpg"
  },
  {
    "oldFileId": "photos/2026/b.jpg",
    "newFileId": "archive/2026/b.jpg"
  }
]
powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --rename `
  --items-json ".\rename-items.json" `
  --apply

Параметри перейменування

ПараметрОпис
--renameПерейменовує або змінює шляхи за явною відповідністю
--old-file-id <id>Початковий ID файлу; можна передавати кілька разів
--new-file-id <id>Новий ID файлу; можна передавати кілька разів, кількість має збігатися з --old-file-id
--items-json <path>JSON-масив. Кожен елемент має вигляд { "oldFileId": "...", "newFileId": "..." }
--batch-size <n>Кількість перейменувань, що обробляються одним запитом; типово 15, максимум 15

Створення папок

Каталоги ImgHost виводяться зі шляхів файлів, тому справжніх порожніх каталогів немає. Коли скрипт створює папку, він створює в цільовому каталозі файл-заповнювач 0.md, щоб цей каталог відображався в керуванні файлами та статистиці каталогів.

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --create-folder `
  --parent-directory "photos" `
  --folder-name "2026" `
  --apply

Параметри створення папки

ПараметрОпис
--create-folderСтворює файл-заповнювач каталогу
--parent-directory <dir>Батьківський каталог; для кореня передайте порожній рядок
--folder-name <name>Назва нової папки

Блокування та відновлення IP завантаження

За допомогою дозволу керування можна додати IP до списку заборони завантаження або прибрати його з цього списку. Ця дія впливає на майбутні завантаження з цього IP, але не видаляє файли, які вже були завантажені з цієї адреси.

Заблокувати IP завантаження:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --block-ip "67.159.48.149" `
  --apply

Відновити IP завантаження:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --allow-ip "67.159.48.149" `
  --apply

Переглянути поточний список IP, яким заборонено завантаження:

powershell
node imghost-token-list.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --blocked-ips

Параметри керування IP

ПараметрОпис
--block-ip <ip>Додає IP до списку заборони завантаження
--allow-ip <ip>Видаляє IP зі списку заборони завантаження

Створення і видалення короткострокових Token для завантаження

Дозвіл керування може створювати короткострокові Token лише для завантаження. Такий Token завжди має тільки дозвіл upload, autoDelete завжди дорівнює true, а максимальний строк дії становить 1 день.

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --create-upload-token `
  --name "Temporary Upload Token" `
  --owner "upload-bot" `
  --default-upload-channel telegram `
  --expires-in-minutes 20 `
  --apply `
  --output json

Також можна напряму передати часову мітку в мілісекундах:

powershell
$expiresAt = [DateTimeOffset]::UtcNow.AddHours(12).ToUnixTimeMilliseconds()

node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --create-upload-token `
  --name "Upload Token valid for one day" `
  --owner "upload-bot" `
  --default-upload-channel telegram `
  --expires-at $expiresAt `
  --apply

Під час видалення короткострокового Token для завантаження потрібно передати id, який повернув API створення. Керівний Token може видаляти лише Token, що відповідають цим умовам:

УмоваВимога
Дозвілpermissions містить лише upload
АвтовидаленняautoDelete=true
Строк діїexpiresAt - createdAt <= 24 години

Видалити короткостроковий Token для завантаження:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --delete-upload-token `
  --token-id "mqt4jqokc85be80d1f0f47078e848a77d6c1aa6e" `
  --apply

Керівний Token не може видаляти звичайні Token, довгострокові Token, Token з дозволами list / delete / manage, а також Token для завантаження зі строком дії понад 1 день. Такі Token і далі потрібно обробляти в адмін-панелі браузера.

Параметри короткострокового Token для завантаження

ПараметрОпис
--create-upload-tokenСтворює короткостроковий Token лише для завантаження
--delete-upload-tokenВидаляє придатний короткостроковий Token лише для завантаження
--name <name>Назва Token
--owner <owner>Опис власника Token
--default-upload-channel <key>Типовий канал завантаження. Це має бути реальний канал, наприклад telegram, s3 або github
--expires-in-minutes <n>Кількість хвилин до завершення строку дії від поточного часу. Максимум 1440
--expires-at <ms>Абсолютний час завершення строку дії як мілісекундна часова мітка. Максимум 24 години від поточного часу
--token-id <id>ID короткострокового Token для завантаження, який потрібно видалити

Короткострокові Token для завантаження дозволяють лише завантажувати файли. У тестах короткостроковий Token з permissions=["upload"] відхилявся під час доступу до API списків, керування файлами та видалення.

Після завершення строку дії Token з autoDelete=true очищається, коли backend перевіряє й виявляє, що він прострочений. Читання списку API Token також очищає прострочені Token, у яких autoDelete дорівнює true.

Відповідність API

ДіяМетодAPI
Змінити метадані файлуPATCH/api/manage/metadata/{fileId}
Прочитати мітку модераціїGET/api/manage/label/{fileId}
Змінити мітку модераціїPOST/api/manage/label/{fileId}
Прочитати теги файлуGET/api/manage/tags/{fileId}
Змінити теги файлуPOST/api/manage/tags/{fileId}
Пакетно змінити теги файлуPOST/api/manage/tags/batch
Змінити статус спискуPOST/api/manage/listType/{fileId}
Пакетно змінити статус спискуPOST/api/manage/listType/batch
Перемістити або перейменуватиPOST/api/manage/relocate/batch
Створити папкуPOST/api/manage/folder/create
Заблокувати IP завантаженняPOST/api/manage/cusConfig/blockip
Відновити IP завантаженняPOST/api/manage/cusConfig/whiteip
Створити короткостроковий Token для завантаженняPOST/api/manage/apiTokens
Видалити короткостроковий Token для завантаженняDELETE/api/manage/apiTokens?id={tokenId}

Скрипт автоматично додає:

text
Authorization: Bearer your API Token

Формат виводу

Типовий вивід pretty зручний для читання людиною. Якщо результат має обробляти інша програма, використовуйте --output json:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --get-tags `
  --file-id "photos/2026/a.jpg" `
  --output json

Також можна зберегти повний результат:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --get-tags `
  --file-id "photos/2026/a.jpg" `
  --output json `
  --save-response ".\manage-result.json"

Пакетне переміщення, пакетне перейменування та пакетні дії зі списками розбирають потік прогресу NDJSON, який повертає backend, і підсумовують кількість подій, стан завершення та деталі помилок.

Поширені запитання

Чому команда нічого не змінила

Операції запису типово працюють у режимі попереднього перегляду. Після перевірки попереднього результату додайте --apply, щоб справді зберегти зміну.

Чи може цей скрипт завантажувати, показувати або видаляти файли

Ні. Для завантаження використовуйте скрипти завантаження, для списків і фільтрації — скрипт списку, для видалення конкретних файлів — скрипт видалення. Скрипт керування файлами обробляє лише легкі дії з дозволом manage.

Як дізнатися, який fileId передати

Спочатку знайдіть файли через imghost-token-list.mjs --files. Поле name у результаті зазвичай є ID файлу, тобто значенням для --file-id.

Скільки файлів може обробити одна пакетна операція

Backend обробляє щонайбільше 15 файлів за один запит. Скрипт типово використовує --batch-size 15; якщо передати менше значення, він автоматично поділить роботу на кілька послідовних запитів.

Чи можна створити справді порожню папку

Каталоги ImgHost виводяться зі шляхів файлів, тому справжніх порожніх папок немає. --create-folder створює файл-заповнювач каталогу 0.md, щоб папка відображалася в керуванні файлами та статистиці каталогів.

Як довго може діяти короткостроковий Token для завантаження

Щонайбільше 1 день, тобто 1440 хвилин. Якщо строк перевищує цей ліміт, скрипт відхилить його локально, а backend також поверне API_TOKEN_MANAGE_CREATE_EXPIRES_AT_TOO_LONG.

Чи буде короткостроковий Token для завантаження автоматично видалено після завершення строку дії

Він очищається автоматично, але не миттєвим плановим завданням. Прострочений Token очищається під час наступної перевірки. Читання списку API Token також очищає прострочені Token з autoDelete=true.

Released as user documentation for ImgHost.