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 – це магнітне посилання або файл .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"}спочатку, якщо завантаження відбувається через обліковий запис debrid-сервісу, потім рядок {"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]} |
Виконує дії із завантаженнями за ідентифікатором: "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