You-get: Web'den içerik çeken basit bir indirici
(github.com/soimort)- You-Get, web'den video, ses ve görsel gibi medya içeriklerini indiren küçük bir komut satırı aracıdır; başka kolay bir yöntem olmadığında kullanılan bir araçtır
- YouTube, Youku, niconico, Tumblr, SoundCloud, Instagram, bilibili, TikTok gibi birçok siteden video·görsel·ses indirilebilir veya medya oynatıcıyla çevrimiçi video akışı yapılabilir
--infoile kullanılabilir kalite ve formatlar görülebilir,--itagile seçim yapılabilir; ancak format seçimi desteklenen sitelerin çoğunda genel olarak uygulanmış değildir ve varsayılan en yüksek kalitedir- Kurulum
pip, GitHub indirme·klonlama, Homebrew, FreeBSDpkg, Flox vb. ile yapılabilir; önerilen bağımlılıklar Python 3.7.4 ve üzeri, FFmpeg 1.0 ve üzeri, isteğe bağlı olarak RTMPDump'tır - Doğrudan URL indirme, web sayfası scraping'i, Google Videos arama tabanlı indirme, duraklatma·sürdürme, proxy, çerez yükleme, çıkarılan URL·JSON çıktısı gibi özellikler sunar; ancak bazı işlevler deneyseldir veya henüz kararlı değildir
You-Get ne yapar
- You-Get, web'den medya içeriği indiren küçük bir komut satırı aracıdır
- Hedef içerikler video, ses ve görseldir
- Web'de başka kolay bir indirme yöntemi olmadığında kullanılır
- Kullanım nedenleri olarak kişisel izleme için indirme, kaydetmesi engellenmiş çevrimiçi videolar üzerinde kontrol, kapalı teknolojiler veya tescilli JavaScript·Flash'tan kaçınma, hacker kültürü ve özgür yazılım yaklaşımı sunulur
- Başlıca özellikleri şunlardır
- YouTube, Youku, Niconico gibi popüler sitelerden video·ses indirme
- Web tarayıcısı olmadan medya oynatıcıda çevrimiçi video akışı
- İlgilenilen görselleri indirmek için web sayfalarını kazıma
- Binary dosyalar gibi rastgele HTML dışı içerikleri indirme
Kurulum ve çalışma ortamı
- Önerilen bağımlılıklar Python 3.7.4 ve üzeri, FFmpeg 1.0 ve üzeri, isteğe bağlı RTMPDump'tır
- 30 Mayıs 2022 duyurusuna göre Python 3.5, 3.6 ve 3.7 desteği sonunda sonlandırılacaktır
- Kurulum yolları çeşitlidir
- PyPI üzerinden
pip install you-get - Zsh kullanıcıları için Antigen ile
antigen bundle soimort/you-get - GitHub'daki kararlı
masterbranch'i veyadevelopbranch'ini indirme - Geliştiriciler için önerilen
git clone git://github.com/soimort/you-get.git - macOS için
brew install you-get - FreeBSD için
pkg install you-get - Mac, Linux, Windows WSL için
flox install you-get
- PyPI üzerinden
- Bash, Fish ve Zsh için shell otomatik tamamlama tanımları
contrib/completionaltında bulunur - Güncelleme, kurulum yöntemine göre
pip install --upgrade you-get, en güncel sürümü indirme veyadevelopbranch'ini zorla yeniden kurma ile yapılabilir
Temel indirme akışı
- Video indirirken önce
you-get -i URLveya--infoile kullanılabilir kalite ve formatlar görülebilir- Çıktıda site, başlık, stream, container, kalite, boyut ve indirme için kullanılacak
--itagörneği yer alır - Varsayılan indirme listedeki en üstteki öğeyi kullanır
- Çıktıda site, başlık, stream, container, kalite, boyut ve indirme için kullanılacak
- Farklı bir format istenirse çıktıda gösterilen
--itagdeğeri kullanılabilir- Örneğin YouTube'daki
Me at the zoovideosunda--itag=18ile mp4 seçilebilir
- Örneğin YouTube'daki
- YouTube videosunda altyazı varsa video dosyasıyla birlikte SubRip altyazı formatında indirilir
- Format seçimi hâlâ desteklenen sitelerin çoğunda genel bir özellik olarak uygulanmış değildir
- Bu durumda varsayılan indirme formatı en yüksek kalitedir
- FFmpeg, birden fazla parçaya bölünmüş olarak stream edilen videoların indirilip birleştirilmesi ve YouTube'daki 1080p üzeri yüksek çözünürlüklü videolar için gereklidir
- İndirme sonrası parçaları birleştirmek istenmiyorsa
--no-mergeveya-nkullanılabilir
- İndirme sonrası parçaları birleştirmek istenmiyorsa
URL, web sayfası ve arama tabanlı indirme
- Tam kaynak URL'si biliniyorsa
you-get URLile doğrudan indirilebilir- Örneğin bir JPEG görsel URL'si girildiğinde site, başlık, tür ve boyut gösterilir ve dosya kaydedilir
- Tam kaynak URL'si yerine bir web sayfası URL'si verilirse sayfa kazınarak ilgilenilen öğe bulunmaya çalışılır
- Bu özellik deneyseldir ve kusursuz değildir
- Tumblr, Blogger gibi popüler sitelerde büyük görselleri kazımada en iyi şekilde çalışır
- İnternetteki tüm siteler için geçerli evrensel bir kalıp yoktur
- URL yerine bir metin dizesi verilirse Google Videos üzerinde arama yapar ve en ilgili videoyu indirir
- Bunun tam olarak istenen sonuç olmama ihtimali vardır, ancak oldukça makul bir sonuç olma olasılığının yüksek olduğu belirtilir
İndirme kontrolü ve çalıştırma seçenekleri
- İndirme sırasında
Ctrl+Cile durdurulabilir ve çıktı dizininde geçici bir.downloaddosyası kalır- Aynı argümanlarla yeniden çalıştırılırsa son oturumdan devam eder
- Geçici uzantısı kaldırılmış tam dosya varsa indirme atlanır
--forceveya-f, zorla yeniden indirme yapar ve aynı adlı mevcut dosya ya da geçici dosyanın üzerine yazar
--output-dirveya-oile kayıt yolu,--output-filenameveya-Oile dosya adı belirtilebilir- Varsayılan video başlığında mevcut shell, işletim sistemi veya dosya sistemiyle uyumsuz özel karakterler olduğunda kullanışlıdır
- Toplu indirme script'lerinde belirli klasör ve belirli adla kaydetmek için de yararlıdır
--http-proxyveya-xile HTTP proxy belirtilebilir- Varsayılan olarak sistem proxy ayarı olan
http_proxyortam değişkeni uygulanır - Proxy'yi kapatmak için
--no-proxykullanılır - Youku gibi bazı sitelerde yalnızca Çin anakarasından erişilebilen video bilgilerini çıkarmak için
--extractor-proxyveya-ykullanılabilir
- Varsayılan olarak sistem proxy ayarı olan
--playerveya-p, indirme yerine videoyumpv,vlcgibi bir medya oynatıcıya aktarır- Tarayıcı oynatıcı olarak belirtilirse reklamlar veya yorum bölümü olmadan tarayıcıda izlenebilir
- Başka indirme yöneticilerini başlatmak için de kullanılabilir, ancak her zaman iyi uyum sağlamayabilir
Kimlik doğrulama, çıkarma verileri, desteklenen siteler
- Herkese açık olmayan videolar gibi hesap girişi gerektiren içerikler için
--cookiesveya-cile tarayıcı çerezleri verilmelidir- Şu anda desteklenen çerez formatları Mozilla
cookies.sqliteve Netscapecookies.txt'dir
- Şu anda desteklenen çerez formatları Mozilla
--urlveya-u, sayfadan çıkarılan indirilebilir kaynak URL'lerinin listesini yazdırır--json, çıkarma verilerinin özetini JSON formatında yazdırır- Bu özellik henüz kararlı değildir ve JSON şeması gelecekte geriye dönük uyumsuz değişiklikler içerebilir
- Desteklenen siteler listesinde YouTube, X(Twitter), VK, Vimeo, Tumblr, SoundCloud, Pinterest, Internet Archive, Instagram, Facebook, Dailymotion, Bandcamp, niconico, bilibili, Youku, Naver, TikTok, Zhihu ve diğerleri bulunur
- Video, görsel ve ses desteği siteye göre değişir
- Listede olmayan sitelerde genel çıkarıcı, sayfada ilgilenilen kaynakları bulup indirir
Hata bildirimi ve lisans
- İstenen içerik indirilemiyorsa önce Known Bugs kontrol edilmelidir
- Yeni hata bildirimi veya katkı öncesinde katkı kılavuzu okunmalıdır
- Hızlı sorular için Gitter kanalı #soimort/you-get kullanılabilir
- Yazılım MIT license ile dağıtılır
- Yazılım hiçbir garanti olmadan “olduğu gibi” sunulur
- Telif hakkı ihlali veya diğer yasa dışı kullanım amaçlarından yazar sorumlu değildir
- Depo yalnızca kodu sağlar; kullanım şekli kullanıcının takdirine bırakılmıştır
1 yorum
Hacker News yorumları
Bir dönem internet pahalı, bant genişliği düşüktü; yine de YouTube'da müzik ve ders dinlemeyi seviyordum. Bir noktada yalnızca ses akışını alırsam bant genişliği maliyetini %90 azaltabileceğimi fark ettim.
youtube-dlveyt-dlp'de, istenen biçim/kalitedeki URL'yi yazdıran-Gbayrağı vardı; bilgisayarda komut satırından URL'yi alıp VLC'ye koyarak kullanıyordum.Telefonda başta SSH ile dosyayı önce VPS'ye indirip sonra tekrar telefona çektiğim karmaşık bir dolambaçlı yol kullanıyordum; daha sonra telefon tarayıcısının URL'yi doğrudan oynatabildiğini öğrenince
youtube-dl -G -f bestaudio {url}için bir PHP ön yüzü yaptım.Artık çevrimiçi değil ve kodu da kaybettim ama aslında tek satırlık bir şeydi.
you-getde--url/-uile aynı amacı destekliyor gibi görünüyor; bu özelliğin ne kadar faydalı olduğunu belirtmek istedim.Ekranı kapatıp oynatınca pilden de %80 tasarruf ediliyor. YouTube da bunu biliyor olmalı; bu yüzden yalnızca ses akışını alan arka planda oynatmayı ücretli bir özellik haline getirmiş gibi görünüyor.
youtube-dlartık pek iyi çalışmıyor gibi; ben fork'u olan yt-dlp'yi kullanmak zorunda kaldım. Böyle projeler arasında geçiş yapmak her zaman tedirgin edici ama en azından yaygın kullanılıyor gibi görünüyor.node-redile onun için yaptım.Bağlantılar FIFO'ya gönderiliyor; küçük bir daemon bunları sırayla indirip özel bir incoming klasörüne kaydediyor. Bot yalnızca ses de alabiliyor, videonun tamamını da alabiliyor; ama annemin Telegram ID'si için yalnızca ses alacak şekilde ayarladım.
Bu klasör Jellyfin tarafından izleniyor; annem oradan indirebiliyor ya da doğrudan dinleyebiliyor. 2 yılda 1 TB'tan fazla sesli kitap indirdi ve bundan çok memnun.
Daemon kodu: https://gist.github.com/entropie/d265e94136b9777cc6b3190189b...
144p video tuhaf biçimde huzurlu ve rahatlatıcı. Parlak renkler ya da karmaşık ayrıntılarla dikkatiniz dağılmıyor; sadece dinlemeye odaklanabiliyorsunuz.
Bunu genellikle YouTube Premium olsa bile arka planda oynatılmayan üyelik özel videolarını oynatırken kullanıyorum. iOS her güncellendiğinde bu “glitch”i kapatmamaları için dua ediyorum.
Bu proje, düzeltme PR'ı olmadan yalnızca issue bildirilmesini istemiyor gibi görünüyor.
“you-get kullanırken bulduğunuz bir sorunu bildirmek için Pull Request açmanız gerekir…” gibi bir ifade var; böyle bir yöntemi daha önce görmemiştim.
Gereklilik, sorunun ayrıntılı açıklaması ve bu sorunu birim testi olarak ele alan en az bir commit. Buradaki “addressing” kelimesi pek iyi değil; “demonstrating” daha uygun olurdu bence.
you-getşu anda issue yönetiminde agresif bir yaklaşımı deniyor; hata raporlarının pull request yoluyla kodla ele alınması gerektiği belirtiliyor.https://github.com/soimort/you-get/commit/75b44b83826b3c2d9a...
Muhtemelen çok fazla spam vardı. Bu arada
tests/test.pybirkaç web sitesi için extractor'ı doğrudan çalıştırıyor gibi görünüyor; ağ istek ve yanıtlarının nerede mock'landığını bulamadım. PR açacak kişi için süreci basitleştirme amacı taşıyor olabilir.you-get'in bakımını ben yapmıyorum, onların neler yaşadığını bilmiyorum.Komut satırı programını düzgün çalıştırmayı bilmeyen kişilerin tekrar tekrar açtığı issue selini filtrelemenin etkili bir yolu olabilir.
Bu sayede projenin bakımı kolaylaşıp daha uzun süre ayakta kalacaksa, bence sorun yok.
Başlığı ve açıklamanın başını görünce, sayfadan rastgele bir şeyler çekmeye çalışan heuristic tabanlı bir araç olduğunu düşündüm. Belirli siteler için destek aracı olmadığında, yani çoğu zaman “yt-dlp desteklemediğinde” işe yarayan türden bir araç.
Ama aslında belli ölçüde popüler her kaynak için ayrı extractor'ı olan extractor tabanlı bir yapıymış. Sonuçta daha basit bir yt-dlp klonuna yakın değil mi diye düşünüyorum.
Bu hatayı sürekli alan başkaları var mı merak ediyorum
you-get: [error] oops, something went wrong.ile başlayıp ağ sorunlarını kontrol etmeyi, en yeni sürümü doğrulamayı, bilinen hatalara bakmayı ve--debugseçeneğini çalıştırmayı öneriyorDebug bayrağını kullanmak da pek yardımcı olmadı;
pattern = str(pattern, 'latin1')satırındaTypeError: decoding to str: need a bytes-like object, NoneType foundhatası aldımYaş kısıtını aşmanın mümkün olup olmadığını görmek istiyordum ama yaş kısıtı olmayan videolarda da aynı hata oldu
Pyenv gibi bir araçla daha yeni Python’a geçebilir ya da
docker run -it -v $(pwd):/mnt python:3.13 bashgibi bir komutla Docker imajı başlatıp yardımcı aracı onun içinde deneyebilirsinBunun neden yt-dlp’den daha iyi olduğunu açıklayabilir misiniz?
Örneğin özel bir mp4 birleştirici olması ilgimi çekti. Zaten ffmpeg varsa bunu elde daha iyi yapmanın neredeyse bir yolu yoktur herhalde
https://github.com/soimort/you-get/blob/develop/src/you_get/...
Siteye özel çıkarıcılar ve dönüştürücü kütüphaneleri olan ytdl tarzı bir medya indiricisini tam olarak “aptal” bir araç diye adlandırmak zor, ama ytdl benzeri daha fazla projenin ortaya çıkması yine de iyi
Desteklenen siteler listesinde Bandcamp’in neden olduğunu pek anlamıyorum. Bandcamp, sanatçıya önce ödeme yaparsanız dosyayı doğrudan indirmenize izin veriyor
Bu araçla indirebildiğiniz şeyler, sanatçının satın almadan önce ücretsiz dinlemeye izin vermesinden kaynaklanıyor. Bu araçla indirmek tamamen gereksiz ve biraz kaba bir davranış gibi görünüyor. Bandcamp’te çoğunlukla küçük bağımsız sanatçılar ve plak şirketleri var
Kişisel olarak ben de kararsız ya da yavaş ağlar ve pahalı operatörler yüzünden medyayı çevrimdışı tüketmek isteyebildiğim ya da buna mecbur kalabildiğim zamanlar oluyor. Bu, beğenirsem daha sonra ödeme yapmayacağım anlamına gelmiyor
İyi yapılmış görünüyor. Ama tüketici olarak yt-dlp yerine
you-getkullanmam için neden olduğunu merak ediyorumÇok geniş bir site yelpazesinde oldukça iyi çalışan yt-dlp’ye göre hangi avantajları var?
[1] https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites....
Dokümantasyonda “Google Videos’da ara ve indir:
$ you-get "Richard Stallman eats"” yazıyorDokümantasyonu pek sık okumam, ama bu kez okuyunca biraz mide bulandırıcı bir easter egg buldum
Hoşuma gitti. Chrome/Firefox için eşlik eden bir uzantı olsa,
you-get’i backend olarak kullanıp bunu pürüzsüz biçimde uygulasalar iyi olur diye hayal ediyorumBir adım daha ileri gidersek, YouTube’a girdiğinizde YouTube oynatıcısını bypass edip içeriği reklamsız olarak doğrudan oynatan bir
you-getuzantısı düşünülebilir. Sadece YouTube değil, başka platformlara da uygulanabilirhttps://addons.mozilla.org/en-US/firefox/addon/faststream/?u...