Kolektor tembaga
Dalam cerita yang bagus, pasti ada penjahat, dan karena karakter seperti itu, saya memutuskan untuk memilih kolektor tembaga - pencuri yang mengumpulkan logam non-besi di daerah tersebut. Merekalah yang mendorong pembuatan youtube-dl. Pada tahun 2006, desa saya terletak 5-10 kilometer dari kota kecil Aviles di Spanyol utara. Penduduk Aviles menikmati infrastruktur dan layanan yang baik, termasuk TV kabel dan akses internet ADSL. Tidak ada yang seperti itu di daerah saya: terlalu jauh dari pertukaran telepon ADSL, dan kolektor tembaga selama bertahun-tahun mencuri kabel tembaga dalam perjalanan ke sana, kadang-kadang menyebabkan gangguan pada layanan telepon dan memaksa perusahaan telepon untuk mengganti kabel tersebut dengan yang lebih lemah dan lebih tipis, karena mereka, juga, kemungkinan besar akan dicuri. Ini berlangsung selama beberapa tahun.
Satu-satunya cara untuk mengakses Internet dari rumah adalah dengan modem 56k V.90 . Faktanya, kualitas koneksi sangat buruk sehingga perlu untuk mengurangi kecepatan menjadi 33,6 kbps untuk stabilitas. Kecepatan unduh sebenarnya jarang melebihi 4KB / s. Pada saat yang sama, layanan video YouTube yang menarik muncul di Internet, dengan cepat mendapatkan popularitas, dan pada akhir tahun yang sama dibeli oleh Google.
Tetap terjaga sepanjang malam untuk menonton
Menonton video YouTube apa pun dengan koneksi 33.6Kbps adalah pengalaman yang menyiksa. Hampir semua video membutuhkan waktu lama untuk diunduh. Misalnya, perlu 40 menit untuk mengunduh video pendek 10MB, yang membuat streaming tidak mungkin dilakukan. Video yang lebih panjang dan berkualitas lebih tinggi membutuhkan waktu beberapa jam dan menghabiskan seluruh saluran, belum lagi fakta bahwa koneksi dapat terputus kapan saja - dan pengunduhan harus dimulai dari awal! Bayangkan Anda sangat menyukai video tertentu dan ingin menontonnya untuk kedua atau ketiga kalinya. Pengulangan proses ini praktis menjadi tindakan masokisme.
Dalam situasi seperti itu, saya mulai memikirkan kemungkinan mengunduh file video: jika videonya menarik, memiliki salinannya memungkinkan Anda untuk meninjaunya beberapa kali nanti. Dan jika program pengunduhan benar-benar bagus, maka setelah koneksi terputus, ia akan dapat melanjutkan pengunduhan dari tempat yang sama!
Ada solusi lain untuk mengunduh video YouTube pada saat itu, termasuk skrip Greasemonkey yang cukup populer... Secara kebetulan, saya tidak dapat mengonfigurasi solusi apa pun yang ada agar berfungsi, jadi saya memutuskan untuk menulis alat saya sendiri. Beginilah cara program youtube-dl muncul. Lebih nyaman dan cepat bagi saya untuk meluncurkannya dari konsol, jadi tidak ada antarmuka grafis. Python dipilih karena memiliki pustaka standar yang luas, dengan efek samping yang menyenangkan karena ia akan bekerja pada platform apa pun.
Peluncuran Ethereal
Versi pertama hanya berfungsi di YouTube. Program tersebut praktis tidak memiliki arsitektur normal, karena tidak diperlukan. Ditulis sebagai naskah sederhana, itu langsung ke intinya. Ukuran program adalah 223 baris, dengan hanya 143 kode aktual, 44 baris komentar, dan 36 baris kosong. Nama tersebut dipilih untuk kenyamanan murni: youtube-dl jelas, dapat dimengerti, sulit untuk dilupakan dan secara intuitif dapat dimasukkan sebagai "YOU-TAB" di konsol.
Karena saya telah menggunakan Linux selama beberapa tahun, saya memutuskan untuk menerbitkan program di bawah lisensi gratis (MIT dalam versi pertama) jika ada yang merasa berguna. Saat itu, GitHub belum muncul dan kami harus puas dengan SourceForge . Tetapi di sana, saat membuat proyek baru, Anda harus mengisi formulir yang membosankan. Jadi, alih-alih SourceForge, saya dengan cepat memposting kode kehalaman pribadi , yang diberikan oleh penyedia Internet. Meskipun hal ini tampak tidak biasa saat ini, ISP biasanya memberi pengguna alamat email dan beberapa hosting tempat mereka dapat mengunggah file melalui FTP. Dengan demikian, Anda dapat meng-host situs web pribadi Anda di web. Versi pertama dari program ini diterbitkan pada 08.08.2006, meskipun saat itu saya telah menggunakannya selama beberapa minggu.
Selama proses pengembangan, penting untuk memahami operasi browser Firefox saat menonton video di YouTube. Jika saya ingat dengan benar, Firefox belum memiliki alat pengembangan untuk menganalisis aktivitas jaringan. Koneksi dibuat terutama melalui HTTP, jadi Wireshark, yang pada saat itu dikenal sebagai Ethereal, menjadi alat yang sangat berharga untuk menganalisis lalu lintas jaringan. Saya menulis youtube-dl dengan tujuan khusus untuk melakukan hal yang sama seperti yang dilakukan browser web saat mengekstrak video. Program ini bahkan mengirim string agen pengguna yang sama, disalin kata demi kata dari Firefox untuk Linux, untuk memastikan situs tersebut mengirim program ke halaman web yang sama dengan browser.
Selain itu, YouTube menggunakan pemutar Adobe Flash saat itu.... Video tersebut disajikan sebagai file Flash Video (FLV), jadi plugin berpemilik diperlukan untuk melihatnya di browser (banyak yang akan mengingat perpustakaan libflashplayer.so yang ditakuti), jadi alat pengembangan dalam browser tidak berguna. Plugin berpemilik ini telah menjadi sumber kerentanan dan masalah keamanan yang konstan. Saya memiliki ekstensi Firefox bernama Flashblock yang mencegah konten dimuat secara default dan menggantinya dengan placeholder dengan ikon yang dapat diklik, jadi konten hanya akan dimuat berdasarkan permintaan, dan pustaka plugin tidak akan digunakan kecuali pengguna memintanya.
Selain meningkatkan keamanan, Flashblock memiliki dua manfaat lainnya. Pertama, ini menghapus banyak spanduk yang berisik dan tidak menyenangkan, yang juga dapat menyebabkan masalah keamanan. Kedua, ini memfasilitasi analisis proses memuat video ke pemutar. Saya menunggu halaman dimuat sepenuhnya dan kemudian meluncurkan Wireshark tepat sebelum mengklik ikon Flashblock, memulai pengunduhan video. Jadi, satu-satunya lalu lintas yang dianalisis terkait dengan plugin yang memuat aplikasi pemutar video dan aplikasi itu sendiri memuat video.
Perlu juga dicatat bahwa plugin Flash Player pada saat itu sudah mengupload salinan video ke hard disk (di Linux mereka disimpan di
/tmp), dan banyak pengguna mengandalkan fungsi ini untuk membuat salinan tanpa alat tambahan. Jadi youtube-dl lebih nyaman hanya karena ia mengekstrak nama video dan menugaskannya ke file secara otomatis, misalnya.
Oh, daging segar!
Akhirnya, Flash Player diubah untuk membuat video lebih sulit diekstrak . Salah satu langkah pertama adalah memutus tautan ke file video setelah dibuat sehingga i-node masih ada dan tersedia untuk proses yang menggunakannya (hingga ditutup), menjaga agar file tidak terlihat dari sudut pandang sistem file. Masih mungkin untuk mengambil file menggunakan filesystem
/procuntuk memeriksa deskriptor file yang digunakan oleh proses browser, tetapi dengan masing-masing langkah kecil ini youtube-dl menjadi semakin nyaman.
Seperti banyak penggemar open source pada saat itu, saya menggunakan Freshmeat untuk berlangganan rilis baru proyek yang menarik minat saya. Ketika saya membuat youtube-dl, saya juga membuat entri proyek di situs web ini sehingga pengguna dapat diberi tahu tentang rilis baru dan daftar perubahan yang mencantumkan fitur, perbaikan, dan peningkatan baru. Dalam katalog Freshmeat dimungkinkan untuk mencari proyek-proyek baru dan menarik; pembaruan terbaru diterbitkan pada halaman pertama, biasanya beberapa lusin per hari. Saya kira dengan cara ini Joe Barr (istirahat dalam damai), editor linux.com , mengetahui tentang program tersebut dan memutuskan untuk menulis artikel tentangnyakembali pada tahun 2006. Linux.com adalah salah satu sumber daya paling populer bagi penggemar Linux pada saat itu, bersama dengan situs klasik lainnya seperti Slashdot atau Linux Weekly News. Setidaknya untuk saya.
Sejak saat itu, popularitas youtube-dl mulai tumbuh, dan dari waktu ke waktu saya mulai menerima surat terima kasih atas kreasi dan dukungan program tersebut.
Penghitungan lalu lintas
Maju cepat ke 2008. Popularitas youtube-dl terus tumbuh perlahan, dan pengguna sering diminta untuk membuat program serupa untuk diunduh dari situs lain, dan saya menyerah pada permintaan ini beberapa kali. Pada titik inilah saya memutuskan untuk menulis ulang program dari awal untuk menerapkan dukungan asli untuk beberapa situs video. Saya punya beberapa ide sederhana tentang bagaimana membagi bagian dalam program menjadi beberapa bagian untuk menyederhanakan bagian yang paling penting: pemuat file terpisah, umum untuk semua situs web, dan secara terpisah - ekstraktor informasi: objek (kelas) yang berisi kode khusus untuk tertentu situs video. Ketika URL atau pseudo-URL diberikan, ekstraktor diminta untuk mencari tahu mana yang dapat menangani jenis URL ini, dan kemudian diminta untuk mengekstrak informasi tentang video atau daftar video tersebut.dengan tujuan utama mendapatkan URL video atau daftar URL dengan format yang tersedia serta beberapa metadata lain seperti judul seperti.
Saya juga mengambil kesempatan untuk mengubah sistem kontrol versi dan memindahkan proyek ke hosting lain. Pada saat itu, Git memenangkan perang kontrol versi terdistribusi, tetapi Mercurial juga memiliki banyak pengguna. Saya menguji keduanya dan memutuskan bahwa saya lebih menyukai Mercurial daripada Git. Saya mulai menggunakannya untuk youtube-dl dan memposting proyek di Bitbucketyang merupakan pilihan yang wajar. Saat itu, Bitbucket hanya menghosting repositori Mercurial, dan GitHub hanya menghosting Git. Keduanya diluncurkan pada 2008 dan menghirup udara segar dibandingkan SourceForge. Ruang nama proyek yang berbeda untuk setiap pengguna (yaitu, nama proyek Anda tidak harus unik secara global, tetapi unik hanya untuk proyek Anda) dengan sistem kontrol versi terdistribusi berarti Anda dapat mempublikasikan proyek pribadi Anda dalam hitungan menit ke salah satu dari dua situs tersebut ... Bagaimanapun, memindahkan riwayat proyek ke Git dan memindahkan proyek ke GitHub mengikuti beberapa tahun kemudian .
Saat menulis ulang proyek, saya seharusnya tidak ragu mengambil kesempatan dan menamainya kembali, tetapi saya tidak ingin membingungkan pengguna yang ada dan meninggalkan nama dalam upaya untuk membuat program sedikit populer.
Konteks teknologi juga sedikit berubah tahun itu. Paket data seluler mulai mendapatkan daya tarik, dan pada akhir tahun itu saya membeli modem 3G dan paket data yang untuk pertama kalinya memungkinkan saya menjelajahi web dengan kecepatan yang layak. Bagaimanapun, itu tidak membuat saya berhenti menggunakan youtube-dl. Saya membayar 45 € per bulan, tetapi batas data bulanan dibatasi hingga 5 GB, artinya saya hanya dapat menggunakan rata-rata sekitar 150 MB per hari. Dan kecepatannya memungkinkan Anda mengunduh lebih banyak, jadi Anda harus memantau lalu lintas dan memilih konten secara selektif, menghindari unduhan dalam jumlah besar jika memungkinkan. Oleh karena itu, youtube-dl banyak membantu mencegah banyak unduhan file video besar dan tetap dalam rencana tarif.
Episode: Rumah Baru
Beberapa waktu kemudian, di penghujung tahun 2009, saya pindah dan akhirnya mulai tinggal bersama pacar saya (sekarang istri dan ibu dua anak saya) di Aviles. Untuk pertama kalinya, saya memiliki internet berkecepatan tinggi, yang telah menjadi standar bagi banyak teman dan keluarga saya selama bertahun-tahun. Saya ingat itu adalah koneksi kabel 100/10 Mbps (unduh / unggah) tanpa batasan lalu lintas. Ini jelas menandai titik balik dalam seberapa sering saya menggunakan youtube-dl dan seberapa banyak perhatian yang saya berikan pada proyek tersebut.
Kemudian, saya akhirnya mem-port kode tersebut ke Git dan GitHub. Saat itu, YouTube mulai bereksperimen dengan video HTML5 yang akan menjadi default sekitar tahun 2015. Pada tahun 2011, saya bekerja penuh waktu selama beberapa tahun sebagai insinyur perangkat lunak, dan secara umum, setelah kembali dari pekerjaan, saya tidak benar-benar ingin memprogram dan menyesuaikan youtube-dl atau mengimplementasikan, atas permintaan pengguna, fungsi yang saya sendiri tidak akan gunakan secara pribadi.
Pada paruh kedua tahun 2011, di tengah-tengah proyek penting lainnya, saya memutuskan untuk meninggalkan pos pengelola youtube-dl, karena saya tidak dapat mengatasi tugas tersebut selama beberapa bulan. Philip Hagemeisterterbukti sebagai programmer yang hebat, dan dia mengirimkan beberapa permintaan pull ke GitHub dengan perbaikan yang diminati banyak orang. Saya memberinya akses untuk berkomitmen ke repositori youtube-dl saya, dan pada dasarnya itu adalah akhir dari cerita saya. Log upstream menunjukkan aliran komitmen yang terus-menerus hingga Maret 2011 dan kemudian lompatan ke Agustus 2011 dengan penggabungan dari Philip. Saya telah sejak membuat satu-satunya komit pada 2013 untuk perubahan dalam rg3.github.com kode sumber untuk rg3.github.io ketika GitHub pindah halaman kustom dari USERNAME.github.com ke USERNAME.github.io untuk masalah keamanan menghindari dengan kode berbahaya di domainnya sendiri, jika saya ingat dengan benar.
Meskipun saya tidak berpartisipasi dalam pengembangan youtube-dl, selama bertahun-tahun halaman proyek resmi masih di bawah akun saya pada
https://github.com/rg3/youtube-dldan https://rg3.github.io/youtube-dl/. Saya perlu muncul saat Philip atau pengelola lainnya meminta akses komit ke pengembang tambahan, seperti Filippo Valsorda atau Sergey M. , salah satu pengelola saat ini. Sayangnya, pada 2019 ada masalah kecil dengan troll di pelacak, dan hanya pemilik proyek yang diizinkan untuk memblokir pengguna. Hal ini membuat kami akhirnya memindahkan proyek ke organisasi GitHub, di mana setiap orang yang memiliki akses ke komitmen diundang (walaupun tidak semua orang bergabung). Organisasi GitHub memungkinkan pengelola untuk bertindak lebih bebas, tanpa menarik saya sedikit pun.
Saya ingin sekali lagi mengucapkan terima kasih yang paling tulus kepada berbagai pengelola proyek selama bertahun-tahun yang telah meningkatkan kode secara signifikan, dapat menciptakan komunitas nyata di sekitar dan yang membuat proyek jauh lebih populer daripada ketika saya keluar hampir 10 tahun yang lalu.
Offline dan gratis
Saya ingin mencatat sekali lagi bahwa tujuan youtube-dl sebagai alat praktis tidak berubah selama 14 tahun keberadaannya. Sebelum dan sesudah menerima surat DMCA dari RIAA, banyak yang membicarakan tentang bagaimana mereka menggunakan youtube-dl untuk tujuan yang berbeda .
Bagi saya, selalu akses offline ke video yang sudah tersedia untuk masyarakat umum di Internet. Dalam dunia jaringan seluler dan konektivitas yang selalu aktif, Anda mungkin bertanya apakah itu benar-benar diperlukan. Saya rasa begitu, jika Netflix, Amazon, Disney, dan HBO telah menerapkan fungsi serupa di aplikasi streaming mereka yang sangat populer. Untuk perjalanan jauh atau perjalanan ke luar negeri, terutama dengan anak-anak, atau di bawah tanah, atau di pesawat terbang, atau di tempat dengan koneksi yang buruk atau terbatas, sangatlah nyaman untuk memiliki akses offline ke podcast, ceramah, ulasan, berita, atau karya seni.
Efek samping tambahan dari youtube-dl adalah akses ke konten ketika antarmuka online tidak sesuai dengan tugasnya. Plugin Flash berpemilik lama tidak berfungsi untuk setiap platform dan arsitektur. Saat ini, browser dapat memutar video, tetapi terkadang gagal memanfaatkan decoding GPU yang efisien dan menghabiskan banyak daya baterai. Youtube-dl dapat digunakan dengan pemutar miliknya sendiri untuk membuat video tertentu dapat diputar dan / atau efisien. Misalnya, pemutar mpv menyertakan dukungan bawaan untuk youtube-dl. Anda hanya perlu meneruskan URL ke sana dan menggunakan youtube-dl untuk mengakses aliran video dan memutarnya tanpa menyimpan apa pun ke hard drive Anda.
Antarmuka online default mungkin tidak memiliki fitur aksesibilitas yang perlu dinavigasi oleh beberapa orang, atau filter buta warna, lagi-lagi tersedia dari aplikasi pemutar video asli.
Last but not least, alat seperti youtube-dl memungkinkan Anda mengakses video online hanya dengan menggunakan perangkat lunak gratis. Saya memahami bahwa tidak banyak pendukung perangkat lunak yang sepenuhnya bebas dan sumber terbuka di dunia. Saya bahkan tidak menganggap diri saya seperti itu, pada umumnya. Perangkat lunak berpemilik selalu hadir dalam kehidupan modern kita dan dikirimkan kepada kita setiap hari sebagai sejumlah besar baris Javascript di browser, dengan banyak tujuan berbeda dan tidak selalu demi kepentingan terbaik pengguna. Buktinya adalah munculnya GDPR, dengan segala kekurangan dan masalahnya. Mengakses video online dengan youtube-dl menjamin ketenangan pikiran penyamaran lengkap di mana uBlock Origin atau Privacy Badger nyaris tidak menenangkan.