GolinksPRO Download Manager
  1. ホーム
  2. ヘルプ
  3. コマンドラインと自動化

コマンドラインと自動化

GDM can be driven without its window in three ways:

  • アプリ独自のコマンドライン。IDMと同じスイッチを使って、スクリプト、バッチファイル、または別のプログラムから実行中のアプリにダウンロードを渡します。
  • misterdownloadmanager-cli。別のコマンドラインツールです。アプリを使わず、ターミナルで進行状況を確認しながらファイル、動画、トレントをダウンロードできます。
  • 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.

例ではWindowsのパスを使用しています。macOSとLinuxでは、プログラムは.exeなしで同じ名前です。

アプリのコマンドライン

misterdownloadmanager.exe /d URL [/p folder] [/f name] [/a] [/n] [/s]
スイッチ 機能
/d URL ダウンロードするアドレス。
/p folder このフォルダーに保存します(それ以外の場合は、オプション → 保存先で設定されたカテゴリのフォルダー)。
/f name この名前で保存します。
/a 開始せずにメインのダウンロードキューに追加します。
/n サイレント: ダウンロード ファイル情報ウィンドウは表示されず、ダウンロードはすぐに開始されます(または/aでキューに入れられます)。
/s メインのダウンロードキューを開始します。
/exit 実行中のアプリを保存して閉じます(インストーラーはアップグレード前にこれを使用します)。
/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.
.torrentファイルまたは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.

コマンド 機能
get URL [-o folder\|file] [-c connections] [-H "Header: value"]... [--checksum hash] [--dns choice] [--adapter name] 最大8接続(-c、1~128)でファイルをダウンロードし、進行状況を表示します。Ctrl+Cで一時停止し、resumeで再開します。--checksumはダウンロード済みファイルを検証します。MD5、SHA-1、SHA-256、SHA-512、CRC32のいずれかを16進数で検証し、必要に応じて名前を指定できます(sha256:…)。--dnsはDNSを選択します。system(既定)、サービスと問い合わせ方法(cloudflare-https、quad9-tls、google-plain、adguard-https、nextdns-tls)、DNSサーバーのアドレス(9.9.9.9,149.112.112.112)、またはDNS-over-HTTPSアドレスを指定できます。システムのDNSにフォールバックすることはありません。--adapterは、名前(Ethernet、wg0)またはアドレスで指定した1つのネットワークアダプターをすべての接続で使用します。アダプターが接続されていない場合、データは送信されず、ダウンロードは失敗します。オプション → アカウントにあるデブリットアカウントで対応しているファイルホストのリンクは、アプリの場合と同様にそのアカウントを経由し、getはthrough Real-Debridを表示します。--directはアドレス自体をダウンロードします(デブリットサービスアカウント)。
resume file.mdm.json [-c connections] [-H ...] [--direct] 一時停止または中断したダウンロードを、隣にある.mdm.jsonファイルから再開します。デブリットアカウントを使う場合はgetと同様に、古いリンクの期限が切れているとサービスから新しいリンクが提供されます。--directはアドレス自体から再開します。
install-gallery-dl 画像ギャラリー用のgallery-dlをインストールまたは更新します。そのチェックサムリストは作者の署名キーと照合され、プログラムはそのリストと照合されます(WindowsおよびLinux x86-64の場合。それ以外の場合はご自身でインストールしてください)。
gallery-get URL [-o folder] [--limit N] [--adapter name] ギャラリーの画像(Wikimedia Commonsのカテゴリ、Flickrのアルバムなど)を、-o内にギャラリー名のフォルダーを作成してダウンロードします。--limitでダウンロード数の上限を指定します。取得されるのは、サイトに最初に表示される画像です。再度実行すると、新しい画像だけを取得します。--adapterは、getと同様に、gallery-dlの接続に1つのネットワークアダプターを使用します。
video-info URL ページに含まれるビデオ(YouTube、Vimeoなど)と、選択できる品質。
playlist-info URL [--from N] [--count N] プレイリストまたはチャンネルの動画を、表示順に1行ずつ出力します。各行には位置、長さ、タイトル、アドレスが含まれます。
playlist-get URL [-f selector] [-o folder] [--from N] [--count N] プレイリストまたはチャンネルの動画を順番にダウンロードし、-o内にリスト名のフォルダーを作成して保存します。-fは、video-getと同様に、すべての動画に同じ画質を指定します(既定では各動画の最高画質。bv*[height<=720]+ba/b[height<=720] = 最大720p。ba = 元の音声。mp3:320、opus:、flac:はvideo-getと同様)。
video-get URL [-f selector] [-o folder] [--subs langs] [--auto-subs] [--embed-subs] [--adapter name] 動画をダウンロードします。-fはvideo-infoの画質セレクターを指定します(b = 最高画質の単一ファイル、ba = サイトにあるままの音声(変換なし)、mp3:320、mp3:256、mp3:192、mp3:128 = 指定したビットレートのMP3音声、mp3:0 = 最高の可変ビットレート、opus: = Opus音声、flac: = FLAC音声(ロスレスですが、サイトの音声より高音質になるわけではありません)。変換にはffmpegが必要です)。--subsは字幕を動画の隣に保存します。video-infoの言語コード(en,fr)、またはアップローダーが提供したすべての字幕を取得するallを指定します。--auto-subsは代わりにサイトの自動字幕を取得します。--embed-subsは字幕を動画に埋め込みます(ffmpeg、MP4またはMKVが必要です)。--adapterは、getと同様に、yt-dlpとffmpegの接続に1つのネットワークアダプターを使用します。アダプターが接続されていない場合、何も開始されません。
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 トレントの名前、ファイル(番号付き)、サイズ。SOURCEはマグネットリンクまたは.torrentファイルです。
torrent-get SOURCE [-o folder] [--files 0,2] [--use-existing] トレント、またはその一部のファイルをダウンロードします。ファイルの一部がすでにフォルダーにある場合は、ダウンロードを停止して該当するファイル名を表示します。--use-existingを指定すると、それらのファイルを使用します(一致するファイルはそのまま使い、残りをダウンロードします)。
torrent-create PATH -o file.torrent ファイルまたはフォルダーから.torrentを作成します(ピアはDHTを介して見つけます)。
status 実行中のアプリのダウンロードをJSON形式で、ID付きで表示します(自動化APIがオンになっている必要があります)。
pause ID..., start ID... 実行中のアプリで、実行中のダウンロードを一時停止したり、停止中、キューに入っている、または失敗したダウンロードを開始(再開)したりします。
remove ID..., delete ID... 実行中のアプリのリストからダウンロードを削除します。removeはファイルを残し、deleteはファイルも削除します。実行中のダウンロードは先に一時停止されます(pause)。
api on, api off 実行中のアプリの自動化APIをオンまたはオフにします。

