6 पॉइंट द्वारा GN⁺ 2024-10-28 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • You-Get वेब से वीडियो, ऑडियो, इमेज जैसी मीडिया सामग्री डाउनलोड करने के लिए एक छोटा command-line utility है, और इसे तब इस्तेमाल किया जाता है जब कोई दूसरा आसान तरीका उपलब्ध न हो
  • यह YouTube, Youku, niconico, Tumblr, SoundCloud, Instagram, bilibili, TikTok जैसी कई साइटों से वीडियो·इमेज·ऑडियो डाउनलोड कर सकता है, या मीडिया प्लेयर में ऑनलाइन वीडियो स्ट्रीम कर सकता है
  • --info से उपलब्ध quality और format देखे जा सकते हैं और --itag से चुने जा सकते हैं, लेकिन format selection ज़्यादातर supported sites पर आम तौर पर implement नहीं है और default सबसे उच्च quality होती है
  • installation pip, GitHub download·clone, Homebrew, FreeBSD pkg, Flox आदि से संभव है, और recommended dependencies हैं Python 3.7.4 या बाद का, FFmpeg 1.0 या बाद का, तथा optional RTMPDump
  • यह direct URL download, web page scraping, Google Videos search-आधारित download, pause·resume, proxy, cookie load, extracted URL·JSON output तक देता है, लेकिन कुछ features अभी experimental हैं या पूरी तरह stable नहीं हुए हैं

You-Get क्या करता है

  • You-Get वेब से media content डाउनलोड करने वाला एक छोटा command-line utility है
    • target content में वीडियो, ऑडियो और इमेज शामिल हैं
    • इसका उपयोग तब किया जाता है जब वेब पर डाउनलोड का कोई और आसान तरीका न हो
  • इसे इस्तेमाल करने के कारणों में निजी उपयोग के लिए डाउनलोड, saving-blocked online videos पर control, closed technologies या proprietary JavaScript·Flash से बचना, तथा hacker culture और free software की ओर झुकाव शामिल हैं
  • इसके मुख्य features इस प्रकार हैं
    • YouTube, Youku, Niconico जैसी लोकप्रिय साइटों से video·audio download
    • web browser के बिना media player में online video streaming
    • web pages को scrape करके मनचाही images डाउनलोड करना
    • binary files जैसी किसी भी non-HTML content को डाउनलोड करना

installation और runtime environment

  • recommended dependencies हैं Python 3.7.4 या बाद का, FFmpeg 1.0 या बाद का, और optional RTMPDump
  • 30 मई 2022 की सूचना के अनुसार Python 3.5, 3.6, 3.7 का support अंततः बंद किया जाएगा
  • installation के कई रास्ते हैं
    • PyPI से pip install you-get
    • Zsh users के लिए Antigen के साथ antigen bundle soimort/you-get
    • GitHub के master stable branch या develop branch को डाउनलोड करना
    • developers के लिए recommended git clone git://github.com/soimort/you-get.git
    • macOS पर brew install you-get
    • FreeBSD पर pkg install you-get
    • Mac, Linux, Windows WSL पर flox install you-get
  • Bash, Fish, Zsh के लिए shell auto-completion definitions contrib/completion में हैं
  • upgrade installation method के अनुसार pip install --upgrade you-get, latest release download, या develop branch की force reinstall से किया जा सकता है

मूल download flow

  • वीडियो डाउनलोड करते समय you-get -i URL या --info से पहले उपलब्ध quality और format देखे जा सकते हैं
    • output में site, title, stream, container, quality, size, और download के लिए इस्तेमाल होने वाला --itag example शामिल होता है
    • default download सूची के सबसे ऊपर वाले item का उपयोग करता है
  • अगर कोई दूसरा format चाहिए तो output में दिखाया गया --itag value इस्तेमाल करें
    • उदाहरण के तौर पर YouTube के Me at the zoo वीडियो में --itag=18 से mp4 चुना जा सकता है
  • अगर YouTube वीडियो में subtitles हों, तो वे video file के साथ SubRip subtitle format में डाउनलोड किए जाते हैं
  • format selection अभी तक ज़्यादातर supported sites में सामान्य feature के रूप में implement नहीं हुई है
    • ऐसे मामलों में default download format सबसे उच्च quality होता है
  • FFmpeg उन videos के download·merge के लिए ज़रूरी है जो कई chunks में stream होते हैं, और YouTube 1080p या उससे ऊपर के high-resolution videos के लिए भी
    • अगर download के बाद chunks merge नहीं करना चाहते, तो --no-merge या -n इस्तेमाल करें

