GDM can be driven without its window in three ways:
- Собственная командная строка приложения, те же параметры, что и у IDM: передайте загрузку запущенному приложению из скрипта, пакетного файла или другой программы.
misterdownloadmanager-cli, отдельный инструмент командной строки: загружайте файлы, видео и торренты в терминале, с отображением прогресса, без приложения.- The automation API: other programs list the running app's downloads (as JSON) and pause, start, remove or delete them, over a local, token-protected channel. AI assistants use it through GDM's MCP server: see AI assistants.
To run the whole app without a window, on a home server or a NAS, see Run GDM on a server (misterdownloadmanager --headless); to control it from a phone, Control GDM from your phone.
В примерах используются пути Windows; в macOS и Linux программы имеют те же имена без .exe.
Командная строка приложения
misterdownloadmanager.exe /d URL [/p folder] [/f name] [/a] [/n] [/s]
| Параметр | Что он делает |
|---|---|
/d URL |
Адрес для загрузки. |
/p folder |
Сохранить в этой папке (иначе в папке категории из Параметры → Сохранить в). |
/f name |
Сохранить под этим именем. |
/a |
Добавить в основную очередь загрузки без запуска. |
/n |
Тихий режим: нет окна Информация о загружаемом файле, загрузка начинается (или ставится в очередь, с /a) сразу. |
/s |
Запустить основную очередь загрузки. |
/exit |
Сохранить и закрыть запущенное приложение (установщик использует это перед обновлением). |
/startup |
Start in the notification area, the window hidden: what Launch GolinksPRO Download Manager on startup starts GDM with when you sign in. Where no notification area shows GDM's icon (some Linux desktops), GDM starts minimized. A running GDM stays as it is. |
файл .torrent или ссылка magnet: |
Open it in Add torrent (what Windows passes when GDM opens torrents). |
Switches can start with / or -, in any case. If GDM is running, the command goes to it; if not, GDM starts and carries it out. For example:
misterdownloadmanager.exe /d https://example.com/files/report.pdf /p D:\Reports /n
misterdownloadmanager.exe /d https://example.com/big.iso /a
misterdownloadmanager.exe /s
misterdownloadmanager-cli
It comes with every download of GDM, next to the app (the installer puts it in GDM's folder). It works on its own: the app needn't run, except for status and api.
| Команда | Что он делает |
|---|---|
get URL [-o folder\|file] [-c connections] [-H "Header: value"]... [--checksum hash] [--dns choice] [--adapter name] |
Загружает файл, используя до 8 соединений (-c, от 1 до 128), с отображением прогресса. Ctrl+C приостанавливает загрузку; resume продолжает. --checksum проверяет готовый файл: шестнадцатеричный MD5, SHA-1, SHA-256, SHA-512 или CRC32, опционально с именем (sha256:…). --dns выбирает DNS: system (по умолчанию); службу и способ запроса к ней, cloudflare-https, quad9-tls, google-plain, adguard-https, nextdns-tls; адреса DNS-серверов, 9.9.9.9,149.112.112.112; или адрес DNS-over-HTTPS. Он никогда не возвращается к системному DNS. --adapter отправляет каждое соединение через один сетевой адаптер по его имени (Ethernet, wg0) или одному из его адресов; если он не подключен, ничего не отправляется и загрузка завершается ошибкой. Ссылка с файлового хостинга, который поддерживает одна из ваших учетных записей дебрида (Параметры → Учетные записи), проходит через эту учетную запись, как в приложении, и get говорит through Real-Debrid; --direct загружает сам адрес (Учетные записи службы дебрида). |
resume file.mdm.json [-c connections] [-H ...] [--direct] |
Продолжает приостановленную или прерванную загрузку из файла .mdm.json рядом с ним. Через учетную запись дебрида, как get: служба предоставляет новую ссылку, когда старая истекла; --direct продолжает с самого адреса. |
install-gallery-dl |
Устанавливает или обновляет gallery-dl для галерей изображений: его список контрольных сумм проверяется по ключу подписи автора, а программа — по этому списку (Windows и Linux x86-64; в других случаях установите его самостоятельно). |
gallery-get URL [-o folder] [--limit N] [--adapter name] |
Загружает изображения из галереи (категории Wikimedia Commons, альбома Flickr и т. д.) в папку с её названием внутри -o; --limit принимает не более указанного количества, первые из списка сайта. При повторном запуске загружаются только новые. --adapter отправляет соединения gallery-dl через один сетевой адаптер, как для get. |
video-info URL |
Какое видео содержит страница (YouTube, Vimeo, ...), и доступные качества. |
playlist-info URL [--from N] [--count N] |
Видео из плейлиста или канала, по одному в строке, как они перечислены: их место, длительность, название и адрес. |
playlist-get URL [-f selector] [-o folder] [--from N] [--count N] |
Загружает видео из плейлиста или канала одно за другим в папку, названную по имени списка, внутри -o. -f — это одно качество для всех, как для video-get (по умолчанию лучшее качество каждого видео; bv*[height<=720]+ba/b[height<=720] = до 720p; ba = оригинальный звук; mp3:320, opus:, flac: как для video-get). |
video-get URL [-f selector] [-o folder] [--subs langs] [--auto-subs] [--embed-subs] [--adapter name] |
Загружает видео; -f принимает селектор качества из video-info (b = лучший отдельный файл; ba = только звук в том виде, в каком он есть на сайте, без конвертации; mp3:320, mp3:256, mp3:192 или mp3:128 = звук в формате MP3 с указанным битрейтом, mp3:0 с лучшим переменным битрейтом; opus: = в формате Opus; flac: = в формате FLAC, без потерь, но не лучше звука сайта; для конвертации нужен ffmpeg). --subs сохраняет субтитры рядом: коды языков из video-info (en,fr) или all для всех, предоставленных загрузчиком; --auto-subs вместо этого использует автоматические субтитры сайта; --embed-subs встраивает их в видео (требуется ffmpeg, MP4 или MKV). --adapter отправляет соединения yt-dlp (и ffmpeg) через один сетевой адаптер, как для get; если он не подключен, ничего не запускается. |
install-ytdlp, install-ffmpeg |
Install or update the helpers videos need: yt-dlp (checked against its signing key) and ffmpeg (Windows; on macOS and Linux GDM uses the system's). |
torrent-info SOURCE |
Имя торрента, файлы (пронумерованные) и размер; SOURCE — это magnet-ссылка или файл .torrent. |
torrent-get SOURCE [-o folder] [--files 0,2] [--use-existing] |
Загрузить торрент или только некоторые из его файлов. Если некоторые из его файлов уже находятся в папке, он останавливается и называет их; --use-existing вместо этого использует их (совпадающие файлы сохраняются, остальные загружаются). |
torrent-create PATH -o file.torrent |
Создать .torrent файла или папки (пиры находят его через DHT). |
status |
Загрузки запущенного приложения в формате JSON, с их идентификаторами (API автоматизации должен быть включен). |
pause ID..., start ID... |
Приостанавливает текущие загрузки или запускает (возобновляет) остановленные, поставленные в очередь или неудавшиеся загрузки в запущенном приложении. |
remove ID..., delete ID... |
Удаляет загрузки из списка запущенного приложения: remove сохраняет их файлы, delete также удаляет их. Запущенная загрузка сначала приостанавливается (pause). |
api on, api off |
Включает или выключает API автоматизации запущенного приложения. |
misterdownloadmanager-cli help <command>показывает все параметры. Команда, которая завершается неудачей (приложение не запущено, оно отвечает ошибкой, загрузка прерывается), завершается с кодом 1. Например:
misterdownloadmanager-cli get https://example.com/big.iso -o D:\Downloads -c 16 --checksum sha256:9f86d0…
misterdownloadmanager-cli video-get "https://www.youtube.com/watch?v=aqz-KE-bpKQ" -f "b[height=720]"
misterdownloadmanager-cli torrent-get "magnet:?xt=urn:btih:…" --files 0
JSON для скриптов и программ
С --json (до или после команды) каждая команда выводит JSON вместо текста, по одному объекту на строку, для чтения скриптами и ИИ-агентами:
| Команда | Выводит |
|---|---|
get, resume |
{"event": "through", "service"}сначала, когда загрузка идет через учетную запись дебрида, затем строка {"event": "progress", "downloaded", "size", "speed", "connections", "segments"} каждые полсекунды, затем {"event": "done", "path", "size", "seconds"}, или {"event": "paused", "state"} после Ctrl+C (state — это файл, который принимает resume). |
video-get |
{"event": "progress", "downloaded", "size", "speed"}строки, затем {"event": "done", "path", "subtitles", "subtitle_problems"}: файлы субтитров, сохраненные рядом, и языки, которые сайт отклонил ({"code", "name", "reason", "beside"}; beside: они были получены со второй попытки, рядом с видео вместо того, чтобы быть в нем). |
torrent-get |
{"event": "progress", "phase", "downloaded", "size", "speed", "peers", "peers_seen"}строки, затем {"event": "done", "path", "size"}, или {"event": "stopped", "downloaded", "seconds"} с --seconds. |
video-info |
{"title", "choices": [{"label", "format", "size"}], "subtitles": [{"code", "name", "automatic"}]}; format выбора — это то, что принимает video-get -f, code субтитров — это то, что принимает --subs. |
torrent-info |
{"name", "info_hash", "size", "files": [{"index", "size", "path"}]}. |
torrent-create |
{"info_hash", "path"}. |
install-ytdlp, install-ffmpeg |
{"tool", "version", "path"}. |
status, pause, start, remove, delete,api |
Ответ приложения, который уже является JSON (см. ниже). |
Размеры указаны в байтах (null, если неизвестно), скорости — в байтах в секунду. При сбое выводится {"error": "…"} и происходит выход с кодом 1. Например:
misterdownloadmanager-cli --json get https://example.com/big.iso -o D:\Downloads
{"event":"progress","downloaded":4194304,"size":1073741824,"speed":52428800,"connections":8,"segments":8}
…
{"event":"done","path":"D:\\Downloads\\big.iso","size":1073741824,"seconds":20.4}
API автоматизации
Другие программы могут запрашивать у запущенного приложения информацию о загрузках, а также приостанавливать, запускать, удалять или стирать загрузки. API по умолчанию отключен; включите его с помощью misterdownloadmanager-cli api on (и выключите с помощью api off).
How a program talks to GDM
- While it runs, GDM listens on a port of
127.0.0.1(this computer only) and writes the port and a secret token toipc.jsonin its data folder: - Windows:%APPDATA%\misterdownloadmanager\ipc.json- macOS:~/Library/Application Support/misterdownloadmanager/ipc.json- Linux:~/.local/share/misterdownloadmanager/ipc.json- A portable copy:data\ipc.jsonnext to the program.
The token changes at every start; only programs that can read your data folder (yours) can use it.
2. Connect to that port and send one line of JSON: the token and the command's fields, e.g. {"token": "<token>", "query": "list"}.
3. GDM answers with one line: ok for a command, or a JSON object for a question.
Что он понимает
Поля (кроме token) |
Ответ |
|---|---|
{"query": "list"} |
Каждая загрузка и общая скорость: {"downloads": [{"id", "file", "url", "path", "status", "size", "downloaded", "speed", "added", "category", "error"}], "speed": bytes per second, "queues": [{"name", "running", "ids"}], "categories": [{"key", "name"}], "free": bytes}. status — это Queued, Downloading, Stopped, Complete или Error; size — null, если неизвестно; error (почему не удалось) есть только для загрузки в Error; category — это key категории; free — свободное место, куда сохраняются загрузки (null, если неизвестно). Только при включенном API. |
{"action": "pause", "ids": [3, 4]} |
Действует на загрузки по id: "pause", "start", "remove" (файл сохранен) или "delete" (файл также удален). Отвечает {"done": [3], "skipped": [{"id": 4, "why": "not running"}]}; запущенная загрузка должна быть приостановлена, прежде чем ее можно будет удалить или стереть. Только при включенном API. |
{"action": "start_queue", "queue": "Main download queue"} |
Запускает (или с "stop_queue", останавливает) очередь с этим именем (имя из queues списка). Отвечает {"done": [], "skipped": []} или {"error": …, "code": "unknown-queue"}. Только при включенном API. |
{"api": true} / {"api": false} |
Включает или выключает API: {"api": true}. |
{"url": "https://…", "dir": "D:\\Files", "name": "a.zip", "silent": true} |
Добавляет загрузку, как это делает /d /p /f /n в командной строке ("later": true — это /a); ok. "category" (ключ из categories списка) помещает ее в папку этой категории вместо той, которую выбирает ее тип; "queue" (имя очереди) — это очередь, в которой она ждет с "later". Также при выключенном API, как и в командной строке. |
{"start_queue": true} |
Запускает основную очередь загрузок; ok. |
На неизвестный вопрос или действие дается ответ {"error": "…"}, как и на вопрос при выключенном API (тогда с "code": "api-off", для проверки программами: текст ошибки может измениться). На неверный токен дается ответ denied.
Каждый запрос и ответ описывается, поле за полем, в JSON Schema: automation-api.schema.json (также по адресу https://misterdownloadmanager.com/automation-api.schema.json). Он создается из кода, которым отвечает приложение, поэтому остается точным; программы могут проверять то, что они отправляют и читают, или генерировать свои типы из него.
Примеры
PowerShell (Windows):
$ep = Get-Content "$env:APPDATA\misterdownloadmanager\ipc.json" | ConvertFrom-Json
$client = New-Object Net.Sockets.TcpClient("127.0.0.1", $ep.port)
$stream = $client.GetStream()
$writer = New-Object IO.StreamWriter($stream); $reader = New-Object IO.StreamReader($stream)
$writer.WriteLine((@{ token = $ep.token; query = "list" } | ConvertTo-Json -Compress))
$writer.Flush()
$reader.ReadLine() | ConvertFrom-Json | Select-Object -ExpandProperty downloads | Format-Table file, status, downloaded, size
$client.Close()
Python:
import json, os, socket
ipc = os.path.join(os.environ["APPDATA"], "misterdownloadmanager", "ipc.json") # see above elsewhere
ep = json.load(open(ipc))
with socket.create_connection(("127.0.0.1", ep["port"])) as s:
s.sendall((json.dumps({"token": ep["token"], "query": "list"}) + "\n").encode())
answer = json.loads(s.makefile().readline())
for d in answer["downloads"]:
print(d["file"], d["status"], d["downloaded"], d["size"])
Чтобы вместо этого добавить загрузку, отправьте {"token": "…", "url": "https://example.com/a.zip", "silent": true}.
Бесплатно, с открытым исходным кодом, без рекламы, без пробного периода.
Download GolinksPRO Download Manager