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; नाम देना वैकल्पिक है (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) या किसी पते से चुना जा सकता है; एडाप्टर कनेक्ट न हो, तो कुछ नहीं भेजा जाता और डाउनलोड विफल हो जाता है। अगर किसी फ़ाइल होस्ट का लिंक आपके डीब्रिड खातों में से किसी एक (विकल्प → खाते) से डाउनलोड किया जा सकता है, तो ऐप की तरह वह लिंक उस खाते से डाउनलोड होता है। 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 gallery-dl के कनेक्शन एक नेटवर्क एडाप्टर से भेजता है, जैसा get के लिए होता है। |
video-info URL |
किसी पेज पर कौन-सा वीडियो है (YouTube, Vimeo, ...), और चुनने के लिए उसकी क्वालिटी। |
playlist-info URL [--from N] [--count N] |
प्लेलिस्ट या चैनल के वीडियो, सूची में दिए क्रम में हर वीडियो की जानकारी एक अलग पंक्ति में: उसका स्थान, अवधि, शीर्षक और पता। |
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 yt-dlp और ffmpeg के कनेक्शन एक नेटवर्क एडाप्टर से भेजता है, जैसा get के लिए होता है; एडाप्टर कनेक्ट न हो, तो कुछ भी शुरू नहीं होता। |
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 के रूप में, उनकी आईडी के साथ (ऑटोमेशन 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 एजेंटों के पढ़ने के लिए:
| कमांड | प्रिंट करता है |
|---|---|
get, resume |
{"event": "through", "service"}पहले जब डाउनलोड एक डीब्रिड खाते के माध्यम से जाता है, फिर हर आधे सेकंड में एक {"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: वे दूसरे प्रयास में आईं, वीडियो के बजाय उसके बगल में)। |
torrent-get |
{"event": "progress", "phase", "downloaded", "size", "speed", "peers", "peers_seen"}लाइनें, फिर {"event": "done", "path", "size"}, या {"event": "stopped", "downloaded", "seconds"} के साथ --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
- 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.
यह क्या समझता है
फ़ील्ड (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]} |
आईडी द्वारा डाउनलोड पर कार्य करता है: "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 Schema में किया गया है: 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()
पायथन:
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