كيف نشأ برنامج youtube-dl

كما تعلم ، في الوقت الحالي ، يتم حظر مستودع youtube-dl على GitHub بواسطة طلب DMCA من RIAA. على الرغم من أنني لا أستطيع التعليق على الخطط الحالية للمشرفين أو المناقشات الحالية ، ولكن بعد الاتهامات التي وجهتها RIAA ، اعتقدت أنه سيكون من المفيد لي بصفتي مبتكر البرنامج والمشرف الأول التحدث عن السنوات الأولى من youtube-dl.



جامعي النحاس



في أي قصة جيدة ، يجب أن يكون هناك شرير ، وعلى هذا النحو قررت أن أختار جامعي النحاس - اللصوص الذين جمعوا المعادن غير الحديدية في المنطقة. هم الذين دفعوا إلى إنشاء youtube-dl. في عام 2006 ، كانت قريتي تقع على بعد 5-10 كيلومترات من بلدة أفيليس الصغيرة في شمال إسبانيا. تمتع سكان Aviles ببنية تحتية وخدمات جيدة ، بما في ذلك تلفزيون الكابل والوصول إلى الإنترنت ADSL. لم يكن هناك شيء من هذا القبيل في منطقتي: بعيدًا جدًا عن مقسم هاتف ADSL ، وسرقة جامعي النحاس لسنوات الأسلاك النحاسية في الطريق إليها ، مما تسبب في بعض الأحيان في انقطاع الاتصال الهاتفي وإجبار شركة الهاتف على استبدال تلك الأسلاك بأسلاك أضعف وأرق ، لأن هم أيضًا من المحتمل أن يتم سرقتهم. استمر هذا لعدة سنوات.



كانت الطريقة الوحيدة للاتصال بالإنترنت من المنزل هي مودم 56 كيلو V.90 . في الواقع ، كانت جودة الاتصال سيئة للغاية لدرجة أنه كان من الضروري تقليل السرعة إلى 33.6 كيلوبت في الثانية لتحقيق الاستقرار. نادرًا ما تتجاوز سرعات التنزيل الفعلية 4 كيلوبايت / ثانية. في الوقت نفسه ، ظهرت خدمة فيديو YouTube مثيرة للاهتمام على الإنترنت ، وسرعان ما اكتسبت شعبية ، وفي نهاية العام نفسه اشترتها Google.



ابق مستيقظًا طوال الليل لمشاهدة قطعة



كانت مشاهدة أي مقطع فيديو على YouTube عبر اتصال 33.6 كيلوبت في الثانية تجربة مؤلمة. إلى حد كبير ، استغرق تنزيل أي مقطع فيديو وقتًا طويلاً. على سبيل المثال ، يستغرق تنزيل مقطع فيديو قصير بحجم 10 ميغا بايت 40 دقيقة ، مما يجعل البث مستحيلاً. يستغرق الفيديو الأطول والأعلى جودة عدة ساعات ويشغل القناة بأكملها ، ناهيك عن حقيقة أنه يمكن قطع الاتصال في أي وقت - وسيبدأ التنزيل من جديد! تخيل أنك حقًا أحب مقطع فيديو معين وترغب في مشاهدته مرة ثانية أو ثالثة. أصبح تكرار هذه العملية عمليا عملا من أعمال الماسوشية.



في مثل هذه الحالة ، بدأت أفكر في إمكانيات تنزيل ملفات الفيديو: إذا كان الفيديو مثيرًا للاهتمام ، فإن الحصول على نسخة يسمح لك بمراجعته عدة مرات لاحقًا. وإذا كان برنامج التنزيل جيدًا حقًا ، فبعد انقطاع الاتصال ، سيكون قادرًا على استئناف التنزيل من نفس المكان!



