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

Ligne de commande et automatisation

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

  1. While it runs, GDM listens on a port of 127.0.0.1 (this computer only) and writes the port and a secret token to ipc.json in 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.json next 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