You-get: pengunduh sederhana untuk mengikis web
(github.com/soimort)- You-Get adalah utilitas baris perintah kecil untuk mengunduh konten media seperti video, audio, dan gambar dari web, dan digunakan saat tidak ada cara lain yang lebih praktis
- Dapat mengunduh video, gambar, dan audio dari berbagai situs seperti YouTube, Youku, niconico, Tumblr, SoundCloud, Instagram, bilibili, TikTok, dan lainnya, atau melakukan streaming video online ke pemutar media
- Dengan
--info, pengguna bisa memeriksa kualitas dan format yang tersedia lalu memilihnya dengan--itag, tetapi pemilihan format umumnya belum diimplementasikan secara umum di sebagian besar situs yang didukung, dan nilai bawaan adalah kualitas tertinggi - Instalasi dapat dilakukan lewat
pip, unduhan atau clone GitHub, Homebrew,pkgFreeBSD, Flox, dan lainnya; dependensi yang direkomendasikan adalah Python 3.7.4 atau lebih baru, FFmpeg 1.0 atau lebih baru, serta RTMPDump sebagai opsi - Menyediakan unduhan URL langsung, scraping halaman web, unduhan berbasis pencarian Google Videos, jeda dan lanjutkan, proxy, pemuatan cookie, hingga output URL hasil ekstraksi dan JSON, tetapi beberapa fitur masih eksperimental atau belum stabil
Apa yang dilakukan You-Get
- You-Get adalah utilitas baris perintah kecil untuk mengunduh konten media dari web
- Konten yang dituju mencakup video, audio, dan gambar
- Digunakan saat tidak ada cara unduh lain yang lebih mudah di web
- Alasan penggunaannya mencakup mengunduh untuk dinikmati secara pribadi, mendapatkan kendali atas video online yang dibatasi penyimpanannya, menghindari teknologi tertutup atau JavaScript/Flash proprietari, serta semangat budaya hacker dan perangkat lunak bebas
- Fitur utamanya meliputi:
- Mengunduh video dan audio dari situs populer seperti YouTube, Youku, dan Niconico
- Melakukan streaming video online di pemutar media tanpa browser web
- Mengikis halaman web untuk mengunduh gambar yang diminati
- Mengunduh konten non-HTML arbitrer seperti file biner
Instalasi dan lingkungan eksekusi
- Dependensi yang direkomendasikan adalah Python 3.7.4 atau lebih baru, FFmpeg 1.0 atau lebih baru, dan RTMPDump sebagai opsi
- Menurut pengumuman 30 Mei 2022, dukungan untuk Python 3.5, 3.6, dan 3.7 pada akhirnya akan dihentikan
- Ada beberapa jalur instalasi:
- Dari PyPI dengan
pip install you-get - Pengguna Zsh dapat memakai Antigen dengan
antigen bundle soimort/you-get - Mengunduh branch stabil
masteratau branchdevelopdari GitHub git clone git://github.com/soimort/you-get.gityang direkomendasikan untuk pengembang- Di macOS:
brew install you-get - Di FreeBSD:
pkg install you-get - Di Mac, Linux, dan Windows WSL:
flox install you-get
- Dari PyPI dengan
- Definisi pelengkapan shell untuk Bash, Fish, dan Zsh tersedia di
contrib/completion - Upgrade dapat dilakukan sesuai metode instalasi, seperti
pip install --upgrade you-get, mengunduh rilis terbaru, atau memasang ulang paksa branchdevelop
Alur unduhan dasar
- Saat mengambil video, pengguna dapat lebih dulu memeriksa kualitas dan format yang tersedia dengan
you-get -i URLatau--info- Output mencakup situs, judul, stream, container, kualitas, ukuran, dan contoh
--itagyang akan dipakai untuk mengunduh - Unduhan default memakai item teratas pada daftar
- Output mencakup situs, judul, stream, container, kualitas, ukuran, dan contoh
- Jika menginginkan format lain, gunakan nilai
--itagyang ditampilkan pada output- Sebagai contoh, pada video YouTube
Me at the zoo,--itag=18dapat dipakai untuk memilih mp4
- Sebagai contoh, pada video YouTube
- Jika video YouTube memiliki subtitle, subtitle tersebut akan diunduh bersama file video dalam format subtitle SubRip
- Pemilihan format belum diimplementasikan sebagai fitur umum untuk sebagian besar situs yang didukung
- Dalam kasus ini, format unduhan default adalah kualitas tertinggi
- FFmpeg diperlukan untuk mengunduh dan menggabungkan video yang di-stream dalam beberapa fragmen, serta untuk video YouTube resolusi tinggi 1080p ke atas
- Jika tidak ingin menggabungkan fragmen setelah unduhan, gunakan
--no-mergeatau-n
- Jika tidak ingin menggabungkan fragmen setelah unduhan, gunakan
Unduhan berbasis URL, halaman web, dan pencarian
- Jika memiliki URL sumber daya yang tepat, pengguna dapat langsung mengunduhnya dengan
you-get URL- Misalnya, saat memasukkan URL gambar JPEG, alat ini akan menampilkan situs, judul, tipe, dan ukuran lalu menyimpan file
- Jika yang diberikan adalah URL halaman web, bukan URL sumber daya yang tepat, alat ini akan mencoba mengikis halaman untuk menemukan item yang diminati
- Fitur ini eksperimental dan belum sempurna
- Bekerja paling baik untuk scraping gambar besar di situs populer seperti Tumblr dan Blogger
- Tidak ada pola universal yang berlaku untuk semua situs di internet
- Jika yang diberikan adalah string, bukan URL, alat ini akan mencari di Google Videos dan mengunduh video yang paling relevan
- Hasilnya mungkin tidak persis sama dengan yang diinginkan, tetapi disebut kemungkinan besar cukup masuk akal
Kontrol unduhan dan opsi eksekusi
- Unduhan dapat dihentikan dengan
Ctrl+C, dan file sementara.downloadakan tertinggal di direktori output- Menjalankannya lagi dengan argumen yang sama akan melanjutkan dari sesi terakhir
- Jika sudah ada file lengkap tanpa ekstensi sementara, unduhan akan dilewati
--forceatau-fakan memaksa unduhan ulang dan menimpa file yang ada atau file sementara dengan nama yang sama
- Jalur penyimpanan dapat ditentukan dengan
--output-diratau-o, dan nama file dapat ditentukan dengan--output-filenameatau-O- Berguna saat judul video default mengandung karakter khusus yang tidak cocok dengan shell, sistem operasi, atau sistem file saat ini
- Juga berguna saat menyimpan ke folder dan nama tertentu dalam skrip unduhan batch
- HTTP proxy dapat ditentukan dengan
--http-proxyatau-x- Secara default, pengaturan proxy sistem melalui variabel lingkungan
http_proxyakan diterapkan - Untuk menonaktifkan proxy, gunakan
--no-proxy - Pada beberapa situs seperti Youku,
--extractor-proxyatau-ydapat dipakai saat mengekstrak informasi video yang hanya dapat diakses dari daratan Tiongkok
- Secara default, pengaturan proxy sistem melalui variabel lingkungan
--playeratau-pakan mengirim video ke pemutar media sepertimpvatauvlcalih-alih mengunduhnya- Jika browser ditetapkan sebagai player, video bisa ditonton di browser tanpa iklan atau bagian komentar
- Opsi ini juga bisa dipakai untuk menjalankan pengelola unduhan lain, tetapi mungkin tidak selalu cocok
Autentikasi, data ekstraksi, dan situs yang didukung
- Untuk konten yang memerlukan login akun, seperti video nonpublik, cookie browser harus diberikan dengan
--cookiesatau-c- Format cookie yang saat ini didukung adalah Mozilla
cookies.sqlitedan Netscapecookies.txt
- Format cookie yang saat ini didukung adalah Mozilla
--urlatau-umenampilkan daftar URL sumber daya yang bisa diunduh dan diekstrak dari halaman--jsonmenampilkan ringkasan data ekstraksi dalam format JSON- Fitur ini belum stabil, dan skema JSON dapat mengalami perubahan yang memutus kompatibilitas di masa mendatang
- Daftar situs yang didukung mencakup YouTube, X(Twitter), VK, Vimeo, Tumblr, SoundCloud, Pinterest, Internet Archive, Instagram, Facebook, Dailymotion, Bandcamp, niconico, bilibili, Youku, Naver, TikTok, Zhihu, dan lainnya
- Dukungan untuk video, gambar, dan audio berbeda-beda per situs
- Untuk situs yang tidak ada dalam daftar, ekstraktor generik akan mencari sumber daya yang diminati di halaman lalu mengunduhnya
Pelaporan masalah dan lisensi
- Jika konten yang diinginkan tidak bisa diunduh, periksa dulu Known Bugs
- Sebelum membuat laporan masalah baru atau berkontribusi, baca panduan kontribusi
- Pertanyaan singkat dapat diajukan di kanal Gitter #soimort/you-get
- Perangkat lunak ini didistribusikan di bawah lisensi MIT
- Perangkat lunak disediakan “apa adanya” tanpa jaminan
- Penulis tidak bertanggung jawab atas pelanggaran hak cipta atau penggunaan untuk tujuan ilegal lainnya
- Repositori hanya menyediakan kode, dan cara penggunaannya sepenuhnya menjadi kebijakan pengguna
1 komentar
Pendapat Hacker News
Dulu, untuk beberapa waktu internet mahal dan bandwidth rendah, tapi saya suka mendengarkan musik dan kuliah di YouTube. Pada suatu titik saya sadar bahwa kalau hanya mengambil stream audio, biaya bandwidth bisa dikurangi 90%
youtube-dldanyt-dlppunya flag-Gyang mencetak URL untuk format/kualitas yang diminta, dan di komputer saya mendapatkan URL lewat command line lalu memasukkannya ke VLCDi ponsel, awalnya saya memakai workaround rumit: mengunduh file ke VPS lewat SSH dulu, lalu mengunduhnya lagi ke ponsel. Namun belakangan saya tahu browser ponsel bisa memutar URL secara langsung, jadi saya membuat frontend PHP untuk
youtube-dl -G -f bestaudio {url}Sekarang sudah tidak online dan kodenya juga hilang, tapi pada dasarnya itu hanya satu baris. Sepertinya
you-getjuga mendukung kegunaan yang sama lewat--url/-u, jadi saya ingin menunjukkan betapa bergunanya fitur iniJika diputar dengan layar dimatikan, baterai juga hemat 80%. YouTube juga tahu hal ini, jadi tampaknya mereka menjadikan pemutaran latar belakang yang hanya mengambil stream audio sebagai fitur berbayar
youtube-dlsepertinya sudah tidak bekerja dengan baik lagi, dan saya harus memakai forknya, yt-dlp. Berpindah proyek seperti ini selalu terasa mengkhawatirkan, tapi setidaknya tampaknya dipakai secara luasnode-redyang memproses tautan YouTube yang dibagikanTautan dikirim ke FIFO, lalu daemon kecil mengunduhnya secara berurutan dan menyimpannya ke folder incoming khusus. Bot bisa mengambil audio saja atau video lengkap, tetapi untuk Telegram ID ibu saya saya atur agar hanya mengambil audio
Folder ini dipantau oleh Jellyfin, sehingga ibu saya bisa mengunduh atau langsung mendengarkannya. Selama 2 tahun, beliau sudah mengunduh lebih dari 1 TB audiobook dan sangat menyukainya
Kode daemon: https://gist.github.com/entropie/d265e94136b9777cc6b3190189b...
Video 144p terasa anehnya damai dan nyaman. Tidak terdistraksi oleh warna yang mencolok atau detail yang rumit, dan bisa fokus mendengarkan saja
Saya terutama memakainya untuk memutar video khusus member yang tidak bisa diputar di latar belakang meski punya YouTube Premium. Setiap kali iOS diperbarui, saya hanya berharap “glitch” ini tidak ditutup
Proyek ini tampaknya tidak menginginkan orang melaporkan issue saja tanpa PR perbaikan
Kalimatnya seperti “Untuk melaporkan masalah yang ditemukan saat menggunakan you-get, Anda harus membuka Pull Request…”, dan saya belum pernah melihat pendekatan seperti ini sebelumnya
Persyaratannya adalah deskripsi masalah yang rinci dan minimal satu commit yang menangani masalah itu sebagai unit test. Kata “addressing” di sini kurang tepat; rasanya “demonstrating” akan lebih baik
you-getsaat ini sedang bereksperimen dengan pendekatan agresif untuk penanganan issue, dan laporan bug harus ditangani dalam bentuk kode melalui pull requesthttps://github.com/soimort/you-get/commit/75b44b83826b3c2d9a...
Mungkin spamnya terlalu banyak. Sebagai catatan,
tests/test.pytampaknya menjalankan extractor secara langsung terhadap berbagai situs web, dan saya tidak menemukan di mana request dan response jaringan di-mock. Bisa jadi tujuannya memang menyederhanakan proses bagi orang yang membuat PRyou-get, jadi saya tidak tahu apa yang mereka hadapiBisa jadi ini cara efektif untuk menyaring banjir issue berulang dari orang-orang yang bahkan tidak bisa menjalankan program command line dengan benar
Kalau ini membuat proyek lebih mudah dirawat dan bertahan lebih lama, menurut saya tidak masalah
Dari judul dan bagian awal deskripsinya saja, saya mengira ini adalah alat berbasis heuristik yang mencoba menangkap apa saja dari sebuah halaman. Maksudnya alat yang berguna ketika tidak ada dukungan untuk situs tertentu, yaitu dalam kebanyakan kasus “ketika tidak didukung oleh yt-dlp”
Namun ternyata sebenarnya strukturnya berbasis extractor, dengan extractor terpisah untuk setiap sumber yang cukup populer. Pada akhirnya, bukankah ini lebih mirip klon yt-dlp yang lebih sederhana?
Penasaran apakah ada orang lain yang terus mengalami galat ini
Dimulai dengan
you-get: [error] oops, something went wrong., lalu menyarankan untuk memeriksa masalah jaringan, memastikan versi terbaru, memeriksa bug yang diketahui, dan menjalankan opsi--debugMenggunakan flag debug juga tidak terlalu membantu, dan pada
pattern = str(pattern, 'latin1')munculTypeError: decoding to str: need a bytes-like object, NoneType foundSaya mencoba melihat apakah bisa melewati pembatasan usia, tetapi galat yang sama juga terjadi pada video tanpa pembatasan usia
Bisa beralih ke Python terbaru dengan alat seperti Pyenv, atau menjalankan image Docker seperti
docker run -it -v $(pwd):/mnt python:3.13 bashlalu mencoba utilitasnya di dalamnyaBisa jelaskan kenapa ini lebih baik daripada yt-dlp?
Misalnya, adanya joiner mp4 khusus itu menarik. Kalau sudah ada ffmpeg, rasanya hampir tidak ada cara untuk membuat sendiri yang lebih baik
https://github.com/soimort/you-get/blob/develop/src/you_get/...
Downloader media bergaya ytdl dengan extractor dan library konverter khusus per situs sulit disebut sebagai alat yang benar-benar “bodoh”, tetapi tetap bagus kalau ada lebih banyak proyek seperti ytdl
Saya kurang paham kenapa Bandcamp ada di daftar situs yang didukung. Bandcamp memungkinkan Anda mengunduh file begitu saja jika Anda membayar artisnya terlebih dahulu
Yang bisa diambil dengan alat ini hanya karena artis mengizinkan orang mendengarkannya gratis sebelum membeli. Mengunduhnya dengan alat ini tampak sama sekali tidak perlu dan agak tidak sopan. Bandcamp terutama berisi artis dan label independen kecil
Secara pribadi, kadang saya ingin atau perlu mengonsumsi media secara offline karena jaringan yang tidak stabil atau lambat, atau operator yang mahal. Itu bukan berarti saya tidak akan membayar nanti kalau saya menyukainya
Tampaknya dibuat dengan baik. Namun dari sisi konsumen, saya penasaran apa alasan memakai
you-getalih-alih yt-dlpApa keunggulannya dibanding yt-dlp yang bekerja cukup baik di banyak sekali situs?
[1] https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites....
Di dokumentasinya tertulis “Cari dan unduh dari Google Videos:
$ you-get "Richard Stallman eats"”Saya tidak sering membaca dokumentasi, tetapi kali ini saya membacanya dan menemukan easter egg yang agak menjijikkan
Saya suka. Saya membayangkan akan bagus kalau ada ekstensi pendamping untuk Chrome/Firefox yang memakai
you-getsebagai backend dan diimplementasikan dengan mulusLebih jauh lagi, bisa dibayangkan ekstensi
you-getyang, saat membuka YouTube, melewati pemutar YouTube dan memutar konten langsung tanpa iklan. Ini bisa diterapkan bukan hanya ke YouTube, tetapi juga ke platform lainhttps://addons.mozilla.org/en-US/firefox/addon/faststream/?u...