كانت هناك حلول أخرى لتنزيل مقاطع فيديو YouTube في ذلك الوقت ، بما في ذلك البرنامج النصي Greasemonkey الشهير... بالصدفة البحتة ، لم أتمكن من تخصيص أي من الحلول الحالية للعمل ، لذلك قررت أن أكتب أداتي الخاصة. هكذا ظهر برنامج youtube-dl. كان الأمر أكثر ملاءمة وأسرع بالنسبة لي لتشغيله من وحدة التحكم ، لذلك لا توجد واجهة رسومية. تم اختيار Python لأنها تحتوي على مكتبة قياسية واسعة النطاق ، مع الآثار الجانبية الممتعة التي ستعمل على أي منصة.



إطلاق أثيري



النسخة الأولى عملت فقط على موقع يوتيوب. لم يكن للبرنامج عمليا أي بنية طبيعية ، لأنه لم يكن هناك حاجة إليه. كتب على شكل نص بسيط ، ذهب مباشرة إلى النقطة. حجم البرنامج 223 سطراً ، مع 143 رمزًا فعليًا فقط ، و 44 سطرًا من التعليقات و 36 سطرًا فارغًا. تم اختيار الاسم لراحة تامة: youtube-dl واضح ومفهوم ويصعب نسيانه ويمكن إدخاله بشكل حدسي باسم "YOU-TAB" في وحدة التحكم.



نظرًا لأنني كنت أستخدم Linux منذ عدة سنوات حتى الآن ، فقد قررت نشر البرنامج بموجب ترخيص مجاني (MIT في الإصدارات الأولى) في حال وجده شخصًا مفيدًا. في ذلك الوقت ، لم يظهر GitHub بعد وكان علينا التعامل مع SourceForge . ولكن هناك ، عند إنشاء مشروع جديد ، كان عليك ملء نموذج ممل. لذا بدلاً من SourceForge ، قمت بنشر الكود بسرعة إلىالصفحة الشخصية التي قدمها مزود الإنترنت. في حين أن هذا يبدو غير معتاد اليوم ، اعتاد مزودو خدمات الإنترنت على إعطاء المستخدمين عنوان بريد إلكتروني وبعض الاستضافة حيث يمكنهم تحميل الملفات عبر FTP. وبالتالي ، يمكنك استضافة موقع الويب الشخصي الخاص بك على الويب. تم نشر الإصدار الأول من البرنامج في 08.08.2006 ، على الرغم من أنني بحلول ذلك الوقت كنت أستخدمه لعدة أسابيع.



أثناء عملية التطوير ، كان من الضروري فهم عمليات متصفح Firefox عند مشاهدة مقاطع الفيديو على YouTube. إذا كنت أتذكر بشكل صحيح ، فإن Firefox لم يقم بعد بتضمين أدوات تطوير لتحليل نشاط الشبكة. تم إجراء الاتصالات بشكل أساسي عبر HTTP ، لذلك أصبح Wireshark ، المعروف في ذلك الوقت باسم Ethereal ، أداة لا تقدر بثمن لتحليل حركة مرور الشبكة. لقد كتبت youtube-dl لغرض محدد وهو القيام بنفس الشيء الذي فعله متصفح الويب عند استخراج مقطع فيديو. حتى أن البرنامج أرسل نفس سلسلة وكيل المستخدم المنسوخة حرفيًا من Firefox لنظام التشغيل Linux للتأكد من أن الموقع سيرسل البرنامج نفس صفحات الويب مثل المتصفح.



أيضًا ، استخدم YouTube مشغل Adobe Flash في ذلك الوقت.... تم تقديم مقاطع الفيديو كملفات Flash Video (FLV) ، لذلك كان من الضروري وجود مكون إضافي خاص لعرضه في متصفح (سيتذكر الكثيرون مكتبة libflashplayer.so المخيفة) ، لذلك كانت أي أدوات تطوير داخل المتصفح عديمة الفائدة. كان هذا المكون الإضافي المملوك مصدرًا دائمًا للثغرات الأمنية والمشكلات. كان لدي ملحق Firefox يسمى Flashblock الذي منع المحتوى من التحميل افتراضيًا واستبدله بعناصر نائبة بأيقونة قابلة للنقر ، لذلك لن يتم تحميل المحتوى إلا عند الطلب ، ولن يتم استخدام مكتبة المكونات الإضافية إلا إذا طلب المستخدم ذلك.



