MDM kan op drie manieren zonder venster worden aangestuurd:
- De eigen opdrachtregel van de app, dezelfde schakelaars als die van IDM: geef een download door aan de draaiende app vanuit een script, een batchbestand of een ander programma.
misterdownloadmanager-cli, een afzonderlijk opdrachtregelprogramma: download bestanden, video's en torrents in een terminal, met voortgang, zonder de app.- De automatiserings-API: andere programma's tonen de downloads van de draaiende app (als JSON) en pauzeren, starten, verwijderen of wissen ze, via een lokaal, met token beveiligd kanaal. AI-assistenten gebruiken het via de MCP-server van MDM: zie AI-assistenten.
De voorbeelden gebruiken Windows-paden; op macOS en Linux hebben de programma's dezelfde namen zonder .exe.
De opdrachtregel van de app
misterdownloadmanager.exe /d URL [/p folder] [/f name] [/a] [/n] [/s]
| Schakelaar | Wat het doet |
|---|---|
/d URL |
Het adres om te downloaden. |
/p folder |
Sla het op in deze map (anders de map van de categorie uit Opties → Opslaan in). |
/f name |
Sla het op onder deze naam. |
/a |
Voeg het toe aan de hoofddownloadwachtrij zonder het te starten. |
/n |
Stil: geen venster Bestandsinfo downloaden, de download start (of wordt in de wachtrij geplaatst, met /a) onmiddellijk. |
/s |
Start de hoofddownloadwachtrij. |
/exit |
Sla de draaiende app op en sluit deze (de installatie gebruikt dit voor een upgrade). |
een .torrent bestand of magnet: link |
Open het in Torrent toevoegen (wat Windows doorgeeft wanneer MDM torrents opent). |
Schakelaars kunnen beginnen met / of -, in elk geval. Als MDM draait, gaat de opdracht ernaartoe; zo niet, dan start MDM en voert het de opdracht uit. Bijvoorbeeld:
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
Het wordt geleverd bij elke download van MDM, naast de app (de installatie plaatst het in de map van MDM). Het werkt zelfstandig: de app hoeft niet te draaien, behalve voor status en api.
| Opdracht | Wat het doet |
|---|---|
get URL [-o folder\|file] [-c connections] [-H "Header: value"]... [--checksum hash] |
Download een bestand met maximaal 8 verbindingen (-c, 1 tot 128), met voortgangsweergave. Ctrl+C pauzeert; resume gaat verder. --checksum controleert het voltooide bestand: hex MD5, SHA-1, SHA-256, SHA-512 of CRC32, optioneel benoemd (sha256:…). |
resume file.mdm.json [-c connections] [-H ...] |
Hervat een gepauzeerde of onderbroken download vanuit het .mdm.json bestand ernaast. |
video-info URL |
Welke video een pagina bevat (YouTube, Vimeo, ...), en de te kiezen kwaliteiten. |
video-get URL [-f selector] [-o folder] |
Download een video; -f neemt de selector van een kwaliteit uit video-info (b = het beste enkele bestand). |
install-ytdlp, install-ffmpeg |
Installeer of update de helpers die video's nodig hebben: yt-dlp (gecontroleerd tegen de ondertekeningssleutel) en ffmpeg (Windows; op macOS en Linux gebruikt MDM die van het systeem). |
torrent-info SOURCE |
De naam, bestanden (genummerd) en grootte van een torrent; SOURCE is een magneetlink of een .torrent bestand. |
torrent-get SOURCE [-o folder] [--files 0,2] |
Download een torrent, of slechts enkele van de bestanden. |
torrent-create PATH -o file.torrent |
Maak een .torrent van een bestand of map (peers vinden het via de DHT). |
status |
De downloads van de draaiende app, als JSON, met hun ID's (de automatiserings-API moet zijn ingeschakeld). |
pause ID..., start ID... |
Pauzeer actieve downloads, of start (hervat) gestopte, in de wachtrij geplaatste of mislukte downloads in de actieve app. |
remove ID..., delete ID... |
Verwijder downloads uit de lijst van de actieve app: remove behoudt de bestanden, delete verwijdert ze ook. Een actieve download wordt eerst gepauzeerd (pause). |
api on, api off |
Schakel de automatiserings-API van de actieve app in of uit. |
misterdownloadmanager-cli help <command>toont elke optie. Een commando dat mislukt (de app draait niet, antwoordt met een fout, een download stopt) sluit af met code 1. Bijvoorbeeld:
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 voor scripts en programma's
Met --json (voor of na het commando) print elk commando JSON in plaats van tekst, één object per regel, zodat scripts en AI-agents het kunnen lezen:
| Opdracht | |
|---|---|
get, resume |
Een {"event": "progress", "downloaded", "size", "speed", "connections", "segments"} regel elke halve seconde, dan {"event": "done", "path", "size", "seconds"}, of {"event": "paused", "state"} na Ctrl+C (state is het bestand dat resume gebruikt). |
video-get |
{"event": "progress", "downloaded", "size", "speed"}regels, dan {"event": "done", "path"}. |
torrent-get |
{"event": "progress", "phase", "downloaded", "size", "speed", "peers", "peers_seen"}regels, dan {"event": "done", "path", "size"}, of {"event": "stopped", "downloaded", "seconds"} met --seconds. |
video-info |
{"title", "choices": [{"label", "format", "size"}]}; de format van een keuze is wat video-get -f gebruikt. |
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 |
Het antwoord van de app, dat al JSON is (zie hieronder). |
Groottes zijn in bytes (null terwijl onbekend), snelheden in bytes per seconde. Een mislukking print {"error": "…"} en sluit af met code 1. Bijvoorbeeld:
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}
De automatiserings-API
Andere programma's kunnen de actieve app vragen wat deze downloadt, en downloads pauzeren, starten, verwijderen of wissen. De API is standaard uitgeschakeld; schakel deze in met misterdownloadmanager-cli api on (en uit met api off).
Hoe een programma met MDM praat
- Terwijl het draait, luistert MDM op een poort van
127.0.0.1(alleen deze computer) en schrijft de poort en een geheim token naaripc.jsonin de datafolder: - Windows:%APPDATA%\misterdownloadmanager\ipc.json- macOS:~/Library/Application Support/misterdownloadmanager/ipc.json- Linux:~/.local/share/misterdownloadmanager/ipc.json- Een draagbare kopie:data\ipc.jsonnaast het programma.
Het token verandert bij elke start; alleen programma's die uw datafolder kunnen lezen (die van u) kunnen het gebruiken. 2. Maak verbinding met die poort en stuur één regel JSON: het token en de velden van het commando, bijv. {"token": "<token>", "query": "list"}. 3. MDM antwoordt met één regel: ok voor een commando, of een JSON-object voor een vraag.
Wat het begrijpt
Velden (naast token) |
Antwoord |
|---|---|
{"query": "list"} |
Elke download en de totale snelheid: {"downloads": [{"id", "file", "url", "path", "status", "size", "downloaded", "speed", "added", "error"}], "speed": bytes per second}. status is Queued, Downloading, Stopped, Complete of Error; size is null terwijl onbekend; error (waarom het mislukte) is er alleen voor een download in Error. Alleen terwijl de API aan staat. |
{"action": "pause", "ids": [3, 4]} |
Handelt op downloads per ID: "pause", "start", "remove" (bestand behouden) of "delete" (bestand ook verwijderd). Antwoordt {"done": [3], "skipped": [{"id": 4, "why": "not running"}]}; een actieve download moet gepauzeerd worden voordat deze wordt verwijderd of gewist. Alleen terwijl de API aan staat. |
{"api": true} / {"api": false} |
Schakelt de API in of uit: {"api": true}. |
{"url": "https://…", "dir": "D:\\Files", "name": "a.zip", "silent": true} |
Voegt een download toe, zoals de /d /p /f /n van de commandoregel doen ("later": true is /a); ok. Ook met de API uitgeschakeld, net als de commandoregel. |
{"start_queue": true} |
Start de hoofddownloadwachtrij; ok. |
Een onbekende vraag of actie wordt beantwoord met {"error": "…"}, evenals een vraag terwijl de API uitgeschakeld is (dan met "code": "api-off", zodat programma's dit kunnen controleren: de fouttekst kan veranderen). Een verkeerd token wordt beantwoord met denied.
Elke aanvraag en elk antwoord wordt veld voor veld beschreven in een JSON Schema: automation-api.schema.json (ook op https://misterdownloadmanager.com/automation-api.schema.json). Het is gemaakt van de code waarmee de app antwoordt, dus het blijft exact; programma's kunnen controleren wat ze verzenden en lezen, of hun typen ervan genereren.
Voorbeelden
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"])
Om in plaats daarvan een download toe te voegen, stuurt u {"token": "…", "url": "https://example.com/a.zip", "silent": true}.
Gratis, open source, geen advertenties, geen proefversie.
Mister Download Manager downloaden