MDM può essere gestito senza la sua finestra in tre modi:
- La riga di comando dell'app, gli stessi switch di IDM: passa un download all'app in esecuzione da uno script, un file batch o un altro programma.
misterdownloadmanager-cli, uno strumento a riga di comando separato: scarica file, video e torrent in un terminale, con avanzamento, senza l'app.- L'API di automazione: altri programmi elencano i download dell'app in esecuzione (come JSON) e li mettono in pausa, avviano, rimuovono o eliminano, tramite un canale locale protetto da token. Gli assistenti AI lo usano tramite il server MCP di MDM: vedi Assistenti AI.
Gli esempi usano i percorsi di Windows; su macOS e Linux i programmi hanno gli stessi nomi senza .exe.
La riga di comando dell'app
misterdownloadmanager.exe /d URL [/p folder] [/f name] [/a] [/n] [/s]
| Switch | Cosa fa |
|---|---|
/d URL |
L'indirizzo da scaricare. |
/p folder |
Salvalo in questa cartella (altrimenti la cartella della categoria da Opzioni → Salva in). |
/f name |
Salvalo con questo nome. |
/a |
Aggiungilo alla coda di download principale senza avviarlo. |
/n |
Silenzioso: nessuna finestra Informazioni file download, il download inizia (o viene messo in coda, con /a) immediatamente. |
/s |
Avvia la coda di download principale. |
/exit |
Salva e chiudi l'app in esecuzione (l'installer lo usa prima di un aggiornamento). |
un file .torrent o un link magnet: |
Aprilo in Aggiungi torrent (ciò che Windows passa quando MDM apre i torrent). |
Gli switch possono iniziare con / o -, in qualsiasi caso. Se MDM è in esecuzione, il comando va ad esso; se no, MDM si avvia e lo esegue. Per esempio:
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
Viene fornito con ogni download di MDM, accanto all'app (l'installer lo mette nella cartella di MDM). Funziona da solo: l'app non deve essere in esecuzione, eccetto per status e api.
| Comando | Cosa fa |
|---|---|
get URL [-o folder\|file] [-c connections] [-H "Header: value"]... [--checksum hash] |
Scarica un file con un massimo di 8 connessioni (-c, da 1 a 128), mostrando l'avanzamento. Ctrl+C lo mette in pausa; resume continua. --checksum controlla il file completato: MD5 esadecimale, SHA-1, SHA-256, SHA-512 o CRC32, opzionalmente nominato (sha256:…). |
resume file.mdm.json [-c connections] [-H ...] |
Continua un download in pausa o interrotto dal file .mdm.json accanto ad esso. |
video-info URL |
Quale video contiene una pagina (YouTube, Vimeo, ...), e le qualità tra cui scegliere. |
video-get URL [-f selector] [-o folder] |
Scarica un video; -f prende il selettore di una qualità da video-info (b = il miglior singolo file). |
install-ytdlp, install-ffmpeg |
Installa o aggiorna gli helper necessari ai video: yt-dlp (controllato rispetto alla sua chiave di firma) e ffmpeg (Windows; su macOS e Linux MDM usa quelli di sistema). |
torrent-info SOURCE |
Nome, file (numerati) e dimensione di un torrent; SOURCE è un link magnet o un file .torrent. |
torrent-get SOURCE [-o folder] [--files 0,2] |
Scarica un torrent, o solo alcuni dei suoi file. |
torrent-create PATH -o file.torrent |
Crea un .torrent di un file o una cartella (i peer lo trovano tramite la DHT). |
status |
I download dell'app in esecuzione, come JSON, con i loro ID (l'API di automazione deve essere attiva). |
pause ID..., start ID... |
Sospende i download in corso, o avvia (riprende) quelli fermi, in coda o falliti, nell'app in esecuzione. |
remove ID..., delete ID... |
Rimuove i download dall'elenco dell'app in esecuzione: remove mantiene i loro file, delete li elimina. Un download in corso viene prima sospeso (pause). |
api on, api off |
Attiva o disattiva l'API di automazione dell'app in esecuzione. |
misterdownloadmanager-cli help <command>mostra tutte le opzioni. Un comando che fallisce (l'app non è in esecuzione, risponde con un errore, un download si interrompe) esce con codice 1. Per esempio:
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 per script e programmi
Con --json (prima o dopo il comando), ogni comando stampa JSON invece di testo, un oggetto per riga, affinché script e agenti AI possano leggerlo:
| Comando | Stampa |
|---|---|
get, resume |
Una riga {"event": "progress", "downloaded", "size", "speed", "connections", "segments"} ogni mezzo secondo, poi {"event": "done", "path", "size", "seconds"}, o {"event": "paused", "state"} dopo Ctrl+C (state è il file che resume prende). |
video-get |
{"event": "progress", "downloaded", "size", "speed"}righe, poi {"event": "done", "path"}. |
torrent-get |
{"event": "progress", "phase", "downloaded", "size", "speed", "peers", "peers_seen"}righe, poi {"event": "done", "path", "size"}, o {"event": "stopped", "downloaded", "seconds"} con --seconds. |
video-info |
{"title", "choices": [{"label", "format", "size"}]}; il format di una scelta è ciò che video-get -f prende. |
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 |
La risposta dell'app, che è già JSON (vedi sotto). |
Le dimensioni sono in byte (null se sconosciute), le velocità in byte al secondo. Un errore stampa {"error": "…"} ed esce con codice 1. Per esempio:
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}
L'API di automazione
Altri programmi possono chiedere all'app in esecuzione cosa sta scaricando, e sospendere, avviare, rimuovere o eliminare i download. L'API è disattivata per impostazione predefinita; attivala con misterdownloadmanager-cli api on (e disattivala con api off).
Come un programma comunica con MDM
- Mentre è in esecuzione, MDM ascolta su una porta di
127.0.0.1(solo questo computer) e scrive la porta e un token segreto inipc.jsonnella sua cartella dati: - Windows:%APPDATA%\misterdownloadmanager\ipc.json- macOS:~/Library/Application Support/misterdownloadmanager/ipc.json- Linux:~/.local/share/misterdownloadmanager/ipc.json- Una copia portatile:data\ipc.jsonaccanto al programma.
Il token cambia ad ogni avvio; solo i programmi che possono leggere la tua cartella dati (la tua) possono usarlo. 2. Connettiti a quella porta e invia una riga JSON: il token e i campi del comando, ad es. {"token": "<token>", "query": "list"}. 3. MDM risponde con una riga: ok per un comando, o un oggetto JSON per una domanda.
Cosa capisce
Campi (oltre a token) |
Risposta |
|---|---|
{"query": "list"} |
Ogni download e la velocità totale: {"downloads": [{"id", "file", "url", "path", "status", "size", "downloaded", "speed", "added", "error"}], "speed": bytes per second}. status è Queued, Downloading, Stopped, Complete o Error; size è null se sconosciuto; error (perché è fallito) è presente solo per un download in Error. Solo quando l'API è attiva. |
{"action": "pause", "ids": [3, 4]} |
Agisce sui download per ID: "pause", "start", "remove" (file mantenuto) o "delete" (file eliminato). Risponde {"done": [3], "skipped": [{"id": 4, "why": "not running"}]}; un download in corso deve essere sospeso prima di essere rimosso o eliminato. Solo quando l'API è attiva. |
{"api": true} / {"api": false} |
Attiva o disattiva l'API: {"api": true}. |
{"url": "https://…", "dir": "D:\\Files", "name": "a.zip", "silent": true} |
Aggiunge un download, come fanno /d /p /f /n della riga di comando ("later": true è /a); ok. Anche con l'API disattivata, come la riga di comando. |
{"start_queue": true} |
Avvia la coda principale dei download; ok. |
Una domanda o azione sconosciuta riceve risposta {"error": "…"}, così come una domanda mentre l'API è disattivata (allora con "code": "api-off", affinché i programmi possano controllare: il testo dell'errore potrebbe cambiare). Un token errato riceve risposta denied.
Ogni richiesta e risposta è descritta, campo per campo, in uno schema JSON: automation-api.schema.json (anche su https://misterdownloadmanager.com/automation-api.schema.json). È creato dal codice con cui l'app risponde, quindi rimane esatto; i programmi possono controllare ciò che inviano e leggono rispetto ad esso, o generare i loro tipi da esso.
Esempi
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"])
Per aggiungere un download, inviare {"token": "…", "url": "https://example.com/a.zip", "silent": true}.
Gratuito, open source, senza pubblicità, senza versioni di prova.
Scarica Mister Download Manager