إلى جانب تحسين الأمان ، كان لبرنامج Flashblock ميزتان أخريان. أولاً ، أزال الكثير من اللافتات المزعجة وغير السارة ، والتي قد تسبب أيضًا مشاكل أمنية. ثانيًا ، سهل تحليل عملية تحميل الفيديو في المشغل. انتظرت حتى يتم تحميل الصفحة بالكامل ثم قمت بتشغيل Wireshark قبل النقر فوق رمز Flashblock ، لبدء تنزيل الفيديو. وبالتالي ، كانت حركة المرور الوحيدة المطلوب تحليلها مرتبطة بالمكوّن الإضافي الذي يقوم بتحميل تطبيق مشغل الفيديو والتطبيق نفسه الذي يقوم بتحميل الفيديو.



من الجدير بالذكر أيضًا أن البرنامج المساعد Flash Player في ذلك الوقت قد حمّل بالفعل نسخة من الفيديو على القرص الصلب (في نظام Linux تم تخزينها في/tmp) ، وقد اعتمد العديد من المستخدمين على هذه الوظيفة لعمل نسخة بدون أدوات إضافية. لذلك كان youtube-dl أكثر ملاءمة فقط لأنه استخرج اسم الفيديو وتعيينه إلى الملف تلقائيًا ، على سبيل المثال.



أوه ، اللحوم الطازجة!



في النهاية ، تم تغيير Flash Player لجعل مقاطع الفيديو أكثر صعوبة في الاستخراج . كان أحد الإجراءات الأولى هو قطع الارتباط إلى ملف الفيديو بعد إنشائه ، بحيث تظل i-node موجودة ومتاحة للعملية التي تستخدمها (حتى يتم إغلاقها) ، مع إبقاء الملف غير مرئي من وجهة نظر نظام الملفات. كان لا يزال من الممكن الحصول على ملف باستخدام نظام الملفات /procلفحص واصفات الملفات المستخدمة في عملية المتصفح ، ولكن مع كل خطوة من هذه الخطوات الصغيرة ، أصبح youtube-dl أكثر ملاءمة.



مثل العديد من عشاق المصادر المفتوحة في ذلك الوقت ، استخدمت Freshmeat للاشتراك في الإصدارات الجديدة من المشاريع التي تهمني. عندما أنشأت youtube-dl ، قمت أيضًا بإنشاء سجل مشروع على هذا الموقع بحيث يمكن إخطار المستخدمين بالإصدارات الجديدة وقائمة التغيير التي تسرد الميزات الجديدة والإصلاحات والتحسينات. في كتالوج Freshmeat ، كان من الممكن البحث عن مشاريع جديدة ومثيرة للاهتمام ؛ تم نشر آخر التحديثات في الصفحة الأولى ، عادة عدة عشرات في اليوم. أفترض أنه بهذه الطريقة ، اكتشف جو بار ( ارقد بسلام) ، محرر موقع linux.com ، البرنامج وقرر كتابة مقال عنهمرة أخرى في عام 2006. كان Linux.com أحد أكثر الموارد شيوعًا لعشاق Linux في ذلك الوقت ، إلى جانب المواقع الكلاسيكية الأخرى مثل Slashdot أو Linux Weekly News. على الأقل بالنسبة لي.



منذ تلك اللحظة ، بدأت شعبية youtube-dl في الازدياد ، ومن وقت لآخر بدأت في تلقي رسائل امتنان لإنشاء البرنامج ودعمه.



