Skip to content

Latest commit

 

History

History
493 lines (344 loc) · 27.6 KB

README.ur.md

File metadata and controls

493 lines (344 loc) · 27.6 KB

haul

English · 简体中文 · 繁體中文 · 日本語 · हिन्दी · Español · العربية · Français
বাংলা · Português · Bahasa Indonesia · اردو · Русский · Deutsch · Naijá · مصري

ایک لنک۔ آپ کا میڈیا۔

بلڈ کی حالت تازہ ترین ریلیز Go 1.26 یا نیا macOS، Linux اور Windows MIT لائسنس

ویڈیو اور آڈیو ڈاؤن لوڈ کرنے کا کمانڈ لائن ٹول، جو لوگوں اور AI ایجنٹس دونوں کے لیے بنا ہے۔
لنک دیں۔ اسٹریم منتخب کریں۔ ویڈیو، آڈیو، سب ٹائٹلز، ابواب اور سرورق ایک فائل میں حاصل کریں۔

تنصیب · فوری آغاز · معاون سائٹس · ایجنٹ گائیڈ · اختیارات · ریلیزز


چھوٹی کمانڈ۔ مکمل ڈاؤن لوڈ۔

↓ آپ کا میڈیا، آپ کے انداز میں ⌘ ایک بائنری، ہر ڈیسک ٹاپ { } آٹومیشن کے لیے تیار
پانچوں سائٹس پر ایک ہی اصطلاحات سے معیار، کوڈیک، صفحات اور فائل کے نام منتخب کریں macOS، Linux اور Windows کے لیے ایک Go بائنری، جو متوازی رینج ڈاؤن لوڈ کرتی ہے اور رکے ہوئے ڈاؤن لوڈ دوبارہ جاری کرتی ہے stdout پر ایک JSON دستاویز، stderr پر لاگز، بامعنی ایگزٹ کوڈ؛ ٹرمینل کے بغیر کوئی سوال نہیں
01 / جائزہ 02 / انتخاب 03 / ڈاؤن لوڈ 04 / یکجا
ہر اسٹریم دیکھیں اپنی ترجیحات طے کریں گھر لے آئیں سب کچھ ایک ساتھ
صفحات، کوڈیک اور سائز معیار، آڈیو اور صفحات رینج یا سیگمنٹ میں ٹریک، سب ٹائٹلز اور سرورق
haul info "<url>" -q 720p -c avc,m4a haul "<url>" ffmpeg / MP4Box
ٹرمینل کے اندر ایک جھلک
$ haul info -q 720p "https://youtu.be/DdCEmlAydcw"
haul v1.0.0

  Inside Anthropic's molecular biology lab
  channel Anthropic  ·  2026-09-24  ·  00:01:15

  Video
  ▶  0  720p   1190×720   AVC  24fps   755 kbps    6.8 MB
     1  720p   1190×720   VP9  24fps   528 kbps    4.7 MB
     2  720p   1190×720   AV1  24fps   388 kbps    3.5 MB
     3  1080p  2048×1240  VP9  24fps  5827 kbps   52.3 MB
     …
    19  144p   238×144    AVC  24fps    50 kbps  459.0 KB
  Audio
  ▶ 0  OPUS  131 kbps    1.2 MB
    1  M4A   130 kbps    1.2 MB
    …

ذاتی، تحقیقی اور دیگر غیر تجارتی استعمال کے لیے۔ حقوقِ اشاعت اور ہر سائٹ کی شرائط کا احترام آپ کی ذمہ داری ہے۔

تنصیب

haul macOS، Linux اور Windows (amd64 اور arm64) پر چلتا ہے۔ ٹریک یکجا (mux) کرنے کے لیے ffmpeg درکار ہے؛ YouTube اور X کے لیے yt-dlp بھی، اور YouTube پلیئر کی جانچ کے لیے deno چاہیے:

