Mister Download Manager
  1. Accueil
  2. Aide
  3. Ligne de commande et automatisation

Ligne de commande et automatisation

MDM peut être piloté sans sa fenêtre de trois manières :

  • La ligne de commande de l'application, les mêmes commutateurs que ceux d'IDM : confiez un téléchargement à l'application en cours d'exécution à partir d'un script, d'un fichier batch ou d'un autre programme.
  • misterdownloadmanager-cli, un outil de ligne de commande distinct : téléchargez des fichiers, des vidéos et des torrents dans un terminal, avec la progression, sans l'application.
  • L'API d'automatisation : d'autres programmes listent les téléchargements de l'application en cours (au format JSON) et les mettent en pause, les démarrent, les suppriment ou les effacent, via un canal local protégé par un jeton. Les assistants IA l'utilisent via le serveur MCP de MDM : voir Assistants IA.

Les exemples utilisent les chemins de Windows ; sur macOS et Linux, les programmes ont les mêmes noms sans .exe.

La ligne de commande de l'application

misterdownloadmanager.exe /d URL [/p folder] [/f name] [/a] [/n] [/s]
Commutateur Ce qu'il fait
/d URL L'adresse à télécharger.
/p folder Enregistrez-le dans ce dossier (sinon le dossier de la catégorie depuis Options → Enregistrer dans).
/f name Enregistrez-le sous ce nom.
/a Ajoutez-le à la file d'attente de téléchargement principale sans le démarrer.
/n Silencieux : pas de fenêtre Informations sur le fichier à télécharger, le téléchargement démarre (ou est mis en file d'attente, avec /a) immédiatement.
/s Démarrez la file d'attente de téléchargement principale.
/exit Enregistrez et fermez l'application en cours d'exécution (l'installateur l'utilise avant une mise à niveau).
un fichier .torrent ou un lien magnet: Ouvrez-le dans Ajouter un torrent (ce que Windows transmet lorsque MDM ouvre des torrents).

Les commutateurs peuvent commencer par / ou -, dans n'importe quel cas. Si MDM est en cours d'exécution, la commande lui est transmise ; sinon, MDM démarre et l'exécute. Par exemple :

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

Il est fourni avec chaque téléchargement de MDM, à côté de l'application (l'installateur le place dans le dossier de MDM). Il fonctionne seul : l'application n'a pas besoin de fonctionner, sauf pour status et api.

Commande Ce qu'il fait
get URL [-o folder\|file] [-c connections] [-H "Header: value"]... [--checksum hash] Télécharge un fichier avec jusqu’à 8 connexions (-c, de 1 à 128), en affichant la progression. Ctrl+C le met en pause ; resume le reprend. --checksum vérifie le fichier terminé : MD5 hex, SHA-1, SHA-256, SHA-512 ou CRC32, avec un nom facultatif (sha256:…).
resume file.mdm.json [-c connections] [-H ...] Reprenez un téléchargement mis en pause ou interrompu à partir du fichier .mdm.json à côté.
video-info URL Quelle vidéo une page contient (YouTube, Vimeo, ...), et les qualités à choisir.
video-get URL [-f selector] [-o folder] Téléchargez une vidéo ; -f prend le sélecteur d'une qualité de video-info (b = le meilleur fichier unique).
install-ytdlp, install-ffmpeg Installez ou mettez à jour les assistants nécessaires aux vidéos : yt-dlp (vérifié par rapport à sa clé de signature) et ffmpeg (Windows ; sur macOS et Linux, MDM utilise ceux du système).
torrent-info SOURCE Nom d'un torrent, fichiers (numérotés) et taille ; SOURCE est un lien magnet ou un fichier .torrent.
torrent-get SOURCE [-o folder] [--files 0,2] Téléchargez un torrent, ou seulement certains de ses fichiers.
torrent-create PATH -o file.torrent Créez un .torrent d'un fichier ou d'un dossier (les pairs le trouvent via le DHT).
status Les téléchargements de l'application en cours, au format JSON, avec leurs identifiants (l'API d'automatisation doit être activée).
pause ID..., start ID... Suspend les téléchargements en cours, ou lance (reprend) ceux qui sont arrêtés, en attente ou en échec, dans l'application en cours d'exécution.
remove ID..., delete ID... Retire les téléchargements de la liste de l'application en cours d'exécution : remove conserve leurs fichiers, delete les supprime aussi. Un téléchargement en cours est d'abord suspendu (pause).
api on, api off Active ou désactive l'API d'automatisation de l'application en cours d'exécution.