عد حركة المرور



تقدم سريعًا إلى عام 2008. استمرت شعبية youtube-dl في النمو ببطء ، وغالبًا ما كان المستخدمون يطلبون إنشاء برامج مماثلة لتنزيلها من مواقع أخرى ، وقد استسلمت لهذا الطلب عدة مرات. في هذه المرحلة قررت إعادة كتابة البرنامج من البداية من أجل تنفيذ الدعم الأصلي لمواقع الفيديو المتعددة. كان لدي بعض الأفكار البسيطة حول كيفية تقسيم الأجزاء الداخلية للبرنامج إلى عدة أجزاء من أجل تبسيط الأجزاء الأكثر أهمية: مُحمل ملفات منفصل ، مشترك في جميع مواقع الويب ، وبشكل منفصل - مستخلصات المعلومات: كائنات (فئات) تحتوي على كود خاص بملف معين موقع الفيديو. عند تقديم عنوان URL أو عنوان URL زائف ، يُطلب من المستخرجين معرفة أي شخص يمكنه التعامل مع هذا النوع من عنوان URL ، ثم يُطلب منه استخراج معلومات حول هذا الفيديو أو قائمة الفيديو ،لغرض رئيسي هو الحصول على عنوان URL للفيديو أو قائمة عناوين URL ذات التنسيقات المتاحة بالإضافة إلى بعض البيانات الوصفية الأخرى مثل العناوين مثل.



كما انتهزت الفرصة لتغيير نظام التحكم في الإصدار ونقل المشروع إلى استضافة أخرى. في ذلك الوقت ، كان Git يفوز في حرب التحكم في الإصدار الموزع ، لكن Mercurial كان لديه أيضًا العديد من المستخدمين. اختبرت كليهما وقررت أنني أحب Mercurial أكثر بقليل من Git. لقد بدأت استخدامه لـ youtube-dl ونشرت المشروع على Bitbucketالذي كان اختيارًا طبيعيًا. في ذلك الوقت ، استضافت Bitbucket مستودعات Mercurial فقط ، وكان GitHub يستضيف Git فقط. تم إطلاق كلاهما في عام 2008 ويمثلان نفسًا منعشًا مقارنةً بـ SourceForge. مساحات أسماء المشاريع المختلفة لكل مستخدم (أي ، لا يجب أن يكون اسم مشروعك فريدًا عالميًا ، ولكنه فريد فقط لمشاريعك) مع أنظمة التحكم في الإصدار الموزع مما يعني أنه يمكنك نشر مشاريعك الشخصية في غضون دقائق إلى أي من الموقعين ... على أي حال ، تم نقل سجل المشروع إلى Git ونقل المشروع إلى GitHub بعد عامين .



عند إعادة كتابة المشروع ، لم يكن لدي أدنى شك في اغتنام الفرصة لإعادة تسميته ، لكنني لم أرغب في إرباك المستخدمين الحاليين وترك الاسم في محاولة لإبقاء البرنامج شائعًا بعض الشيء.



كما تغير السياق التكنولوجي بشكل طفيف في ذلك العام. بدأت خطط بيانات الهاتف المحمول تكتسب قوة دفع ، وفي نهاية ذلك العام اشتريت لنفسي مودم 3G وخطة بيانات سمحت لي لأول مرة بتصفح الويب بسرعة مناسبة. على أي حال ، لم يجعلني أتوقف عن استخدام youtube-dl. دفعت 45 يورو شهريًا ، لكن حد البيانات الشهرية كان محدودًا بـ 5 جيجابايت ، مما يعني أنه لا يمكنني استخدام سوى حوالي 150 ميجابايت في اليوم في المتوسط. وسمحت لك السرعة بتنزيل المزيد ، لذا كان عليك مراقبة حركة المرور واختيار المحتوى بشكل انتقائي ، وتجنب التنزيلات الكبيرة إن أمكن. لذلك ، ساعد موقع youtube-dl كثيرًا في منع التنزيلات المتعددة لملفات الفيديو الكبيرة والبقاء ضمن خطة التعريفة الجمركية.