brew install ffmpeg yt-dlp deno          # macOS
sudo apt install ffmpeg pipx unzip curl  # Linux (Debian / Ubuntu)
pipx install "yt-dlp[default]" && pipx ensurepath
curl -fsSL https://deno.land/install.sh | sh -s -- -y
winget install Gyan.FFmpeg               # Windows، ایک وقت میں ایک پیکیج
winget install yt-dlp.yt-dlp
winget install DenoLand.Deno

Linux پر yt-dlp کو ڈسٹری بیوشن کے پیکیج سے نہیں بلکہ pipx سے، یا اس کی ریلیزز سے yt-dlp_linux (arm64 پر yt-dlp_linux_aarch64) لے کر انسٹال کریں: YouTube اکثر بدلتا رہتا ہے اور پیکیج والے ورژن پیچھے رہ جاتے ہیں۔ انسٹال کرنے کے بعد نیا ٹرمینل کھولیں تاکہ یہ ٹولز PATH میں آ جائیں۔

بائنری حاصل کریں

Releases سے اپنے سسٹم کا آرکائیو ڈاؤن لوڈ کریں — haul-<version>-<os>-<arch>.tar.gz (Windows پر .zip) — اور haul کو اپنے PATH کے کسی بھی فولڈر میں رکھیں:

tar -xzf haul-*-darwin-arm64.tar.gz
mkdir -p ~/.local/bin && mv haul-*/haul ~/.local/bin/

موجودہ ریلیز طریقہ macOS ورژن پر دستخط کرتا ہے اور Apple سے نوٹرائزیشن حاصل کرتا ہے۔ haul-<version>-darwin-<arch>.pkg منتخب کریں؛ اس کے ساتھ نوٹرائزیشن ٹکٹ منسلک ہے اور یہ haul کو /usr/local/bin میں نصب کرتا ہے۔ آرکائیو میں وہی دستخط شدہ پروگرام ہے، مگر پہلی تصدیق کے لیے انٹرنیٹ درکار ہو سکتا ہے۔ پرانے ورژن غیر دستخط شدہ ہو سکتے ہیں۔

سورس سے بلڈ کریں · Go 1.26+
go install github.com/ac1982/haul/cmd/haul@latest

یا کلون کی گئی ریپوزٹری سے:

go build -o haul ./cmd/haul

فوری آغاز

ایک لنک سے شروع کریں۔ haul طے شدہ طور پر دستیاب بہترین اسٹریم منتخب کرتا ہے۔

haul "https://youtu.be/DdCEmlAydcw"

ڈاؤن لوڈ سے پہلے معلومات دیکھیں، یا معیار اور کوڈیک منتخب کریں:

haul info "https://youtu.be/DdCEmlAydcw"
haul -q 720p -c avc,m4a "https://youtu.be/DdCEmlAydcw"  # QuickTime کے لیے H.264 + AAC
کمانڈ کا حوالہ
کمانڈ مطلب
haul <url> [options] ڈاؤن لوڈ (haul download <url> کے برابر)
haul info <url> [--urls] آئٹم، اس کے صفحات اور اسٹریم دکھاتا ہے؛ کچھ ڈاؤن لوڈ نہیں کرتا
haul login bilibili بہتر معیار کے لیے bilibili میں لاگ ان
haul templates فائل نام کے ٹیمپلیٹ متغیرات
haul --help سائٹس، ایجنٹ استعمال، ایگزٹ کوڈ، مثالیں
haul download --help تمام اختیارات

معاون سائٹس

سائٹ لنکس ضرورت
YouTube youtube.com/watch?v=…, youtu.be/…, /shorts/…, /embed/…, /live/… yt-dlp, deno
X x.com/<user>/status/<id>, twitter.com/…؛ /video/<n> پوسٹ کی ایک ویڈیو منتخب کرتا ہے yt-dlp
Weibo weibo.com/<uid>/<id>, weibo.com/tv/show/…, video.weibo.com/show?fid=…, m.weibo.cn/status/…, t.cn/… yt-dlp
bilibili ویڈیوز، bangumi، کورسز، مجموعے، سیریز، پسندیدہ، صارف صفحات، b23.tv، براہ راست BV… av… ep… ss… md… –
Xiaoyuzhou xiaoyuzhoufm.com/episode/<id>, /podcast/<id> –
Apple Podcasts podcasts.apple.com/<cc>/podcast/<name>/id<show>؛ ایک قسط کے لیے ?i=<episode> کے ساتھ –