URL, web page और search-आधारित download

  • अगर exact resource URL पता हो, तो you-get URL से सीधे डाउनलोड किया जा सकता है
    • उदाहरण के तौर पर JPEG image URL देने पर site, title, type, size दिखता है और file save हो जाती है
  • अगर exact resource URL की जगह web page URL दिया जाए, तो यह page को scrape करके रुचि की items खोजने की कोशिश करता है
    • यह feature experimental है और पूरी तरह सटीक नहीं है
    • Tumblr, Blogger जैसी लोकप्रिय साइटों पर बड़ी images scrape करने में यह सबसे अच्छा काम करता है
    • इंटरनेट की सभी साइटों पर लागू होने वाला कोई universal pattern नहीं है
  • अगर URL की जगह कोई string दी जाए, तो यह Google Videos में search करके सबसे relevant video डाउनलोड करता है
    • यह आपकी चाही हुई चीज़ से पूरी तरह मेल न भी खाए, लेकिन काफी संभव है कि परिणाम बहुत उपयुक्त हो

download control और runtime options

  • download के दौरान Ctrl+C से रोक सकते हैं, और output directory में temporary .download file रह जाती है
    • वही arguments देकर फिर से चलाने पर यह पिछली session से resume करता है
    • अगर temporary extension हट चुकी पूरी file मौजूद हो, तो download skip कर दिया जाता है
    • --force या -f forced re-download करता है और उसी नाम की existing file या temporary file को overwrite करता है
  • --output-dir या -o से save path और --output-filename या -O से filename तय किया जा सकता है
    • यह तब उपयोगी है जब default video title में ऐसे special characters हों जो मौजूदा shell, OS या filesystem के साथ compatible न हों
    • batch download scripts में तय folder और तय नाम से save करने के लिए भी यह उपयोगी है
  • --http-proxy या -x से HTTP proxy सेट किया जा सकता है
    • default रूप से system proxy setting यानी http_proxy environment variable लागू होता है
    • proxy बंद करने के लिए --no-proxy इस्तेमाल करें
    • Youku जैसी कुछ साइटों में, केवल mainland China से उपलब्ध video info extract करने के लिए --extractor-proxy या -y इस्तेमाल किया जा सकता है
  • --player या -p download की जगह mpv, vlc जैसे media player को video भेजता है
    • browser को player के रूप में दें तो ads या comments section के बिना browser में देखा जा सकता है
    • इसे दूसरे download manager को शुरू करने के लिए भी इस्तेमाल किया जा सकता है, लेकिन यह हमेशा अच्छी तरह fit नहीं बैठ सकता

authentication, extracted data और supported sites

  • private videos जैसी login-required content के लिए --cookies या -c से browser cookies देनी होंगी
    • अभी supported cookie formats Mozilla cookies.sqlite और Netscape cookies.txt हैं
  • --url या -u page से निकाले गए downloadable resource URLs की list print करता है
  • --json extracted data का summary JSON format में print करता है
    • यह feature अभी stable नहीं है और JSON schema में आगे breaking changes हो सकती हैं
  • supported sites की सूची में YouTube, X(Twitter), VK, Vimeo, Tumblr, SoundCloud, Pinterest, Internet Archive, Instagram, Facebook, Dailymotion, Bandcamp, niconico, bilibili, Youku, Naver, TikTok, Zhihu आदि शामिल हैं
    • site के अनुसार video, image, audio support अलग-अलग होता है
  • सूची में न होने वाली साइटों के लिए generic extractor page से रुचिकर resources खोजकर डाउनलोड करता है

