Perpustakaan untuk mengunduh video, video untuk subs dan komentar dari twitch.
$ npm saya kedutan-pengunduh video
Pustaka FFMPEG diperlukan untuk mentranskode file video dari m3u8 ke mkv
import { join } from "path";import { writeFileSync } from "fs";import { VideoDownloader, sureDirectoryExists } from "twitch-video-downloader";(async () => {coba {const downloader = new VideoDownloader("https ://www.twitch.tv/videos/800558240");downloader.on("progress-download", (progress) => console.log(`Diunduh ${progress.toFixed(2)}%`));downloader.on("progress-transcode", (progress) => console.log(`Transcoded ${progress.toFixed(2)}%`));downloader .on("mulai-unduh", (e) => console.log(`Pengunduhan dimulai! pada `, e));downloader.on("mulai-transkode", () => console.log(`Ditranskode dimulai!`));// Dapatkan semua resolusi yang tersedia untuk videoconst ini resolusi = menunggu downloader.getVideoResolutionsAvailable();// Donwload resolusi spesifikconst download = menunggu downloader.download(resolusi[0]);// Informasi dan jalur hls yang diunduh filesconsole.log(download);// Video yang ditranskode, dari HLS ke MKVconst transcode = menunggu downloader.transcode(download);// Informasi dan jalur yang ditranskode videoconsole.log(transcode);// Unduh offline chatconst comments = menunggu pengunduh.downloadChat();// Verifikasi bahwa direktori tersebut ada, jika tidak buat itensureDirectoryExists(join(__dirname, "./../downloads/chats")) ;// Simpan semua commentswriteFileSync(join(__dirname, `./../downloads/chats/${comments.vodID}.chat`), comments.content);} catch (kesalahan) {console.log(error);}})();
Kode ini bisa sangat berguna untuk mendapatkan gambaran singkat tentang perpustakaan. Jika Anda mengkloning repositori, Anda dapat menemukan file yang sama di jalur berikut.
twitch-video-downloader │ └───example │ index.ts
Setelah dependensi proyek diinstal
$npm instal
Anda dapat bermain-main dengan file ini dengan memodifikasinya dan mengunduh video yang Anda minati. Untuk menjalankan skrip, jalankan perintah berikut
$ npm jalankan mulai: tonton
Jika Anda ingin mengetahui semua yang dilakukan perpustakaan, jalankan perintah berikut untuk menjalankan skrip dalam mode debug
$ npm jalankan dev: tonton
Atau Anda dapat meneruskan parameter debug di opsi
const downloader = Pengunduh Video baru("https://www.twitch.tv/videos/800558240", {debug: true});
VideoDownloader adalah kelas utama perpustakaan, ini adalah titik masuk untuk mulai mengunduh video atau obrolan
const defaultOptions = {clientID: "kimne78kx3ncx6brgo4mv6wki5h1ko",debug: false,downloadFolder: process.cwd(),oAuthToken: "",poolLimit: 20};const downloader = new VideoDownloader("https://www.twitch.tv/videos /800558240", opsi default);
Pilihan | Definisi | Bawaan |
---|---|---|
ID klien | Ini adalah parameter yang digunakan oleh platform twitch, nilainya tetap sama tidak peduli akun apa yang digunakan, jadi sebaiknya Anda tidak mengubahnya | kimne78kx3ncx6brgo4mv6wki5h1ko |
men-debug | Untuk memulai perpustakaan dalam mode debug, file debug.log akan dibuat di mana semua yang dilakukan perpustakaan akan disimpan. | PALSU |
unduhFolder | Folder tempat video akan disimpan. Defaultnya adalah direktori kerja | proses.cwd() |
oAuthToken | Parameter ini sangat penting karena dengan ini Anda hanya dapat mendownload video untuk pelanggan. Bukan sihir, sebelumnya Anda harus sudah memiliki akses video tersebut di akun twitch Anda untuk bisa mendownloadnya | "" |
poolLimit | Itu adalah unduhan paralel maksimum saat mengunduh video | 20 |
Anda memiliki dua opsi, Anda dapat mengekstraknya dari cookie Twitch setelah Anda masuk, bidang tersebut disebut auth-token. Berikut langkah-langkah yang harus Anda ikuti:
* 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
Opsi kedua (Masih dalam pengembangan, tidak disarankan) adalah menggunakan kelas TwitchOAuth
import { TwitchOAuth, LoginOptions } from "twitch-video-downloader";const loginDefaultOptions: LoginOptions = {authy_token: "", // Ini adalah satu-satunya opsi yang berguna. Gunakan saat Anda mengaktifkan Dua Faktor, salin kode dari aplikasi Authenticator. Pastikan kode tersebut masih valid ketika Anda menjalankan methodclient_id ini: "kimne78kx3ncx6brgo4mv6wki5h1ko",remember_me: true,}const twitchOAuth = new TwitchOAuth();twitchOAuth.login("<YOUR TWITCH USER>", "<YOUR PASSWORD>", loginDefaultOptions ).then(async (oAuthToken) => {const pengunduh = Pengunduh Video baru("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
Nama acara | Keterangan | Parameter |
---|---|---|
unduhan kemajuan | Acara ini dipanggil setiap kali kemajuan unduhan diperbarui | desimal |
transkode kemajuan | Acara ini dipanggil setiap kali kemajuan transkode diperbarui | desimal |
mulai-unduh | Acara ini dipanggil saat pengunduhan dimulai | { vodID: string, kualitas: string, folderPath:string} |
mulai-transcode | Acara ini dipanggil ketika transcode dimulai | ruang kosong |
Contoh untuk mendaftarkan pendengar Anda
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");downloader.on("<NAMA ACARA>", (param) => console.log(param));
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");const resolusi = menunggu downloader.getVideoResolutionsAvailable();
Fungsi ini mengembalikan array dengan informasi berikut
[{kualitas: '1080p60',resolusi: '1920x1080',url: 'https://...index-dvr.m3u8'},{kualitas: '1080p',resolusi: '1920x1080',url: 'https: //...index-dvr.m3u8'},{kualitas: '720p60',resolusi: '1080x720',url: 'https://...index-dvr.m3u8'},...]
Fungsi ini memungkinkan Anda mengunduh resolusi tertentu, sebagai parameter Anda harus meneruskan objek dengan bidang kualitas, resolusi, dan url
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");const resolusi = menunggu downloader.getVideoResolutionsAvailable();// Donwload resolusi spesifikconst download = menunggu downloader.download(resolusi[0]) ;
Setelah fungsi selesai dijalankan, ia mengembalikan objek dengan informasi berikut
{vodID: '800558240',kualitas: '1080p60',folderPath: 'D:Projectstwitch-video-downloaderdownloadsvideos800558240hls1080p60'}
Fungsi ini memungkinkan Anda untuk mentranskode video, sebagai parameter Anda harus meneruskan objek dengan bidang kualitas, resolusi dan folderPath, bidang ini dikembalikan dengan metode pengunduh
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");const resolusi = menunggu downloader.getVideoResolutionsAvailable();const download = menunggu downloader.download(resolusi[0]);// Ditranskode video, dari HLS ke MKVconst transcode = menunggu downloader.transcode(unduh);
Fungsi ini juga menerima argumen opsional kedua dalam bentuk objek dengan pengaturan tambahan.
const transcode = menunggu downloader.transcode(unduh, {deleteHslFiles: false, // Nilai defaultoutputPath: "<DIRECTORY KERJA>/downloads/videos/<VIDEO ID>/mkv/", // Nilai default});
Setelah fungsi selesai dijalankan, ia mengembalikan objek dengan informasi berikut
{vodID: '800558240',kualitas: '1080p60',filePath: 'D:Projectstwitch-video-downloaderdownloadsvideos800558240mkv1080p60.mkv'}
Fungsi ini memungkinkan Anda mengunduh obrolan video. Kembalinya fungsi tersebut adalah data mentah dari twitch api
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");// Unduh obrolan offlineconst comments = menunggu downloader.downloadChat();
Beberapa kode berasal dari perpustakaan seperti twitch-m3u8 dan twitch-tools