اپنی مرضی کے مطابق

صرف آڈیو

haul --audio-only "https://youtu.be/DdCEmlAydcw"
haul --audio-only -c m4a "https://youtu.be/DdCEmlAydcw"   # Opus کے بجائے AAC

چند حصے، پورا سیزن یا تازہ ترین قسط

# منتخب حصے، آپ کے Movies فولڈر میں
haul -p 1-3,10 -w ~/Movies "https://www.bilibili.com/video/BV1Wv411h7kN"

# سیزن کی تمام اقساط
haul -p ALL "https://www.bilibili.com/bangumi/play/ss33073"

# پوڈکاسٹ کی سب سے نئی قسط
haul -p LAST "https://podcasts.apple.com/us/podcast/the-daily/id1200361736"

# X پوسٹ کی تمام ویڈیوز
haul -p ALL "https://x.com/<user>/status/<id>"

منظم فائلیں، سب ٹائٹلز یا تعاملی انتخاب

haul -o "<uploader>/<title> [<quality>]" "https://youtu.be/DdCEmlAydcw"
haul --sub-lang en,zh "https://youtu.be/DdCEmlAydcw"   # صرف ان زبانوں کے سب ٹائٹلز
haul -i "BV1qt4y1X7TW"                                 # تیر والی کلیدوں سے اسٹریم منتخب کریں

AI ایجنٹس اور اسکرپٹس کے لیے

ایجنٹ کو جو کچھ چاہیے وہ سب haul --help میں ہے؛ llms.txt اسی رہنمائی کا فائل نسخہ ہے۔ مختصراً:

haul info --json "<url>"                                # 1. معلومات دیکھیں
haul --json --video-stream 2 --audio-stream 0 "<url>"   # 2. بالکل یہی اسٹریم ڈاؤن لوڈ کریں
haul --json -q 720p -c avc,m4a "<url>"                  #    یا ترجیحات کو انتخاب کرنے دیں
  • --json کے ساتھ stdout پر صرف ایک JSON دستاویز آتی ہے؛ پیش رفت اور لاگز stderr پر جاتے ہیں۔ اس کی files فہرست میں آؤٹ پٹ فائلیں ہوتی ہیں، نئی یا پہلے سے موجود۔
  • ٹرمینل کے بغیر کچھ بھی تعاملی نہیں۔ ٹرمینل نہ ہو تو -i ایگزٹ کوڈ 2 کے ساتھ ناکام ہوتا ہے اور اس کی جگہ استعمال ہونے والے فلیگ بتاتا ہے۔
  • info میں اسٹریم انڈیکس اسی ترتیب میں ہوتے ہیں جس میں haul انتخاب کرتا ہے؛ info اور ڈاؤن لوڈ دونوں کو وہی -q / -c دیں۔
  • پلے لسٹ، سیزن، شو یا کئی ویڈیوز والی پوسٹ پر info اس کے صفحات دکھاتا ہے؛ -p <n> اس صفحے کے اسٹریم اور سب ٹائٹلز بھی شامل کرتا ہے۔
  • ڈسک پر پہلے سے موجود صفحات "status": "skipped", "reason": "exists" کے طور پر بتائے جاتے ہیں، اس لیے دوبارہ چلانا محفوظ ہے۔
JSON جواب کی مثال · ایک کامیاب ڈاؤن لوڈ

ڈاؤن لوڈ یہ پرنٹ کرتا ہے:

