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, ঐচ্ছিকভাবে নাম দেওয়া (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

  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]} আইডি দিয়ে ডাউনলোডে কাজ করে: "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