مكتبة لتنزيل مقاطع الفيديو ومقاطع الفيديو الخاصة بالمشتركين والتعليقات من twitch.
$ npm وتنزيل الفيديو على Twitch
مكتبة FFMPEG مطلوبة لتحويل ملفات الفيديو من m3u8 إلى mkv
استيراد { انضمام } من "المسار"؛ استيراد { writeFileSync } من "fs"؛ استيراد { VideoDownloader،sureDirectoryExists } من "twitch-video-downloader"؛(async () => {try {const downloader = new VideoDownloader("https //www.twitch.tv/videos/800558240");downloader.on("progress-download", (progress) => console.log(`Downloaded ${progress.toFixed(2)}%`));downloader.on("progress-transcode", (progress) => console.log(`Transcoded ${progress. toFixed(2)}%`));downloader.on("start-download", (e) => console.log(`بدأ التنزيل! في `, e));downloader.on("start-transcode", () => console.log(`بدأ التحويل!`));// احصل على جميع الدقة المتاحة لقرارات الفيديو هذه = في انتظار downloader.getVideoResolutionsAvailable();// تنزيل دقة محددةconst download = انتظار downloader.download(resolutions[0]);// معلومات ومسار تنزيل hls filesconsole.log(download);// فيديو مشفر، من HLS إلى MKVconst transcode = انتظار downloader.transcode(download);// معلومات ومسار videoconsole.log(transcode);// تنزيل تعليقات chatconst دون اتصال = انتظار downloader.downloadChat();// تحقق من وجود الدليل، إذا عدم إنشاء itensureDirectoryExists(join(__dirname, "./../downloads/chats"));// احفظ جميع التعليقاتwriteFileSync(join(__dirname, `./../downloads/chats/${comments.vodID}.chat`)، comments.content)؛} الصيد (خطأ) {console.log(error);}})();
يمكن أن يكون هذا الرمز مفيدًا جدًا للحصول على نظرة عامة سريعة على المكتبة. إذا قمت باستنساخ المستودع، يمكنك العثور على نفس الملف في المسار التالي.
twitch-video-downloader │ └───example │ index.ts
بمجرد تثبيت تبعيات المشروع مع
تثبيت $ npm
يمكنك اللعب بهذا الملف عن طريق تعديله وتنزيل مقاطع الفيديو التي تهمك. لتشغيل البرنامج النصي قم بتشغيل الأمر التالي
بداية تشغيل $ npm:watch
إذا كنت تريد معرفة كل ما تفعله المكتبة، فقم بتنفيذ الأمر التالي لتشغيل البرنامج النصي في وضع التصحيح
$ npm run dev:watch
أو يمكنك تمرير معلمة التصحيح في الخيارات
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240", {debug: true});
VideoDownloader هو الفئة الرئيسية للمكتبة، وهو نقطة الدخول لبدء تنزيل مقاطع الفيديو أو الدردشة
const defaultOptions = {clientID: "kimne78kx3ncx6brgo4mv6wki5h1ko"،debug: false,downloadFolder:process.cwd(),oAuthToken: ""،poolLimit: 20};const downloader = new VideoDownloader("https://www.twitch.tv/videos" /800558240"، defaultOptions)؛
خيار | تعريف | تقصير |
---|---|---|
معرف العميل | هذه معلمة تستخدمها منصة Twitch، والقيمة هي نفسها بغض النظر عن الحساب المستخدم، لذلك ربما لا ينبغي عليك تغييرها | kimne78kx3ncx6brgo4mv6wki5h1ko |
تصحيح | لبدء المكتبة في وضع التصحيح، سيتم إنشاء ملف debug.log حيث سيتم حفظ كل ما تفعله المكتبة. | خطأ شنيع |
downloadFolder | المجلد الذي سيتم حفظ مقاطع الفيديو فيه. الافتراضي هو دليل العمل | عملية.cwd() |
oAuthToken | هذه المعلمة مهمة جدًا لأنه من خلالها يمكنك تنزيل مقاطع الفيديو للمشتركين فقط. إنه ليس سحرًا، قبل أن يكون لديك حق الوصول إلى الفيديو في حساب Twitch الخاص بك لتتمكن من تنزيله | "" |
PoolLimit | إنها الحد الأقصى للتنزيلات المتوازية عند تنزيل الفيديو | 20 |
لديك خياران، يمكنك استخراجه من ملفات تعريف الارتباط Twitch بمجرد تسجيل الدخول، ويسمى الحقل auth-token. فيما يلي الخطوات التي يجب عليك اتباعها:
* Sign in to your Twitch account * With the Twitch tab open, open the chrome devtools (press f12) * With the devtools window open, now go to the application tab * Select 'https://www.twitch.tv' in the Cookies section * And look in the 'name' column for the field that says 'auth-token' and copy what is in the 'value' column
الخيار الثاني (لا يزال قيد التطوير، لا يوصى به) هو استخدام فئة TwitchOAuth
import { TwitchOAuth, LoginOptions } from "twitch-video-downloader";constloginDefaultOptions: LoginOptions = {authy_token: ""، // هذا هو الخيار المفيد الوحيد. استخدمه عند تنشيط العامل الثنائي، وانسخ الرمز من تطبيق Authenticator. تأكد من أن الرمز لا يزال صالحًا عند تشغيل هذا الأسلوبclient_id: "kimne78kx3ncx6brgo4mv6wki5h1ko"،remember_me: true,}const twitchOAuth = new TwitchOAuth();twitchOAuth.login("<YOUR TWITCH USER>"، "<YOUR PASSWORD>"،loginDefaultOptions ).ثم(غير متزامن (oAuthToken) => {const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240", {oAuthToken: oAuthToken,});...});
Warning: THIS CLASS IS NOT YET FINISHED DEVELOPING, so problems may arise. And we have not yet developed the option to solve the catchas when Twitch asks you to log in IT IS RECOMMENDED THAT YOU USE THE FIRST METHOD TO GET YOUR OAUTH TOKEN FROM COOKIES BEFORE THIS METHOD
اسم الحدث | وصف | حدود |
---|---|---|
تنزيل التقدم | يتم استدعاء الحدث في كل مرة يتم فيها تحديث تقدم التنزيل | عشري |
التقدم في تحويل الشفرة | يتم استدعاء الحدث في كل مرة يتم فيها تحديث تقدم تحويل التعليمات البرمجية | عشري |
بدء التنزيل | يتم استدعاء الحدث عند بدء التنزيل | { vodID: سلسلة، الجودة: سلسلة، مجلد المسار: سلسلة} |
بدء تحويل الشفرة | يتم استدعاء الحدث عند بدء التحويل | فارغ |
مثال لتسجيل المستمعين الخاص بك
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");downloader.on("<EVENT NAME>", (param) => console.log(param));
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");constsolutions = انتظار downloader.getVideoResolutionsAvailable();
تقوم الدالة بإرجاع مصفوفة تحتوي على المعلومات التالية
[{الجودة: '1080p60'، الدقة: '1920x1080'، URL: 'https://...index-dvr.m3u8'}، {الجودة: '1080p'، الدقة: '1920x1080'، URL: 'https: //...index-dvr.m3u8'},{الجودة: '720p60'، الدقة: '1080x720'، عنوان URL: 'https://...index-dvr.m3u8'},...]
تسمح لك هذه الوظيفة بتنزيل دقة معينة، كمعلمة يجب عليك تمرير كائن مع حقول الجودة والدقة وعنوان url
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");constsolutions = انتظار downloader.getVideoResolutionsAvailable();// تنزيل دقة محددةconst download = انتظار downloader.download(resolutions[0]) ;
بمجرد الانتهاء من تنفيذ الوظيفة، تقوم بإرجاع كائن بالمعلومات التالية
{vodID: '800558240'، الجودة: '1080p60'، مسار المجلد: 'D:Projectstwitch-video-downloaderdownloadsvideos800558240hls1080p60'}
تسمح لك هذه الوظيفة بتحويل مقطع فيديو، كمعلمة يجب عليك تمرير كائن مع حقول الجودة والدقة ومسار المجلد، ويتم إرجاع هذه الحقول بطريقة التنزيل
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");قرارات const = انتظار downloader.getVideoResolutionsAvailable();const download = انتظار downloader.download(resolutions[0]);// Trancoded فيديو، من HLS إلى MKVconst transcode = انتظار downloader.transcode(download);
تتلقى الوظيفة أيضًا وسيطة ثانية اختيارية في شكل كائن ذي إعدادات إضافية.
const transcode = انتظار downloader.transcode(download, {deleteHslFiles: false, // Default valueoutputPath: "<WORKING DIRECTORY>/downloads/videos/<VIDEO ID>/mkv/"، // القيمة الافتراضية})؛
بمجرد الانتهاء من تنفيذ الوظيفة، تقوم بإرجاع كائن بالمعلومات التالية
{vodID: '800558240'، الجودة: '1080p60'، filePath: 'D:Projectstwitch-video-downloaderdownloadsvideos800558240mkv1080p60.mkv'}
تتيح لك هذه الوظيفة تنزيل دردشة الفيديو. عودة الوظيفة هي البيانات الأولية من واجهة برمجة تطبيقات Twitch
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");// تنزيل تعليقات chatconst دون اتصال = انتظار downloader.downloadChat();
بعض التعليمات البرمجية مأخوذة من مكتبات مثل twitch-m3u8 وtwitch-tools