الحلقة: منزل جديد



بعد مرور بعض الوقت ، في نهاية عام 2009 ، انتقلت وبدأت أخيرًا العيش مع صديقتي (الآن زوجتي وأم لطفلين) في أفيليس. للمرة الأولى ، كان لدي إنترنت عالي السرعة ، والذي كان المعيار للعديد من أصدقائي وعائلتي لسنوات. أتذكر أنه كان اتصال كبل 100/10 ميجابت في الثانية (تنزيل / تحميل) بدون قيود على حركة المرور. كان هذا بالتأكيد نقطة تحول في عدد مرات استخدامي youtube-dl ومقدار الاهتمام الذي أوليته للمشروع.



في وقت لاحق ، قمت أخيرًا بنقل الكود إلى Git و GitHub. في ذلك الوقت ، بدأ YouTube في تجربة فيديو HTML5 ، والذي سيصبح افتراضيًا في عام 2015. في عام 2011 ، عملت بدوام كامل لعدة سنوات كمهندس برمجيات ، وبشكل عام ، عند عودتي من العمل ، لم أكن أرغب حقًا في برمجة وتخصيص youtube-dl أو تنفيذ ، بناءً على طلب المستخدمين ، وظيفة لن أستخدمها شخصيًا.



في النصف الثاني من عام 2011 ، في خضم مشروع مهم آخر ، قررت ترك وظيفة مشرف youtube-dl ، حيث لم أتمكن من التعامل مع المهمة لعدة أشهر. فيليب هاجيميسترأثبت أنه مبرمج ممتاز ، وقد أرسل العديد من طلبات السحب إلى GitHub مع إصلاحات اهتم بها الكثير من الناس. لقد منحته حق الوصول إلى الالتزامات إلى مستودع youtube-dl الخاص بي ، وكان ذلك في الأساس نهاية القصة من جانبي. تظهر لي سجلات المنبع دفقًا مستمرًا من الالتزامات حتى مارس 2011 ثم قفزة إلى أغسطس 2011 بدمج من Philip. لقد جعلت منذ ارتكاب فقط في عام 2013 من أجل التغيير في rg3.github.com شفرة المصدر ل rg3.github.io عندما انتقلت جيثب صفحات مخصصة من USERNAME.github.com إلى USERNAME.github.io إلى القضايا الأمنية تجنب مع تعليمات برمجية ضارة في مجالها الخاص ، إذا كنت أتذكرها بشكل صحيح.



على الرغم من أنني لم أشارك في تطوير youtube-dl ، إلا أن صفحة المشروع الرسمية ظلت تحت حسابي لسنوات عديدة على https://github.com/rg3/youtube-dlو https://rg3.github.io/youtube-dl/. كنت بحاجة للظهور عندما طلب Philip أو مشرفون آخرون منح حق الوصول إلى التزامات لمطورين إضافيين ، مثل Filippo Valsorda أو Sergey M. ، أحد المشرفين الحاليين. لسوء الحظ ، في عام 2019 ، كانت هناك مشكلة صغيرة مع المتصيدون في أداة التتبع ، ولا يُسمح إلا لأصحاب المشاريع بحظر المستخدمين. جعلنا هذا أخيرًا ننقل المشروع إلى مؤسسة GitHub ، حيث تمت دعوة كل من لديه حق الوصول إلى الالتزامات (على الرغم من عدم انضمام الجميع). سمح تنظيم GitHub للمسؤولين عن الصيانة بالتصرف بحرية أكبر ، دون استفزازي عند أدنى استفزاز.