issue report और license

  • अगर मनचाही content डाउनलोड नहीं हो रही हो, तो पहले Known Bugs देखें
  • नया issue report करने या योगदान देने से पहले contribution guidelines पढ़नी चाहिए
  • त्वरित सवाल Gitter channel #soimort/you-get पर पूछे जा सकते हैं
  • software MIT license के तहत वितरित किया जाता है
    • software बिना किसी warranty के “जैसा है” आधार पर दिया जाता है
    • copyright infringement या अन्य अवैध उद्देश्यों के लिए उपयोग पर लेखक जिम्मेदार नहीं है
    • repository केवल code प्रदान करती है; इसका उपयोग कैसे किया जाए, यह उपयोगकर्ता के विवेक पर निर्भर है

1 टिप्पणियां

 
GN⁺ 2024-10-28
Hacker News की रायें
  • कुछ समय तक इंटरनेट महंगा था और bandwidth कम थी, लेकिन मुझे YouTube पर संगीत और lectures सुनना पसंद था। किसी समय एहसास हुआ कि सिर्फ audio stream लेने से bandwidth cost 90% घट सकती है
    youtube-dl और yt-dlp में requested format/quality का URL print करने वाला -G flag था, और computer पर मैं command line से URL लेकर VLC में डालकर इस्तेमाल करता था
    फोन पर शुरुआत में SSH से VPS पर पहले file डाउनलोड करके फिर फोन पर दोबारा डाउनलोड करने वाला जटिल workaround इस्तेमाल किया, लेकिन बाद में पता चला कि phone browser सीधे URL play कर सकता है, तो youtube-dl -G -f bestaudio {url} के लिए PHP frontend बनाया
    अब वह online नहीं है और code भी खो गया है, लेकिन असल में वह एक-line का ही था। लगता है you-get भी --url / -u से वही use case support करता है, इसलिए बताना चाहता था कि यह feature कितना उपयोगी है
    screen बंद करके play करने पर battery भी 80% बचती है। YouTube को भी यह पता है, इसलिए शायद audio stream-only background playback को paid feature बना दिया है

    • Brave Mobile browser में background video audio playback चालू किया जा सकता है, इसलिए YouTube Premium जैसी subscription की जरूरत नहीं रहती
    • youtube-dl अब ठीक से काम नहीं करता लगता, और मुझे fork yt-dlp इस्तेमाल करना पड़ा। इस तरह project बदलना हमेशा थोड़ा असुरक्षित लगता है, लेकिन कम-से-कम यह widely used तो लगता है
    • मेरी मां को audiobooks बहुत पसंद हैं, इसलिए उनके लिए node-red में एक Telegram bot बनाया जो YouTube links share करने पर उन्हें process करता है
      links FIFO में भेजे जाते हैं, और एक छोटा daemon उन्हें क्रम से डाउनलोड करके dedicated incoming folder में save करता है। bot सिर्फ audio भी ले सकता है और पूरा video भी, लेकिन मां की Telegram ID के लिए मैंने उसे सिर्फ audio लेने पर set किया है
      इस folder को Jellyfin monitor करता है, इसलिए मां उन्हें डाउनलोड कर सकती हैं या सीधे सुन सकती हैं। 2 साल में उन्होंने 1TB से ज्यादा audiobooks डाउनलोड किए हैं और वे बहुत खुश हैं
      daemon code: https://gist.github.com/entropie/d265e94136b9777cc6b3190189b...
    • low-bandwidth स्थितियों में मैं अक्सर 144p चुनता हूं। size अच्छे quality वाले audio-only stream जितना ही होता है, लेकिन फायदा यह है कि 45 मिनट में एक बार भी speaker को देखा जा सकता है। battery भी उसी तरह बचती है
      144p video अजीब तरह से शांत और आरामदेह होता है। चमकीले रंगों या जटिल details से ध्यान नहीं भटकता, बस सुनने पर focus कर सकते हैं
    • iOS Safari में Safari app से बाहर निकलने के बाद now playing interface में video play button जल्दी से दबाएं, तो YouTube video audio को background playback की तरह चलने के लिए गड़बड़ा सकते हैं
      मैं इसे आम तौर पर YouTube Premium होने के बावजूद background में न चलने वाले membership-only videos play करने के लिए इस्तेमाल करता हूं। हर iOS update पर दुआ करता हूं कि वे इस “glitch” को बंद न करें
  • यह project बिना fix PR के सिर्फ issues report करना नहीं चाहता लगता
    “you-get इस्तेमाल करते समय मिली समस्या report करने के लिए Pull Request खोलना होगा…” जैसा लिखा है, ऐसा तरीका मैंने पहले नहीं देखा

    • जैसा किसी और ने कहा, लगता है इसका मतलब fix खुद नहीं बल्कि failing test चाहिए
      requirement है समस्या का detailed description और उस समस्या को unit test के रूप में cover करने वाला कम-से-कम एक commit। यहां “addressing” शब्द अच्छा नहीं है, “demonstrating” बेहतर होता
    • Chinese version में एक additional header है जिसका अनुवाद है “GitHub Issues के दुरुपयोग को रोकने के लिए सामान्य issues स्वीकार नहीं किए जाते।” पुराने English wording में यह लिखा था
      you-get फिलहाल issue handling के लिए aggressive approach experiment कर रहा है, और bug reports को pull request के जरिए code में handle किया जाना चाहिए
      https://github.com/soimort/you-get/commit/75b44b83826b3c2d9a...
      शायद spam बहुत ज्यादा रहा होगा। वैसे tests/test.py कई websites के लिए extractors को सीधे run करता लगता है, और network requests/responses को कहां mock किया जाता है, यह मुझे नहीं मिला। PR बनाने वाले के लिए process सरल रखने का इरादा भी हो सकता है
    • लगता है मतलब यह है कि समस्या हल हुई या नहीं दिखा सकने वाला tests वाला PR submit करें
    • लोगों को test या पूरा fix तक try करने के लिए encourage करने का विचार interesting है, लेकिन सिर्फ वही accept करना थोड़ा ज्यादा लगता है। हालांकि मैं you-get maintain नहीं करता, इसलिए नहीं जानता कि वे किन चीजों से गुजरते हैं
      command-line program ठीक से चलाना नहीं जानने वाले लोगों द्वारा बार-बार डाले जाने वाले issue flood को filter करने का यह effective तरीका हो सकता है
    • failing test लिखना तुलनात्मक रूप से आसान है, और issue triage का काम काफी घटा देता है। GitHub Issues के support forum में बदलने का risk भी कम हो जाता है
      अगर इससे project maintenance आसान हो और project ज्यादा लंबे समय तक बना रहे, तो मुझे यह ठीक लगता है
  • title और description का शुरुआती हिस्सा देखकर लगा था कि यह page से कुछ भी पकड़कर डाउनलोड करने वाला heuristic-based tool है। जब किसी specific site का support tool न हो, यानी ज्यादातर मामलों में “जब yt-dlp support न करे,” तब useful ऐसा tool
    लेकिन असल में यह extractor-based structure है, जिसमें कुछ हद तक popular हर source के लिए अलग extractor है। आखिरकार यह ज्यादा simple yt-dlp clone जैसा ही नहीं है क्या

  • जानना चाहूँगा कि क्या किसी और को भी यह error लगातार आ रहा है
    यह you-get: [error] oops, something went wrong. से शुरू होता है और network problem चेक करने, latest version देखने, known bugs चेक करने, और --debug option चलाने को कहता है
    debug flag इस्तेमाल करने पर भी खास मदद नहीं मिली, और pattern = str(pattern, 'latin1') पर TypeError: decoding to str: need a bytes-like object, NoneType found आया
    मैं देखना चाहता था कि age restriction bypass हो सकती है या नहीं, लेकिन बिना age restriction वाले videos पर भी वही error आया

    • Python version चेक कर लेना अच्छा रहेगा
      Pyenv जैसे tool से latest Python पर switch करें, या docker run -it -v $(pwd):/mnt python:3.13 bash की तरह Docker image चलाकर उसके अंदर utility इस्तेमाल करके देखें
  • क्या कोई समझा सकता है कि यह yt-dlp से बेहतर क्यों है?

    • दिलचस्प सवाल है। dependencies तो सिर्फ एक library है, लेकिन असल में कितना code खुद लिखा गया है, यह जानने की उत्सुकता है
      उदाहरण के लिए dedicated mp4 joiner होना अजीब/दिलचस्प लगा। अगर ffmpeg पहले से मौजूद है, तो इसे खुद उससे बेहतर बनाने का तरीका शायद ही हो
      https://github.com/soimort/you-get/blob/develop/src/you_get/...
    • यह जानना चाहूँगा कि आपने कैसे निष्कर्ष निकाला कि यह yt-dlp से बेहतर है। जिस क्षेत्र में Google लगातार रोकने की कोशिश करता है, वहाँ जितने ज्यादा विकल्प हों उतना बेहतर लगता है
  • site-specific extractors और converters library वाले ytdl-style media downloader को ठीक-ठीक “मूर्ख” tool कहना मुश्किल है, लेकिन ytdl जैसे और projects बनना फिर भी अच्छी बात है

  • supported sites की list में Bandcamp क्यों है, यह ठीक से समझ नहीं आता। Bandcamp में artist को पहले पैसे देने पर files सीधे download करने देता है
    इस tool से जो मिल सकता है, वह इसलिए है क्योंकि artist ने खरीदने से पहले मुफ्त में सुनने की अनुमति दी है। इस tool से download करना बिल्कुल गैर-जरूरी और थोड़ा असभ्य व्यवहार जैसा लगता है। Bandcamp पर ज्यादातर छोटे independent artists और labels होते हैं

    • supported sites की list यह नैतिक घोषणा नहीं है कि इस tool को कहाँ इस्तेमाल करना चाहिए। यह बस उन popular sites की list है जहाँ यह tool काम करता है
    • subscribe या purchase करने के बाद भी यह tool इस्तेमाल किया जा सकता है। लोग पहले से paid content भी ऐसी automation tools से download करते हैं ताकि अलग-अलग closed ecosystems की 5 apps में login करने की झंझट कम हो
    • जरूरी नहीं कि हर कोई ऐसे देश में रहता हो जहाँ Bandcamp को payment किया जा सके
      निजी तौर पर भी unstable या slow network, महंगे carriers की वजह से कभी-कभी media offline consume करना चाहता/करना पड़ता है। इसका मतलब यह नहीं कि पसंद आने पर बाद में पैसे नहीं दूँगा
    • piracy करने वाले लोग किस income level से किस content को चुराना moral या immoral मानते हैं?
    • हर कोई इस बात से सहमत नहीं है कि artists को अपने काम के पैसे मिलने चाहिए
  • अच्छा बनाया हुआ लगता है। लेकिन consumer के नज़रिए से जानना चाहूँगा कि yt-dlp की जगह you-get इस्तेमाल करने की वजह क्या है
    बहुत सारी sites पर काफी अच्छी तरह काम करने वाले yt-dlp के मुकाबले इसकी क्या strengths हैं?
    [1] https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites....

  • documentation में लिखा है “Google Videos में search और download: $ you-get "Richard Stallman eats"
    मैं documentation अक्सर नहीं पढ़ता, लेकिन इस बार पढ़ी और थोड़ा घिनौना Easter egg मिल गया

  • पसंद आया। कल्पना कर रहा हूँ कि Chrome/Firefox के लिए companion extension हो, जो you-get को backend की तरह इस्तेमाल करे और seamless तरीके से implement हो
    और आगे बढ़कर, YouTube पर जाने पर YouTube player को bypass करके ads के बिना content सीधे play करने वाला you-get extension सोचा जा सकता है। यह सिर्फ YouTube ही नहीं, दूसरे platforms पर भी लागू हो सकता है