Mister Download Manager
  1. Home
  2. Help
  3. Opdrachtregel en automatisering

Opdrachtregel en automatisering

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 Print
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

  1. Terwijl het draait, luistert MDM op een poort van 127.0.0.1 (alleen deze computer) en schrijft de poort en een geheim token naar ipc.json in 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.json naast 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