You-get: वेब से सामग्री खींचने वाला एक सरल डाउनलोडर
(github.com/soimort)- 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, FreeBSDpkg, 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 के
masterstable branch याdevelopbranch को डाउनलोड करना - 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
- PyPI से
- Bash, Fish, Zsh के लिए shell auto-completion definitions
contrib/completionमें हैं - upgrade installation method के अनुसार
pip install --upgrade you-get, latest release download, याdevelopbranch की force reinstall से किया जा सकता है
मूल download flow
- वीडियो डाउनलोड करते समय
you-get -i URLया--infoसे पहले उपलब्ध quality और format देखे जा सकते हैं- output में site, title, stream, container, quality, size, और download के लिए इस्तेमाल होने वाला
--itagexample शामिल होता है - default download सूची के सबसे ऊपर वाले item का उपयोग करता है
- output में site, title, stream, container, quality, size, और download के लिए इस्तेमाल होने वाला
- अगर कोई दूसरा format चाहिए तो output में दिखाया गया
--itagvalue इस्तेमाल करें- उदाहरण के तौर पर YouTube के
Me at the zooवीडियो में--itag=18से mp4 चुना जा सकता है
- उदाहरण के तौर पर YouTube के
- अगर 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इस्तेमाल करें
- अगर download के बाद chunks merge नहीं करना चाहते, तो
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.downloadfile रह जाती है- वही arguments देकर फिर से चलाने पर यह पिछली session से resume करता है
- अगर temporary extension हट चुकी पूरी file मौजूद हो, तो download skip कर दिया जाता है
--forceया-fforced 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_proxyenvironment variable लागू होता है - proxy बंद करने के लिए
--no-proxyइस्तेमाल करें - Youku जैसी कुछ साइटों में, केवल mainland China से उपलब्ध video info extract करने के लिए
--extractor-proxyया-yइस्तेमाल किया जा सकता है
- default रूप से system proxy setting यानी
--playerया-pdownload की जगह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और Netscapecookies.txtहैं
- अभी supported cookie formats Mozilla
--urlया-upage से निकाले गए downloadable resource URLs की list print करता है--jsonextracted 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 टिप्पणियां
Hacker News की रायें
कुछ समय तक इंटरनेट महंगा था और bandwidth कम थी, लेकिन मुझे YouTube पर संगीत और lectures सुनना पसंद था। किसी समय एहसास हुआ कि सिर्फ audio stream लेने से bandwidth cost 90% घट सकती है
youtube-dlऔरyt-dlpमें requested format/quality का URL print करने वाला-Gflag था, और 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 बना दिया है
youtube-dlअब ठीक से काम नहीं करता लगता, और मुझे fork yt-dlp इस्तेमाल करना पड़ा। इस तरह project बदलना हमेशा थोड़ा असुरक्षित लगता है, लेकिन कम-से-कम यह widely used तो लगता है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...
144p video अजीब तरह से शांत और आरामदेह होता है। चमकीले रंगों या जटिल details से ध्यान नहीं भटकता, बस सुनने पर focus कर सकते हैं
मैं इसे आम तौर पर YouTube Premium होने के बावजूद background में न चलने वाले membership-only videos play करने के लिए इस्तेमाल करता हूं। हर iOS update पर दुआ करता हूं कि वे इस “glitch” को बंद न करें
यह project बिना fix PR के सिर्फ issues report करना नहीं चाहता लगता
“you-get इस्तेमाल करते समय मिली समस्या report करने के लिए Pull Request खोलना होगा…” जैसा लिखा है, ऐसा तरीका मैंने पहले नहीं देखा
requirement है समस्या का detailed description और उस समस्या को unit test के रूप में cover करने वाला कम-से-कम एक commit। यहां “addressing” शब्द अच्छा नहीं है, “demonstrating” बेहतर होता
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 सरल रखने का इरादा भी हो सकता हैyou-getmaintain नहीं करता, इसलिए नहीं जानता कि वे किन चीजों से गुजरते हैंcommand-line program ठीक से चलाना नहीं जानने वाले लोगों द्वारा बार-बार डाले जाने वाले issue flood को filter करने का यह effective तरीका हो सकता है
अगर इससे 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 चेक करने, और--debugoption चलाने को कहता हैdebug flag इस्तेमाल करने पर भी खास मदद नहीं मिली, और
pattern = str(pattern, 'latin1')परTypeError: decoding to str: need a bytes-like object, NoneType foundआयामैं देखना चाहता था कि age restriction bypass हो सकती है या नहीं, लेकिन बिना age restriction वाले videos पर भी वही error आया
Pyenv जैसे tool से latest Python पर switch करें, या
docker run -it -v $(pwd):/mnt python:3.13 bashकी तरह Docker image चलाकर उसके अंदर utility इस्तेमाल करके देखेंक्या कोई समझा सकता है कि यह yt-dlp से बेहतर क्यों है?
उदाहरण के लिए dedicated mp4 joiner होना अजीब/दिलचस्प लगा। अगर ffmpeg पहले से मौजूद है, तो इसे खुद उससे बेहतर बनाने का तरीका शायद ही हो
https://github.com/soimort/you-get/blob/develop/src/you_get/...
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 होते हैं
निजी तौर पर भी unstable या slow network, महंगे carriers की वजह से कभी-कभी media offline consume करना चाहता/करना पड़ता है। इसका मतलब यह नहीं कि पसंद आने पर बाद में पैसे नहीं दूँगा
अच्छा बनाया हुआ लगता है। लेकिन 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-getextension सोचा जा सकता है। यह सिर्फ YouTube ही नहीं, दूसरे platforms पर भी लागू हो सकता हैhttps://addons.mozilla.org/en-US/firefox/addon/faststream/?u...