GDM can be driven without its window in three ways:
- La ligne de commande de l’application, avec les mêmes options qu’IDM : transmettre un téléchargement à l’application en cours d’exécution depuis un script, un fichier de commandes ou un autre programme.
misterdownloadmanager-cli, un outil de ligne de commande indépendant : télécharger des fichiers, des vidéos et des torrents dans un terminal, avec une barre de progression, sans l’application.- 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.
Les exemples utilisent des chemins Windows ; sur macOS et Linux, les programmes portent les mêmes noms, sans .exe.
La ligne de commande de l'application
misterdownloadmanager.exe /d URL [/p folder] [/f name] [/a] [/n] [/s]
| Option | Fonction |
|---|---|
/d URL |
L'adresse à télécharger. |
/p folder |
Enregistrer dans ce dossier (sinon, dans le dossier de la catégorie défini dans 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 |
Mode silencieux : ne pas afficher la fenêtre Informations sur le fichier à télécharger et démarrer immédiatement le téléchargement (ou le mettre en file d’attente avec /a). |
/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). |
/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. |
un fichier .torrent ou un lien 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.
| Commande | Fonction |
|---|---|
get URL [-o folder\|file] [-c connections] [-H "Header: value"]... [--checksum hash] [--dns choice] [--adapter name] |
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 hexadécimal, SHA-1, SHA-256, SHA-512 ou CRC32, avec un nom facultatif (sha256:…). --dns choisit le DNS : system (par défaut) ; un service et comment le demander, cloudflare-https, quad9-tls, google-plain, adguard-https, nextdns-tls ; les adresses des serveurs DNS, 9.9.9.9,149.112.112.112 ; ou une adresse DNS-over-HTTPS. Il ne revient jamais au DNS du système. --adapter envoie chaque connexion via une carte réseau, par son nom (Ethernet, wg0) ou l’une de ses adresses ; si elle n’est pas connectée, rien n’est envoyé et le téléchargement échoue. Un lien d’un hébergeur de fichiers que l’un de vos comptes de débridage (Options → Comptes) prend en charge passe par ce compte, comme dans l’application, et get dit through Real-Debrid ; --direct télécharge l’adresse elle-même (Comptes de service de débridage). |
resume file.mdm.json [-c connections] [-H ...] [--direct] |
Reprendre un téléchargement mis en pause ou interrompu à partir du fichier .mdm.json qui se trouve à côté. Avec un compte de débridage, comme pour get, le service fournit un nouveau lien si l’ancien a expiré ; --direct reprend à partir de l’adresse elle-même. |
install-gallery-dl |
Installer ou mettre à jour gallery-dl, pour télécharger des galeries d’images : la liste des sommes de contrôle est vérifiée à l’aide de la clé de signature de son auteur, puis le programme est vérifié à l’aide de cette liste (Windows et Linux x86-64 ; sur les autres systèmes, l’installer vous-même). |
gallery-get URL [-o folder] [--limit N] [--adapter name] |
Télécharger les images d’une galerie (une catégorie Wikimedia Commons, un album Flickr, ...) dans un dossier portant son nom, dans -o ; --limit en télécharge au maximum ce nombre, en commençant par celles que le site liste en premier. Lors d’une nouvelle exécution, seules les nouvelles images sont récupérées. --adapter fait passer les connexions de gallery-dl par une seule carte réseau, comme pour get. |
video-info URL |
Vidéo présente sur une page (YouTube, Vimeo, ...) et qualités disponibles. |
playlist-info URL [--from N] [--count N] |
Vidéos d’une liste de lecture ou d’une chaîne, une par ligne et dans l’ordre indiqué : position, durée, titre et adresse. |
playlist-get URL [-f selector] [-o folder] [--from N] [--count N] |
Télécharger les vidéos d’une liste de lecture ou d’une chaîne les unes après les autres, dans un dossier portant le nom de la liste, dans -o. -f définit une seule qualité pour toutes les vidéos, comme pour video-get (par défaut, la meilleure qualité de chaque vidéo ; bv*[height<=720]+ba/b[height<=720] = jusqu’à 720p ; ba = son original ; mp3:320, opus:, flac: comme pour video-get). |
video-get URL [-f selector] [-o folder] [--subs langs] [--auto-subs] [--embed-subs] [--adapter name] |
Télécharger une vidéo ; -f prend un sélecteur de qualité dans video-info (b = meilleur fichier unique ; ba = son seul, tel que fourni par le site, sans conversion ; mp3:320, mp3:256, mp3:192 ou mp3:128 = son au format MP3 à ce débit ; mp3:0 = débit variable optimal ; opus: = au format Opus ; flac: = au format FLAC, sans perte, mais sans meilleure qualité que le son du site ; les conversions nécessitent ffmpeg). --subs enregistre les sous-titres à côté de la vidéo : codes de langue de video-info (en,fr), ou all pour tous les sous-titres fournis par la personne qui a mis la vidéo en ligne ; --auto-subs utilise plutôt les sous-titres automatiques du site ; --embed-subs les intègre à la vidéo (nécessite ffmpeg, MP4 ou MKV). --adapter fait passer les connexions de yt-dlp (et de ffmpeg) par une seule carte réseau, comme pour get ; si elle n’est pas connectée, rien ne démarre. |
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 |
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] [--use-existing] |
Télécharge un torrent, ou seulement certains de ses fichiers. Si certains de ses fichiers sont déjà dans le dossier, la commande s’arrête et les indique ; --use-existing les utilise à la place (les fichiers correspondants sont conservés, les autres sont téléchargés). |
torrent-create PATH -o file.torrent |
Créez un .torrent à partir 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 n’est pas en cours d’exécution, elle renvoie une erreur ou un téléchargement échoue) 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 |
{"event": "through", "service"}d’abord lorsque le téléchargement passe par un compte de débridage, puis 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 utilisé par resume). |
video-get |
{"event": "progress", "downloaded", "size", "speed"}lignes, puis {"event": "done", "path", "subtitles", "subtitle_problems"} : les fichiers de sous-titres enregistrés à côté, et les langues que le site a refusées ({"code", "name", "reason", "beside"} ; beside : les sous-titres ont été récupérés à la deuxième tentative, à côté de la vidéo au lieu d’y être intégrés). |
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"}], "subtitles": [{"code", "name", "automatic"}]}; le format d’un choix est ce qu’utilise video-get -f, le code d’un sous-titre, ce qu’utilise --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 |
La réponse de l’application, qui est déjà au format JSON (voir ci-dessous). |
Les tailles sont en octets (null si la taille est inconnue), les vitesses en octets par seconde. En cas d’échec, {"error": "…"} est affiché et la commande 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 d’exécution 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).
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.
Ce qu'il comprend
Champs (sauf token) |
Réponse |
|---|---|
{"query": "list"} |
Chaque téléchargement et la vitesse totale : {"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 est Queued, Downloading, Stopped, Complete ou Error ; size est null quand inconnu ; error (la raison de l'échec) n'est là que pour un téléchargement en Error ; category est le key d'une catégorie ; free est l'espace libre où vont les téléchargements (null quand inconnu). Uniquement quand 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. |
{"action": "start_queue", "queue": "Main download queue"} |
Démarre (ou avec "stop_queue", arrête) la file d'attente de ce nom (un nom tiré de la queues de la liste). Répond {"done": [], "skipped": []}, ou {"error": …, "code": "unknown-queue"}. Uniquement quand 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 fait /d /p /f /n en ligne de commande ("later": true est /a) ; ok. "category" (une clé de la categories de la liste) le place dans le dossier de cette catégorie au lieu de celui choisi par son type ; "queue" (le nom d'une file d'attente) est la file d'attente dans laquelle il attend avec "later". Fonctionne aussi 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": "…"}, tout comme une question lorsque l’API est désactivée (la réponse contient alors "code": "api-off", pour que les programmes puissent vérifier : le texte de l’erreur peut changer). Un jeton incorrect reçoit la réponse denied.
Chaque requête et chaque réponse sont décrites, champ par champ, dans un schéma JSON : automation-api.schema.json (également à https://misterdownloadmanager.com/automation-api.schema.json). Ce schéma est généré à partir du code auquel l’application répond ; il est donc toujours exact. Les programmes peuvent s’y référer pour vérifier les données qu’ils envoient et lisent, ou générer leurs types à partir de ce schéma.
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é ni période d’essai.
Download GolinksPRO Download Manager