أداة NodeJS لتنزيل المقاطع ومقاطع الفيديو حسب الطلب (والبيانات التعريفية الخاصة بها) من قناة Twitch.
يمكن لهذه الأداة تنزيل جميع المقاطع من قناة ما (وليس فقط أفضل 1000 مقطع). في هذا الوقت، تم اختبار هذه الأداة على عدة قنوات كبيرة ويبدو أنها قادرة على الحصول على جميع المقاطع (433 ألف مقطع من hasanabi
).
من أجل زيادة تغطية المقاطع إلى الحد الأقصى، لن تسمح هذه الأداة لـ Twitch API بالإبلاغ عن أكثر من 500 مقطع في فترة واحدة. لا يمكن الاعتماد على ترقيم الصفحات بعد هذه النقطة (يبلغ عدد المقاطع حوالي 1 ألف ولكنه يختلف كثيرًا). لإصلاح ذلك، سيتم تقسيم الفترات التي تحتوي على أكثر من 500 مقطع إلى فترتين، وستتم إعادة تشغيل العملية حتى تبلغ الفترة الواحدة عن أقل من 500 مقطع.
لم يتم التخلي عن هذا المشروع ولكن في نفس الوقت لم يتم تطويره بشكل نشط بسبب ضيق الوقت.
أدركت أن المشروع قد تجاوز نطاق اسمه: أداة تنزيل مقطع دفعة واحدة، واعتقدت أنني بحاجة إلى إعادة تنظيم كل شيء إلى أجزاء أكثر قابلية للإدارة. مازلت أعرف ما هي الخطة النهائية للهجوم، والآن هذا ما أخطط له:
يتم تنفيذ هذا في الغالب الآن، ولكنه كان ضروريًا لمنع أشياء المستخدم من أشياء المطورين. يتيح لي هذا أيضًا التركيز على الحفاظ على تحديث الوظائف الأساسية واختبارها بشكل متكرر وكذلك مشاركة الكود الأكثر أهمية بين جميع الأدوات
حاليًا، ستقوم هذه الأداة بتنزيل كل شيء من القناة فقط، وهذه ليست حالة الاستخدام الأكثر شيوعًا (حتى بالنسبة لي). أخطط لإضافة أشياء مثل: تنزيل VOD/مقطع واحد، والتنزيل من قائمة عناوين URL، والمرشحات، وCLI أفضل، وما إلى ذلك.
نظرًا لأن معظم المستخدمين خائفون من واجهة سطر الأوامر (CLI)، فأنا أرغب في تنفيذ واجهة المستخدم الرسومية باستخدام Electron لجعل هذا المشروع أكثر سهولة في الوصول إليه وسهولة في الاستخدام.
هذه الأداة قادرة أيضًا على تنزيل دردشة VOD بالكامل من Twitch، مما يسمح للاعب بإعادة تشغيل الدردشة بأكملها تمامًا كما تفعل مع VODs التي لا تزال متاحة.
تتمثل الخطة النهائية في تحويل حزمة الوظائف الأساسية إلى أدوات للنسخ الاحتياطية ذات الصلة بوسائط Twitch، مما يسمح لأي مطور بكتابة أداة النسخ الاحتياطي/التنزيل الخاصة به بسهولة دون الحاجة إلى القلق بشأن الطلبات، والاتصالات المتعددة، ومصادقة واجهة برمجة التطبيقات، وجلب VOD قوائم التشغيل .m3u8، وما إلى ذلك
youtube-dl
؛.ts
إلى .mp4
؛Client-ID
تطبيق Twitch Client Secret
(موضح أدناه) - للوصول إلى واجهة برمجة تطبيقات Twitch. قم بتسجيل تطبيق على Twitch Console، وانقر فوق "إدارة" وانسخ معرف العميل وقم بإنشاء سر العميل .
قم بتشغيل هذا الأمر على وحدة التحكم الخاصة بك:
npm install
قم بتشغيل البرنامج النصي عبر NPM باستخدام (هذا مطلوب لتحميل dotenv
):
npm run start
ستتم مطالبتك بكل المعلومات المطلوبة عند بدء التشغيل عبر المحطة الطرفية.
في كل مرة تقوم فيها بتشغيل هذا البرنامج النصي، سيطلب منك اسم القناة، ثم يؤكد ما إذا كنت تريد تنزيل كل شيء.
وفيما يلي الوصف لكل متغير:
DEBUG
: اطبع عددًا هائلاً من المعلومات، واحتفظ بها كاذبة للاستخدام العادي؛CLIENT_ID
: معرف عميل Twitch API؛CLIENT_SECRET
: سر عميل Twitch API؛BASEPATH
: حيث يجب تخزين الملفات (المقاطع، مقاطع الفيديو حسب الطلب، الأجزاء)؛YOUTUBE_DL_PATH
: حيث يوجد youtube-dl القابل للتنفيذ؛VIDEOS_PARALLEL_DOWNLOADS
: كم عدد أجزاء VOD التي يجب تنزيلها في نفس الوقت.CLIPS_PARALLEL_DOWNLOADS
: كم عدد المقاطع التي يجب تنزيلها في نفس الوقت؛BIN_PATH
: المسار الذي سيتم فيه تخزين الثنائيات؛DEFAULT_PERIOD_HOURS
: حجم الفترة الافتراضي بالساعات (12 هو رقم جيد للقنوات الكبيرة. اخفض هذا الرقم لتجنب تقسيم الفترة، وقم بزيادته لتقليل عدد واجهة برمجة التطبيقات وتسريع جلب عنوان URL).