misterdownloadmanager-cli help <command>affiche toutes les options. Une commande qui échoue (l'application ne tourne pas, elle répond avec une erreur, un téléchargement s'interrompt) se termine avec le code 1. Par exemple :

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 pour les scripts et les programmes

Avec --json (avant ou après la commande), chaque commande affiche du JSON au lieu de texte, un objet par ligne, pour que les scripts et les agents d'IA puissent le lire :

Commande Affiche
get, resume Une ligne {"event": "progress", "downloaded", "size", "speed", "connections", "segments"} toutes les demi-secondes, puis {"event": "done", "path", "size", "seconds"}, ou {"event": "paused", "state"} après Ctrl+C (state est le fichier que resume prend).
video-get {"event": "progress", "downloaded", "size", "speed"}lignes, puis {"event": "done", "path"}.
torrent-get {"event": "progress", "phase", "downloaded", "size", "speed", "peers", "peers_seen"}lignes, puis {"event": "done", "path", "size"}, ou {"event": "stopped", "downloaded", "seconds"} avec --seconds.
video-info {"title", "choices": [{"label", "format", "size"}]}; le format d'un choix est ce que video-get -f prend.
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 réponse de l'application, qui est déjà du JSON (voir ci-dessous).

Les tailles sont en octets (null si inconnu), les vitesses en octets par seconde. Un échec affiche {"error": "…"} et se termine avec le code 1. Par exemple :

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 d'automatisation

D'autres programmes peuvent demander à l'application en cours ce qu'elle télécharge, et suspendre, démarrer, retirer ou supprimer des téléchargements. L'API est désactivée par défaut ; activez-la avec misterdownloadmanager-cli api on (et désactivez-la avec api off).

Comment un programme communique avec MDM

  1. Pendant son exécution, MDM écoute sur un port de 127.0.0.1 (cet ordinateur uniquement) et écrit le port et un jeton secret dans ipc.json dans son dossier de données : - Windows : %APPDATA%\misterdownloadmanager\ipc.json - macOS : ~/Library/Application Support/misterdownloadmanager/ipc.json - Linux : ~/.local/share/misterdownloadmanager/ipc.json - Une copie portable : data\ipc.json à côté du programme.

Le jeton change à chaque démarrage ; seuls les programmes qui peuvent lire votre dossier de données (le vôtre) peuvent l'utiliser. 2. Connectez-vous à ce port et envoyez une ligne de JSON : le jeton et les champs de la commande, par exemple {"token": "<token>", "query": "list"}. 3. MDM répond avec une ligne : ok pour une commande, ou un objet JSON pour une question.

Ce qu'il comprend

Champs (outre token) Réponse
{"query": "list"} Chaque téléchargement et la vitesse totale : {"downloads": [{"id", "file", "url", "path", "status", "size", "downloaded", "speed", "added", "error"}], "speed": bytes per second}. status est Queued, Downloading, Stopped, Complete ou Error ; size est null si inconnu ; error (pourquoi il a échoué) n'est présent que pour un téléchargement en Error. Uniquement lorsque l'API est activée.
{"action": "pause", "ids": [3, 4]} Agit sur les téléchargements par identifiant : "pause", "start", "remove" (fichier conservé) ou "delete" (fichier également supprimé). Répond {"done": [3], "skipped": [{"id": 4, "why": "not running"}]} ; un téléchargement en cours doit être suspendu avant d'être retiré ou supprimé. Uniquement lorsque l'API est activée.
{"api": true} / {"api": false} Active ou désactive l'API : {"api": true}.
{"url": "https://…", "dir": "D:\\Files", "name": "a.zip", "silent": true} Ajoute un téléchargement, comme le font les /d /p /f /n de la ligne de commande ("later": true est /a) ; ok. Également avec l'API désactivée, comme la ligne de commande.
{"start_queue": true} Démarre la file d'attente principale des téléchargements ; ok.

Une question ou une action inconnue reçoit la réponse {"error": "…"}, de même qu'une question lorsque l'API est désactivée (alors avec "code": "api-off", pour que les programmes puissent vérifier : le texte de l'erreur peut changer). Un jeton erroné reçoit la réponse denied.

Chaque requête et réponse est décrite, champ par champ, dans un schéma JSON : automation-api.schema.json (également à https://misterdownloadmanager.com/automation-api.schema.json). Il est généré à partir du code avec lequel l'application répond, il reste donc exact ; les programmes peuvent vérifier ce qu'ils envoient et lisent par rapport à lui, ou en générer leurs types.

Exemples

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"])

Pour ajouter un téléchargement, envoyez plutôt {"token": "…", "url": "https://example.com/a.zip", "silent": true}.

Gratuit, open source, sans publicité, sans essai.

Télécharger Mister Download Manager