{
  "ok": true,
  "command": "download",
  "site": "youtube",
  "input": "https://youtu.be/DdCEmlAydcw",
  "title": "Inside Anthropic's molecular biology lab",
  "uploader": "Anthropic",
  "published": "2026-09-23T18:01:32Z",
  "description": "…",
  "pageCount": 1,
  "files": ["/Users/me/Movies/Inside Anthropic's molecular biology lab.mp4"],
  "pages": [
    {
      "index": 1,
      "id": "DdCEmlAydcw",
      "title": "Inside Anthropic's molecular biology lab",
      "durationSeconds": 75,
      "published": "2026-09-23T18:01:32Z",
      "selected": true,
      "status": "downloaded",
      "file": "/Users/me/Movies/Inside Anthropic's molecular biology lab.mp4",
      "sizeBytes": 3434260,
      "selectedVideo": 0,
      "selectedAudio": 0,
      "video": [{ "index": 0, "quality": "360p", "resolution": "594x360", "codec": "AVC", "fps": 24, "bitrateKbps": 214, "sizeBytes": 2014782 }],
      "audio": [{ "index": 0, "codec": "M4A", "bitrateKbps": 130, "sizeBytes": 1220994 }],
      "subtitles": [{ "lang": "en" }]
    }
  ]
}

یہ haul --json -q 360p -c avc,m4a … کا جواب ہے۔ یہاں کلیدیں پڑھنے کی ترتیب میں ہیں اور اسٹریم کی فہرستیں صرف منتخب اسٹریم تک مختصر کی گئی ہیں؛ اصل دستاویز اپنی کلیدیں حروفِ تہجی کی ترتیب سے رکھتی ہے اور ہر اسٹریم دکھاتی ہے۔

ناکامی پر "ok": false کے ساتھ "error": {"kind", "message", "exitCode"} پرنٹ ہوتا ہے، اور اس سے پہلے مکمل ہونے والے صفحات جواب میں برقرار رہتے ہیں۔

ایگزٹ کوڈ مطلب error.kind
0 مکمل –
1 ڈاؤن لوڈ یا اخذ کرنے میں ناکامی failed
2 غیر معاون لنک یا اختیار کی غلط قدر input
3 ضروری ٹول موجود نہیں (ffmpeg، yt-dlp) dependency
4 لاگ ان ضروری ہے یا مدت ختم ہو گئی auth
64 غلط کمانڈ لائن (نامعلوم فلیگ، غائب آرگیومنٹ) –
130 منسوخ cancelled

اختیارات

haul download --help تمام اختیارات دکھاتا ہے۔ اہم اختیارات:

گروپ اختیارات
عمومی --json, --config <file>, --debug
اسٹریم -q, --quality <list>, -c, --codec <list>, --video-stream <n>, --audio-stream <n>, -i, --interactive, --video-ascending, --audio-ascending
صفحات -p, --pages <spec>, --show-all, --hide-streams
مواد --audio-only, --video-only, --subtitle-only, --cover-only, --skip-subtitle, --sub-lang <list>, --auto-subtitles, --skip-cover, --skip-mux
آؤٹ پٹ -o, --output <template>, --multi-output <template>, -w, --work-dir <dir>, --lang <code>, --no-tags, --archive, --delay <seconds>
bilibili --api web|tv|app|intl, --danmaku, --danmaku-only, --danmaku-format xml,ass, --cookie, --token؛ مزید اختیارات --help-hidden میں
ٹولز --ffmpeg, --yt-dlp, --use-mp4box, --mp4box, --use-aria2c, --aria2c, --aria2c-args, --single-connection
معیار اور کوڈیک کی ترجیحات

معیار اور کوڈیک۔ -q وہی لیبل لیتا ہے جو اسٹریم جدول دکھاتا ہے: YouTube پر 1080p، 720p60؛ bilibili پر 8K، Dolby Vision، HDR، 4K، 1080P60، 1080P+، 1080P، 720P۔ -c ویڈیو کے لیے av1 vp9 hevc avc اور آڈیو کے لیے m4a opus flac eac3 mp3 لیتا ہے۔ یہ ترجیحات ہیں، فلٹر نہیں: جو فہرست میں نہیں وہ بعد میں آتا ہے، بہترین پہلے۔ --video-ascending / --audio-ascending سب سے چھوٹے ڈاؤن لوڈ کے لیے ترتیب الٹ دیتے ہیں۔

