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.