أود أن أعبر مرة أخرى عن خالص امتناني لمسؤولي المشروع المختلفين على مر السنين الذين قاموا بتحسين الكود بشكل كبير ، وتمكنوا من إنشاء مجتمع حقيقي حولهم والذين جعلوا المشروع أكثر شهرة مما كان عليه عندما غادرت ما يقرب من 10 سنوات.



غير متصل ومجاني



أود أن أشير مرة أخرى إلى أن الغرض من youtube-dl كأداة لم يتغير عمليًا على مدار 14 عامًا من وجوده. قبل وبعد تلقي خطاب قانون الألفية للملكية الرقمية من RIAA ، تحدث الكثير عن كيفية استخدام youtube-dl لأغراض مختلفة .



بالنسبة لي ، كان الوصول إلى مقاطع الفيديو المتوفرة بالفعل لعامة الناس على الإنترنت بلا اتصال بالإنترنت. في عالم شبكات الهاتف المحمول والاتصال الدائم ، قد تسأل عما إذا كان ذلك ضروريًا حقًا. أعتقد ذلك ، إذا نفذت Netflix و Amazon و Disney و HBO وظائف مماثلة في تطبيقات البث ذات الشعبية الكبيرة. للرحلات الطويلة أو الرحلات إلى الخارج ، خاصة مع الأطفال ، أو تحت الأرض ، أو على متن طائرة ، أو في مكان به اتصالات ضعيفة أو محدودة ، من الملائم للغاية أن يكون لديك وصول غير متصل بالإنترنت إلى بودكاست أو محاضرة أو مراجعة أو أخبار أو عمل فني.



هناك تأثير جانبي إضافي لـ youtube-dl وهو الوصول إلى المحتوى عندما لا تكون الواجهة عبر الإنترنت على مستوى المهمة. لم يعمل المكون الإضافي القديم الخاص بـ Flash مع كل نظام أساسي وهندسة معمارية. حاليًا ، يمكن للمتصفحات تشغيل مقاطع الفيديو ، ولكنها تفشل أحيانًا في الاستفادة من فك تشفير وحدة معالجة الرسومات الفعال وإهدار الكثير من طاقة البطارية. يمكن استخدام Youtube-dl مع المشغل الخاص به لجعل مقاطع فيديو معينة قابلة للتشغيل و / أو فعالة. على سبيل المثال ، يتضمن مشغل mpv دعمًا مضمنًا لـ youtube-dl. ما عليك سوى تمرير عنوان URL إليه ويستخدم youtube-dl للوصول إلى دفق الفيديو وتشغيله دون حفظ أي شيء على محرك الأقراص الثابتة.



قد لا تحتوي الواجهة الافتراضية عبر الإنترنت على ميزات إمكانية الوصول التي يحتاجها بعض الأشخاص للتنقل ، أو مرشحات الألوان للأشخاص المكفوفين بالألوان ، والتي تتوفر مرة أخرى من تطبيق مشغل الفيديو الأصلي.



أخيرًا وليس آخرًا ، تتيح لك أدوات مثل youtube-dl الوصول إلى مقاطع الفيديو عبر الإنترنت باستخدام البرامج المجانية فقط. أفهم أنه لا يوجد الكثير من مؤيدي البرامج المجانية ومفتوحة المصدر في العالم. أنا لا أعتبر نفسي كذلك ، بشكل عام. البرامج الاحتكارية حاضرة باستمرار في حياتنا الحديثة ويتم تسليمها إلينا يوميًا كمقدار ضخم من خطوط جافا سكريبت في المتصفح ، مع العديد من الأغراض المختلفة وليس دائمًا في مصلحة المستخدمين. والدليل هو ظهور اللائحة العامة لحماية البياناتبكل ما فيه من عيوب ومشاكل. يضمن لك الوصول إلى مقاطع الفيديو عبر الإنترنت باستخدام youtube-dl راحة البال الكاملة للتصفح المتخفي حيث بالكاد يهدئ uBlock Origin أو Privacy Badger.



All Articles