صفحات کا انتخاب

صفحات۔ 8، 1,2، 3-5، 1-3,10، ALL، LAST (آخری صفحہ، یعنی شو کی سب سے نئی قسط؛ LATEST بھی چلتا ہے)۔ کسی ایک قسط کا لنک، یا ?p=N، وہ صفحہ خود منتخب کر لیتا ہے۔ صفحات سے مراد bilibili ویڈیو کے حصے، سیزن، شو یا فہرست کی اقساط، اور X پوسٹ کی ویڈیوز ہیں۔

فائل کے نام اور ٹیمپلیٹ متغیرات

فائل کے نام۔ ایک صفحے والا آئٹم: <title>؛ کئی صفحات والا (چاہے -p صرف ایک لے): <title>/[P<pageNumberWithZero>]<pageTitle>، کل صفحات کی تعداد کے مطابق آگے صفر لگا کر۔ متغیرات:

<title> <pageNumber> <pageNumberWithZero> <pageTitle> <id> <site> <uploader> <uploaderId> <quality> <resolution> <fps> <videoCodec> <videoBitrate> <audioCodec> <audioBitrate> <publishDate> <pageDate>، اور bilibili کے <bvid> <aid> <cid> <api>۔

تاریخوں کو فارمیٹ دیا جا سکتا ہے: <publishDate:yyyy-MM-dd>۔ توسیع خود شامل ہوتی ہے۔

سائٹ سے متعلق معلومات

YouTube · اخذ، سب ٹائٹلز اور پلے لسٹس

YouTube اپنے اسٹریم URL کو پلیئر کی ایسی جانچوں سے محفوظ رکھتا ہے جن کے لیے JavaScript رن ٹائم درکار ہے، اس لیے اخذ کرنے کا کام yt-dlp -J پر چھوڑا گیا ہے (جو انہیں deno میں چلاتا ہے)؛ اس کے بعد کا سارا کام haul خود کرتا ہے۔ اپ لوڈ کیے گئے سب ٹائٹلز فائل میں شامل کیے جاتے ہیں؛ خودکار طور پر بنے سب ٹائٹلز صرف --auto-subtitles کے ساتھ۔ googlevideo صرف محدود بائٹ رینج دیتا ہے، اس لیے ٹریک ایک وقت میں 10 MB کی ایک رینج کر کے لائے جاتے ہیں۔ watch?v=…&list=… صرف وہی ویڈیو ڈاؤن لوڈ کرتا ہے۔ yt-dlp کو تازہ رکھیں: YouTube کی تبدیلیوں کے حل وہیں آتے ہیں۔

X · عوامی پوسٹس اور آڈیو

X کی عوامی پوسٹس کے لیے لاگ ان نہیں چاہیے۔ اس کی ویڈیوز آڈیو سمیت ایک ہی MP4 فائل ہوتی ہیں، اس لیے جدول میں صرف ویڈیو دکھائی دیتی ہے؛ --audio-only آڈیو الگ کرتا ہے۔

bilibili · لاگ ان، بہتر معیار اور danmaku

bilibili کو اس کے اپنے web، TV، APP (gRPC) اور بین الاقوامی API کے ذریعے پڑھا جاتا ہے۔ لاگ آؤٹ حالت میں صرف کم معیار ملتا ہے (عام طور پر 480P تک)؛ 1080P، 4K، HDR، Dolby Vision اور Hi-Res آڈیو کے لیے لاگ ان کریں:

haul login bilibili                # bilibili ایپ سے QR کوڈ اسکین کریں
haul login bilibili --from-edge    # macOS: Microsoft Edge کا لاگ ان دوبارہ استعمال کریں (یا --from-chrome; --profile "Profile 1")
haul login bilibili --tv           # TV ایکسیس ٹوکن، --api tv / --api app کے لیے

