GDM can be driven without its window in three ways:
- Wiersz poleceń aplikacji, te same przełączniki co w IDM: przekazanie pobierania do uruchomionej aplikacji ze skryptu, pliku wsadowego lub innego programu.
misterdownloadmanager-cli, oddzielne narzędzie wiersza poleceń: pobieranie plików, filmów i torrentów w terminalu, z postępem, bez aplikacji.- 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.
Przykłady używają ścieżek Windows; w systemach macOS i Linux programy mają te same nazwy bez .exe.
Wiersz poleceń aplikacji
misterdownloadmanager.exe /d URL [/p folder] [/f name] [/a] [/n] [/s]
| Przełącznik | Działanie |
|---|---|
/d URL |
Adres do pobrania. |
/p folder |
Zapisz w tym folderze (w przeciwnym razie w folderze kategorii z Opcje → Zapisz w). |
/f name |
Zapisz pod tą nazwą. |
/a |
Dodaj do głównej kolejki pobierania bez uruchamiania. |
/n |
Cichy: brak okna Informacje o pliku do pobrania, pobieranie rozpoczyna się (lub jest kolejkowane, z /a) natychmiast. |
/s |
Uruchom główną kolejkę pobierania. |
/exit |
Zapisz i zamknij uruchomioną aplikację (instalator używa tego przed aktualizacją). |
/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. |
plik .torrent lub link 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.
| Polecenie | Działanie |
|---|---|
get URL [-o folder\|file] [-c connections] [-H "Header: value"]... [--checksum hash] [--dns choice] [--adapter name] |
Pobiera plik, używając do 8 połączeń (-c, od 1 do 128), pokazując postęp. Ctrl+C wstrzymuje pobieranie; resume wznawia. --checksum sprawdza ukończony plik: hex MD5, SHA-1, SHA-256, SHA-512 lub CRC32, opcjonalnie nazwany (sha256:…). --dns wybiera DNS: system (domyślny); usługę i sposób zapytania, cloudflare-https, quad9-tls, google-plain, adguard-https, nextdns-tls; adresy serwerów DNS, 9.9.9.9,149.112.112.112; lub adres DNS-over-HTTPS. Nigdy nie wraca do systemowego DNS. --adapter wysyła każde połączenie przez jeden adapter sieciowy, po jego nazwie (Ethernet, wg0) lub jednym z jego adresów; gdy nie jest podłączony, nic nie jest wysyłane, a pobieranie kończy się niepowodzeniem. Link z hosta plików, który obsługuje jedno z twoich kont debrid (Opcje → Konta), przechodzi przez to konto, tak jak w aplikacji, a get mówi through Real-Debrid; --direct pobiera sam adres (Konta usług debrid). |
resume file.mdm.json [-c connections] [-H ...] [--direct] |
Wznawia wstrzymane lub przerwane pobieranie z pliku .mdm.json obok. Przez konto debrid, tak jak get: usługa podaje nowy link, gdy stary wygasł; --direct kontynuuje z samego adresu. |
install-gallery-dl |
Instaluje lub aktualizuje gallery-dl dla galerii obrazów: lista sum kontrolnych jest sprawdzana z kluczem podpisu autora, a program z tą listą (Windows i Linux x86-64; w innych systemach zainstaluj samodzielnie). |
gallery-get URL [-o folder] [--limit N] [--adapter name] |
Pobierz zdjęcia z galerii (kategorii Wikimedia Commons, albumu Flickr itp.) do folderu nazwanego tak jak ona w -o; --limit pobiera co najwyżej tyle, ile strona wyświetla jako pierwsze. Ponownie uruchomiony, pobiera tylko nowe. --adapter wysyła połączenia gallery-dl przez jeden adapter sieciowy, tak jak dla get. |
video-info URL |
Jakie wideo zawiera strona (YouTube, Vimeo, ...), i dostępne jakości do wyboru. |
playlist-info URL [--from N] [--count N] |
Filmy z playlisty lub kanału, każdy w osobnym wierszu, w kolejności, w jakiej są wymienione: pozycja, długość, tytuł i adres. |
playlist-get URL [-f selector] [-o folder] [--from N] [--count N] |
Pobieranie filmów z playlisty lub kanału jeden po drugim, do folderu nazwanego tak jak lista w -o. -f to jedna jakość dla wszystkich, tak jak dla video-get (domyślnie najlepsza dla każdego filmu; bv*[height<=720]+ba/b[height<=720] = do 720p; ba = oryginalny dźwięk; mp3:320, opus:, flac: tak jak dla video-get). |
video-get URL [-f selector] [-o folder] [--subs langs] [--auto-subs] [--embed-subs] [--adapter name] |
Pobierz wideo; -f przyjmuje selektor jakości z video-info (b = najlepszy pojedynczy plik; ba = sam dźwięk w oryginalnej postaci, bez konwersji; mp3:320, mp3:256, mp3:192 lub mp3:128 = dźwięk jako MP3 o tej przepływności, mp3:0 o najlepszej zmiennej; opus: = jako Opus; flac: = jako FLAC, bezstratny, ale nie lepszy niż dźwięk ze strony; konwersje wymagają ffmpeg). --subs zapisuje napisy obok: kody języków z video-info (en,fr), lub all dla każdego, który podał przesyłający; --auto-subs zamiast tego pobiera automatyczne napisy ze strony; --embed-subs umieszcza je w wideo (wymaga ffmpeg, MP4 lub MKV). --adapter wysyła połączenia yt-dlp (i ffmpeg) przez jeden adapter sieciowy, tak jak dla get; gdy nie jest podłączony, nic się nie uruchamia. |
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 |
Nazwa torrenta, pliki (numerowane) i rozmiar; SOURCE to link magnet lub plik .torrent. |
torrent-get SOURCE [-o folder] [--files 0,2] [--use-existing] |
Pobiera torrent lub tylko niektóre z jego plików. Jeśli część plików znajduje się już w folderze, pobieranie zostaje zatrzymane, a nazwy tych plików są wyświetlane; --use-existing używa ich zamiast pobierać je ponownie (pasujące pliki zostają zachowane, a pozostałe są pobierane). |
torrent-create PATH -o file.torrent |
Utwórz .torrent pliku lub folderu (użytkownicy znajdują go przez DHT). |
status |
Pobrania w działającej aplikacji w formacie JSON wraz z ich identyfikatorami (API automatyzacji musi być włączone). |
pause ID..., start ID... |
Wstrzymuje aktywne pobierania lub uruchamia (wznawia) zatrzymane, oczekujące lub nieudane pobierania w działającej aplikacji. |
remove ID..., delete ID... |
Usuwa pobieranie z listy aktywnej aplikacji: remove zachowuje pliki, delete usuwa je również. Aktywne pobieranie jest najpierw wstrzymywane (pause). |
api on, api off |
Włącza lub wyłącza API automatyzacji w działającej aplikacji. |
misterdownloadmanager-cli help <command>pokazuje wszystkie opcje. Jeśli polecenie zakończy się niepowodzeniem (aplikacja nie działa, odpowiada błędem lub pobieranie zostaje przerwane), program kończy działanie z kodem 1. Na przykład:
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 dla skryptów i programów
Po dodaniu --json (przed poleceniem lub po nim) każde polecenie wyświetla JSON zamiast tekstu, po jednym obiekcie w wierszu, do odczytu przez skrypty i agentów AI:
| Polecenie | Zawartość |
|---|---|
get, resume |
{"event": "through", "service"}najpierw, gdy pobieranie odbywa się przez konto debrid, następnie linia {"event": "progress", "downloaded", "size", "speed", "connections", "segments"} co pół sekundy, potem {"event": "done", "path", "size", "seconds"}, lub {"event": "paused", "state"} po Ctrl+C (state to plik, który resume pobiera). |
video-get |
{"event": "progress", "downloaded", "size", "speed"}wiersze, a następnie {"event": "done", "path", "subtitles", "subtitle_problems"}: pliki napisów zapisane obok oraz języki, których strona nie udostępniła ({"code", "name", "reason", "beside"}; beside: napisy pobrano przy drugiej próbie i zapisano obok filmu, a nie w nim). |
torrent-get |
{"event": "progress", "phase", "downloaded", "size", "speed", "peers", "peers_seen"}wiersze, a następnie {"event": "done", "path", "size"} lub {"event": "stopped", "downloaded", "seconds"} z --seconds. |
video-info |
{"title", "choices": [{"label", "format", "size"}], "subtitles": [{"code", "name", "automatic"}]}; format wybranej opcji to wartość przyjmowana przez video-get -f, a code napisów — wartość przyjmowana przez --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 |
Odpowiedź aplikacji, która jest już w formacie JSON (patrz poniżej). |
Rozmiary są podawane w bajtach (null, gdy nie są znane), a prędkości w bajtach na sekundę. W razie błędu wyświetlane jest {"error": "…"}, a program kończy działanie z kodem 1. Na przykład:
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 automatyzacji
Inne programy mogą sprawdzać, co pobiera działająca aplikacja, a także wstrzymywać, uruchamiać, usuwać pobrania z listy lub kasować pobrane pliki. API jest domyślnie wyłączone; włącz je za pomocą misterdownloadmanager-cli api on (wyłącz za pomocą 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.
Obsługiwane polecenia
Pola (oprócz token) |
Odpowiedź |
|---|---|
{"query": "list"} |
Każde pobieranie i całkowita prędkość: {"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 to Queued, Downloading, Stopped, Complete lub Error; size to null, gdy nieznane; error (dlaczego się nie powiodło) jest dostępne tylko dla pobierania w Error; category to key kategorii; free to wolne miejsce, gdzie trafiają pobrane pliki (null, gdy nieznane). Tylko gdy API jest włączone. |
{"action": "pause", "ids": [3, 4]} |
Wykonuje działania na pobraniach na podstawie ich identyfikatorów: "pause", "start", "remove" (plik zostaje zachowany) lub "delete" (plik również zostaje usunięty). Zwraca {"done": [3], "skipped": [{"id": 4, "why": "not running"}]}; przed usunięciem pobrania z listy lub skasowaniem pliku należy wstrzymać aktywne pobieranie. Dostępne tylko wtedy, gdy API jest włączone. |
{"action": "start_queue", "queue": "Main download queue"} |
Uruchamia (lub z "stop_queue", zatrzymuje) kolejkę o tej nazwie (nazwa z queues listy). Odpowiada {"done": [], "skipped": []} lub {"error": …, "code": "unknown-queue"}. Tylko gdy API jest włączone. |
{"api": true} / {"api": false} |
Włącza lub wyłącza API: {"api": true}. |
{"url": "https://…", "dir": "D:\\Files", "name": "a.zip", "silent": true} |
Dodaje pobieranie, tak jak /d /p /f /n w wierszu poleceń ("later": true to /a); ok. "category" (klucz z categories listy) umieszcza go w folderze tej kategorii zamiast w folderze wybranym przez jego typ; "queue" (nazwa kolejki) to kolejka, w której czeka z "later". Również przy wyłączonym API, tak jak w wierszu poleceń. |
{"start_queue": true} |
Uruchamia główną kolejkę pobierania; ok. |
Na nieznane pytanie lub działanie zwracana jest odpowiedź {"error": "…"}. Tak samo dzieje się w przypadku pytania, gdy API jest wyłączone (wtedy zwracana jest odpowiedź "code": "api-off", którą programy mogą sprawdzać; tekst błędu może się zmienić). Na nieprawidłowy token zwracana jest odpowiedź denied.
Każde żądanie i odpowiedź są opisane, pole po polu, w schemacie JSON: automation-api.schema.json (również pod https://misterdownloadmanager.com/automation-api.schema.json). Jest on tworzony z kodu, którym odpowiada aplikacja, więc pozostaje dokładny; programy mogą sprawdzać, co wysyłają i odczytują, lub generować z niego swoje typy.
Przykłady
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"])
Aby zamiast tego dodać pobieranie, wyślij {"token": "…", "url": "https://example.com/a.zip", "silent": true}.
Darmowy, open source, bez reklam, bez wersji próbnej.
Download GolinksPRO Download Manager