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] |
-o-এর মধ্যে এর নামে একটি ফোল্ডারে একটি গ্যালারির ছবি (একটি উইকিমিডিয়া কমন্স ক্যাটাগরি, একটি ফ্লিকার অ্যালবাম, ...) ডাউনলোড করুন; --limit সর্বোচ্চ ততগুলি নেয়, সাইটটি যা প্রথমে তালিকাভুক্ত করে। আবার শুরু হলে, এটি কেবল নতুনগুলি নিয়ে আসে। --adapter get-এর মতো একটি নেটওয়ার্ক অ্যাডাপ্টারের মাধ্যমে gallery-dl-এর সংযোগগুলি পাঠায়। |
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"}, অথবা --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
- 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 স্কিমাতে বর্ণিত আছে: automation-api.schema.json ( https://misterdownloadmanager.com/automation-api.schema.json এও পাওয়া যায়)। এটি অ্যাপ যে কোড দিয়ে উত্তর দেয় তা থেকে তৈরি করা হয়েছে, তাই এটি সঠিক থাকে; প্রোগ্রামগুলি এটি ব্যবহার করে যা তারা পাঠায় এবং পড়ে তা পরীক্ষা করতে পারে, অথবা এটি থেকে তাদের প্রকারগুলি তৈরি করতে পারে।
উদাহরণ
পাওয়ারশেল (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