براؤزر کا لاگ ان پڑھنا فی الحال صرف macOS پر کام کرتا ہے: اس کے لیے ٹرمینل کو Full Disk Access چاہیے، اور macOS ایک بار “Safe Storage” کی چین آئٹم کی اجازت مانگتا ہے۔ --danmaku اسکرین پر چلتے تبصرے (danmaku) XML اور ASS میں محفوظ کرتا ہے؛ --danmaku-format ass ان میں سے صرف ایک رکھتا ہے۔

Xiaoyuzhou & Apple Podcasts · اقساط اور میٹاڈیٹا

Xiaoyuzhou اور Apple Podcasts کو yt-dlp نہیں چاہیے: Xiaoyuzhou کے صفحات میں آڈیو لنک ہوتا ہے، اور Apple کے لنکس عوامی iTunes API اور شو کی RSS فیڈ کے ذریعے جاتے ہیں۔ اقساط اپنا فارمیٹ (.mp3 یا .m4a) برقرار رکھتی ہیں؛ سرورق شامل ہوتا ہے، شو البم اور میزبان فنکار بنتا ہے۔ شو کا لنک حالیہ اقساط پرانی سے نئی ترتیب میں دکھاتا ہے، اس لیے -p LAST سب سے نئی قسط ہے۔

ترتیبات

~/.config/haul/ (یا $HAUL_HOME) میں یہ فائلیں ہوتی ہیں:

فائل مقصد
config.json کسی بھی اختیار کی طے شدہ قدر
cookie.txt, tv-token.txt, app-token.txt bilibili لاگ ان
archives.txt پہلے سے ڈاؤن لوڈ شدہ صفحات (--archive)

config.json میں اختیارات کے نام camelCase میں ہوتے ہیں، bilibili والے "bilibili" کے اندر، اور اس میں صرف وہی لکھنا ہوتا ہے جو بدلنا ہو؛ فہرست array بھی ہو سکتی ہے اور کاما سے الگ کی گئی string بھی۔ کمانڈ لائن فلیگ اسے اوور رائیڈ کرتے ہیں:

{
  "workDir": "~/Movies/haul",
  "codec": "avc,hevc,m4a",
  "quality": "1080p,1080P",
  "output": "<uploader>/<title>",
  "archive": true,
  "bilibili": { "danmaku": true, "danmakuFormat": ["ass"] }
}

ڈیولپمنٹ

go build ./cmd/haul
go test ./...                                  # آف لائن، چند سیکنڈ
HAUL_LIVE=1 go test -run Live ./internal/...   # bilibili، YouTube، X اور Apple Podcasts سے بھی رابطہ کرتا ہے

آف لائن ٹیسٹ کبھی نیٹ ورک کو نہیں چھوتے: ٹیسٹ ایک فرضی http.RoundTripper سے بات کرتے ہیں، جو ریکارڈ شدہ API جوابات اور نقلی CDN (صرف رینج دینے والے سرور، ٹوٹتے کنکشن، رینج کو نظرانداز کرنے والے سرور) سے جواب دیتا ہے۔ مکمل سلسلے کے ٹیسٹ اصل ffmpeg سے ٹریک یکجا کرتے ہیں اور نتیجہ ffprobe سے جانچتے ہیں؛ ffmpeg انسٹال نہ ہو تو یہ چھوڑ دیے جاتے ہیں۔ ساخت اور اصولوں کے لیے AGENTS.md دیکھیں۔

v* ٹیگ پش کرنے پر GitHub Actions ٹیسٹ چلاتا ہے، ہر پلیٹ فارم کے لیے کراس کمپائل کرتا ہے اور ریلیز شائع کرتا ہے۔

اظہار تشکر

yt-dlp, FFmpeg, GPAC, aria2, pflag, x/term, rsc.io/qr، اور bilibili-API-collect اور bilibili-grpc-api کے API نوٹس۔

لائسنس

MIT


ایک لنک۔ آپ کا میڈیا۔
haul حاصل کریں · ایجنٹ حوالہ · تعاون کریں