6 poin oleh GN⁺ 2024-10-28 | 1 komentar | Bagikan ke WhatsApp
  • 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, pkg FreeBSD, 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 master atau branch develop dari GitHub
    • git clone git://github.com/soimort/you-get.git yang 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
  • 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 branch develop

Alur unduhan dasar

  • Saat mengambil video, pengguna dapat lebih dulu memeriksa kualitas dan format yang tersedia dengan you-get -i URL atau --info
    • Output mencakup situs, judul, stream, container, kualitas, ukuran, dan contoh --itag yang akan dipakai untuk mengunduh
    • Unduhan default memakai item teratas pada daftar
  • Jika menginginkan format lain, gunakan nilai --itag yang ditampilkan pada output
    • Sebagai contoh, pada video YouTube Me at the zoo, --itag=18 dapat dipakai untuk memilih mp4
  • 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-merge atau -n

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 .download akan 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
    • --force atau -f akan memaksa unduhan ulang dan menimpa file yang ada atau file sementara dengan nama yang sama
  • Jalur penyimpanan dapat ditentukan dengan --output-dir atau -o, dan nama file dapat ditentukan dengan --output-filename atau -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-proxy atau -x
    • Secara default, pengaturan proxy sistem melalui variabel lingkungan http_proxy akan diterapkan
    • Untuk menonaktifkan proxy, gunakan --no-proxy
    • Pada beberapa situs seperti Youku, --extractor-proxy atau -y dapat dipakai saat mengekstrak informasi video yang hanya dapat diakses dari daratan Tiongkok
  • --player atau -p akan mengirim video ke pemutar media seperti mpv atau vlc alih-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 --cookies atau -c
    • Format cookie yang saat ini didukung adalah Mozilla cookies.sqlite dan Netscape cookies.txt
  • --url atau -u menampilkan daftar URL sumber daya yang bisa diunduh dan diekstrak dari halaman
  • --json menampilkan 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

 
GN⁺ 2024-10-28
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-dl dan yt-dlp punya flag -G yang mencetak URL untuk format/kualitas yang diminta, dan di komputer saya mendapatkan URL lewat command line lalu memasukkannya ke VLC
    Di 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-get juga mendukung kegunaan yang sama lewat --url / -u, jadi saya ingin menunjukkan betapa bergunanya fitur ini
    Jika 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

    • Browser Brave Mobile bisa mengaktifkan pemutaran audio video di latar belakang, jadi tidak perlu langganan seperti YouTube Premium
    • youtube-dl sepertinya 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 luas
    • Ibu saya sangat menyukai audiobook, jadi saya membuatkan bot Telegram dengan node-red yang memproses tautan YouTube yang dibagikan
      Tautan 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...
    • Dalam kondisi bandwidth rendah, saya sering memilih 144p. Ukurannya hampir sama dengan stream khusus audio berkualitas baik, tetapi ada keuntungan bisa melihat pembicara setidaknya sekali setiap 45 menit. Baterai juga tetap bisa dihemat
      Video 144p terasa anehnya damai dan nyaman. Tidak terdistraksi oleh warna yang mencolok atau detail yang rumit, dan bisa fokus mendengarkan saja
    • Di iOS Safari, setelah keluar dari aplikasi Safari lalu cepat menekan tombol putar video di antarmuka Now Playing, audio video YouTube bisa “terpelintir” menjadi pemutaran latar belakang
      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

    • Seperti dikatakan orang lain, maksudnya tampaknya bukan perbaikannya sendiri, melainkan mereka menginginkan test yang gagal
      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
    • Versi bahasa Tionghoanya punya header tambahan yang bisa diterjemahkan sebagai “Untuk mencegah penyalahgunaan GitHub Issues, issue biasa tidak diterima”. Teks bahasa Inggris lamanya berbunyi seperti ini
      you-get saat ini sedang bereksperimen dengan pendekatan agresif untuk penanganan issue, dan laporan bug harus ditangani dalam bentuk kode melalui pull request
      https://github.com/soimort/you-get/commit/75b44b83826b3c2d9a...
      Mungkin spamnya terlalu banyak. Sebagai catatan, tests/test.py tampaknya 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 PR
    • Sepertinya maksudnya adalah mengirimkan PR yang menyertakan test yang bisa menunjukkan apakah masalah sudah terselesaikan
    • Gagasan mendorong orang untuk mencoba membuat test atau bahkan perbaikan lengkap itu menarik, tetapi mengatakan hanya itu yang akan diterima terasa agak berlebihan. Meski begitu, saya bukan maintainer you-get, jadi saya tidak tahu apa yang mereka hadapi
      Bisa jadi ini cara efektif untuk menyaring banjir issue berulang dari orang-orang yang bahkan tidak bisa menjalankan program command line dengan benar
    • Menulis test yang gagal relatif mudah, dan sangat mengurangi pekerjaan triage issue. Risiko GitHub Issues berubah menjadi forum dukungan juga berkurang
      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 --debug
    Menggunakan flag debug juga tidak terlalu membantu, dan pada pattern = str(pattern, 'latin1') muncul TypeError: decoding to str: need a bytes-like object, NoneType found
    Saya mencoba melihat apakah bisa melewati pembatasan usia, tetapi galat yang sama juga terjadi pada video tanpa pembatasan usia

    • Sebaiknya periksa versi Python
      Bisa beralih ke Python terbaru dengan alat seperti Pyenv, atau menjalankan image Docker seperti docker run -it -v $(pwd):/mnt python:3.13 bash lalu mencoba utilitasnya di dalamnya
  • Bisa jelaskan kenapa ini lebih baik daripada yt-dlp?

    • Pertanyaan yang menarik. Dependensinya hanya satu library, tetapi saya penasaran seberapa banyak kode yang sebenarnya ditulis sendiri
      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/...
    • Saya penasaran bagaimana Anda menyimpulkan bahwa ini lebih baik daripada yt-dlp. Di area yang terus berusaha diblokir oleh Google, menurut saya semakin banyak pilihan semakin baik
  • 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

    • Daftar situs yang didukung bukan pernyataan moral tentang di mana alat ini seharusnya digunakan. Itu hanya daftar situs populer tempat alat ini bekerja
    • Menurut saya alat ini masih bisa digunakan setelah berlangganan atau membeli. Orang mengunduh konten yang sudah mereka bayar dengan alat otomasi seperti ini untuk mengurangi kerepotan login ke 5 aplikasi dari ekosistem tertutup yang berbeda-beda
    • Tidak semua orang tinggal di negara yang bisa membayar Bandcamp
      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
    • Pada tingkat pendapatan berapa, menurut para pembajak, mencuri konten tertentu menjadi bermoral atau tidak bermoral?
    • Tidak semua orang setuju bahwa artis harus dibayar untuk karya mereka
  • Tampaknya dibuat dengan baik. Namun dari sisi konsumen, saya penasaran apa alasan memakai you-get alih-alih yt-dlp
    Apa 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-get sebagai backend dan diimplementasikan dengan mulus
    Lebih jauh lagi, bisa dibayangkan ekstensi you-get yang, saat membuka YouTube, melewati pemutar YouTube dan memutar konten langsung tanpa iklan. Ini bisa diterapkan bukan hanya ke YouTube, tetapi juga ke platform lain