misterdownloadmanager-cli help <command>すべてのオプションを表示します。コマンドが失敗した場合(アプリが実行されていない、エラーが返される、ダウンロードが中断するなど)、コード1で終了します。例:

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

--jsonを指定すると(コマンドの前後どちらでも可)、すべてのコマンドがテキストの代わりにJSONを出力します。スクリプトやAIエージェントが読み取れるよう、1行に1つのオブジェクトが出力されます。

コマンド 出力
get, resume {"event": "through", "service"}ダウンロードがデブリットアカウントを経由する場合に最初に、次に0.5秒ごとに{"event": "progress", "downloaded", "size", "speed", "connections", "segments"}行、次に{"event": "done", "path", "size", "seconds"}、または{"event": "paused", "state"}の後にCtrl+C(stateはresumeが取得するファイルです)。
video-get {"event": "progress", "downloaded", "size", "speed"}行を出力し、次に{"event": "done", "path", "subtitles", "subtitle_problems"}を出力します。これは動画の横に保存された字幕ファイルと、サイトが拒否した言語({"code", "name", "reason", "beside"})を示します。besideは、2回目の試行で字幕が動画に埋め込まれず、動画の横に保存されたことを示します。
torrent-get {"event": "progress", "phase", "downloaded", "size", "speed", "peers", "peers_seen"}行、その後{"event": "done", "path", "size"}、または--secondsで{"event": "stopped", "downloaded", "seconds"}。
video-info {"title", "choices": [{"label", "format", "size"}], "subtitles": [{"code", "name", "automatic"}]}。選択肢のformatはvideo-get -fが受け取るもので、字幕のcodeは--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 アプリの応答。すでにJSON形式です(下記参照)。

サイズの単位はバイト(不明な場合はnull)、速度の単位はバイト/秒です。失敗すると{"error": "…"}を出力し、コード1で終了します。例:

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}

自動化API

他のプログラムから、実行中のアプリがダウンロードしている内容を確認したり、ダウンロードを一時停止、開始、削除したりできます。APIはデフォルトでオフです。misterdownloadmanager-cli api onでオンにし、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.

対応する内容

フィールド(token以外) 応答
{"query": "list"} 各ダウンロードと合計速度: {"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はQueued、Downloading、Stopped、Complete、またはErrorです。sizeは不明な場合はnullです。error(失敗理由)はErrorのダウンロードにのみ表示されます。categoryはカテゴリのkeyです。freeはダウンロードが保存される空き容量です(不明な場合はnull)。APIがオンの場合のみ。
{"action": "pause", "ids": [3, 4]} IDでダウンロードを操作します:"pause"、"start"、"remove"(ファイルを残して削除)、または"delete"(ファイルも削除)。{"done": [3], "skipped": [{"id": 4, "why": "not running"}]}を返します。実行中のダウンロードは、リストから削除する前、またはファイルごと削除する前に一時停止する必要があります。APIがオンの場合のみ使用できます。
{"action": "start_queue", "queue": "Main download queue"} その名前のキューを開始します(または"stop_queue"で停止します)(リストのqueuesからの名前)。{"done": [], "skipped": []}または{"error": …, "code": "unknown-queue"}で応答します。APIがオンの場合のみ。
{"api": true} / {"api": false} APIをオンまたはオフにします:{"api": true}。
{"url": "https://…", "dir": "D:\\Files", "name": "a.zip", "silent": true} コマンドラインの/d /p /f /nのようにダウンロードを追加します("later": trueは/aです)。ok。"category"(リストのcategoriesからのキー)は、その種類の選択するフォルダではなく、そのカテゴリのフォルダに配置します。"queue"(キューの名前)は、"later"で待機するキューです。APIがオフの場合でも、コマンドラインのように機能します。
{"start_queue": true} メインのダウンロードキューを開始します。ok。

不明な質問や操作には{"error": "…"}が返されます。API がオフの場合の質問にも同様に応答します(その場合は"code": "api-off"が返されます。プログラムで確認するための値です。エラーテキストは変更される可能性があります)。トークンが間違っている場合はdeniedが返されます。

すべてのリクエストと応答は、フィールドごとに JSON スキーマで記述されています。automation-api.schema.json(https://misterdownloadmanager.com/automation-api.schema.jsonにもあります)。アプリが応答に使用するコードから生成されるため、常に正確です。プログラムでは、送信する内容や読み取る内容をこのスキーマで検証したり、スキーマから型を生成したりできます。

例

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

代わりにダウンロードを追加するには、{"token": "…", "url": "https://example.com/a.zip", "silent": true}を送信してください。

無料、オープンソース、広告なし、試用期間なし。

Download GolinksPRO Download Manager