Bibliothek zum Herunterladen der Videos, Videos für Subs und Kommentare von Twitch.
$ npm i Twitch-Video-Downloader
Die FFMPEG-Bibliothek wird benötigt, um Videodateien von m3u8 nach mkv zu transkodieren
import { join } from "path";import { writeFileSync } from "fs";import { VideoDownloader, secureDirectoryExists } from "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(`Download gestartet! am `, e));downloader.on("start-transcode", () => console.log(`Transkodierung gestartet!`));// Alle für dieses Video verfügbaren Auflösungen abrufenconst Resolutions = Warten auf downloader.getVideoResolutionsAvailable();// Spezifische Auflösung herunterladenconst download = Warten auf downloader.download(resolutions[0]);// Informationen und Pfad der heruntergeladenen hls-Dateienconsole.log(download);// Transkodiertes Video, von HLS nach MKVconst transcode = waiting downloader.transcode(download);// Informationen und Pfad des transkodierten videoconsole.log(transcode);// Offline-Chat herunterladenconst comments = waiting downloader.downloadChat();// Überprüfen Sie, ob das Verzeichnis existiert, falls nicht, erstellen Sie itensureDirectoryExists(join(__dirname, "./../downloads/chats "));// Alle Kommentare speichernwriteFileSync(join(__dirname, `./../downloads/chats/${comments.vodID}.chat`), comments.content);} Catch (error) {console.log(error);}})();
Dieser Code kann sehr nützlich sein, um einen schnellen Überblick über die Bibliothek zu erhalten. Wenn Sie das Repository klonen, finden Sie dieselbe Datei im folgenden Pfad.
twitch-video-downloader │ └───example │ index.ts
Sobald die Projektabhängigkeiten mit installiert sind
$ npm installieren
Sie können mit dieser Datei spielen, indem Sie sie ändern und die Videos herunterladen, die Sie interessieren. Um das Skript auszuführen, führen Sie den folgenden Befehl aus
$ npm start:watch ausführen
Wenn Sie alles wissen möchten, was die Bibliothek tut, führen Sie den folgenden Befehl aus, um das Skript im Debug-Modus auszuführen
$ npm dev:watch ausführen
Oder Sie können den Debug-Parameter in den Optionen übergeben
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240", {debug: true});
VideoDownloader ist die Hauptklasse der Bibliothek und der Einstiegspunkt zum Herunterladen von Videos oder zum Chatten
const defaultOptions = {clientID: "kimne78kx3ncx6brgo4mv6wki5h1ko",debug: false,downloadFolder: process.cwd(),oAuthToken: "",poolLimit: 20};const downloader = new VideoDownloader("https://www.twitch.tv/videos /800558240", defaultOptions);
Option | Definition | Standard |
---|---|---|
clientID | Dies ist ein Parameter, der von der Twitch-Plattform verwendet wird. Der Wert ist unabhängig vom verwendeten Konto derselbe, daher sollten Sie ihn wahrscheinlich nicht ändern | kimne78kx3ncx6brgo4mv6wki5h1ko |
debuggen | Um die Bibliothek im Debug-Modus zu starten, wird eine debug.log-Datei erstellt, in der alles gespeichert wird, was die Bibliothek tut. | FALSCH |
DownloadOrdner | Der Ordner, in dem die Videos gespeichert werden. Standard ist das Arbeitsverzeichnis | prozess.cwd() |
oAuthToken | Dieser Parameter ist sehr wichtig, da Sie damit Videos nur für Abonnenten herunterladen können. Es ist keine Zauberei, bevor Sie bereits Zugriff auf das Video in Ihrem Twitch-Konto haben, um es herunterladen zu können | „“ |
poolLimit | Dies sind die maximalen parallelen Downloads beim Herunterladen eines Videos | 20 |
Sie haben zwei Möglichkeiten: Sie können es aus Twitch-Cookies extrahieren, sobald Sie angemeldet sind. Das Feld heißt Auth-Token. Hier sind die Schritte, die Sie befolgen müssen:
* 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
Die zweite Option (sie befindet sich noch in der Entwicklung und wird nicht empfohlen) ist die Verwendung der TwitchOAuth-Klasse
import { TwitchOAuth, LoginOptions } from "twitch-video-downloader";const loginDefaultOptions: LoginOptions = {authy_token: "", // Dies ist die einzig nützliche Option. Verwenden Sie es, wenn Sie den Zwei-Faktor aktiviert haben, kopieren Sie den Code aus der Authenticator-Anwendung. Stellen Sie sicher, dass der Code noch gültig ist, wenn Sie diese Methode ausführen.client_id: „kimne78kx3ncx6brgo4mv6wki5h1ko“,remember_me: true,}const twitchOAuth = new TwitchOAuth();twitchOAuth.login(“<YOUR TWITCH USER>“, „<YOUR PASSWORD>“, loginDefaultOptions ).then(async (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
Veranstaltungsname | Beschreibung | Parameter |
---|---|---|
Fortschritts-Download | Das Ereignis wird jedes Mal aufgerufen, wenn der Download-Fortschritt aktualisiert wird | dezimal |
Fortschrittstranskodierung | Das Ereignis wird jedes Mal aufgerufen, wenn der Transkodierungsfortschritt aktualisiert wird | dezimal |
Download starten | Das Ereignis wird aufgerufen, wenn der Download startet | {vodID: string, qualität: string,folderPath:string} |
Transkodierung starten | Das Ereignis wird aufgerufen, wenn die Transkodierung beginnt | Leere |
Beispiel zur Registrierung Ihrer Zuhörer
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");const Resolutions = waiting downloader.getVideoResolutionsAvailable();
Die Funktion gibt ein Array mit den folgenden Informationen zurück
[{Qualität: '1080p60',Auflösung: '1920x1080',URL: 'https://...index-dvr.m3u8'},{Qualität: '1080p',Auflösung: '1920x1080',URL: 'https: //...index-dvr.m3u8'},{quality: '720p60',resolution: '1080x720',url: 'https://...index-dvr.m3u8'},...]
Mit dieser Funktion können Sie eine bestimmte Auflösung herunterladen, als Parameter müssen Sie ein Objekt mit den Feldern Qualität, Auflösung und URL übergeben
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");const Resolutions = Wait downloader.getVideoResolutionsAvailable();// Spezifische Auflösung herunterladenconst Download = Wait downloader.download(resolutions[0]) ;
Sobald die Ausführung der Funktion abgeschlossen ist, gibt sie ein Objekt mit den folgenden Informationen zurück
{vodID: '800558240',quality: '1080p60',folderPath: 'D:Projectstwitch-video-downloaderdownloadsvideos800558240hls1080p60'}
Mit dieser Funktion können Sie ein Video transkodieren. Als Parameter müssen Sie ein Objekt mit den Feldern Qualität, Auflösung und Ordnerpfad übergeben. Diese Felder werden von der Downloader-Methode zurückgegeben
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");const Resolutions = Wait downloader.getVideoResolutionsAvailable();const Download = Wait Downloader.download(resolutions[0]);// Transkodiert Video, von HLS zu MKVconst transcode = waiting downloader.transcode(download);
Die Funktion erhält außerdem optional ein zweites Argument in Form eines Objekts mit zusätzlichen Einstellungen.
const transcode = waiting downloader.transcode(download, {deleteHslFiles: false, // StandardwertoutputPath: „<WORKING DIRECTORY>/downloads/videos/<VIDEO ID>/mkv/“, // Standardwert});
Sobald die Ausführung der Funktion abgeschlossen ist, gibt sie ein Objekt mit den folgenden Informationen zurück
{vodID: '800558240',quality: '1080p60',filePath: 'D:Projectstwitch-video-downloaderdownloadsvideos800558240mkv1080p60.mkv'}
Mit dieser Funktion können Sie den Chat eines Videos herunterladen. Die Rückgabe der Funktion sind die Rohdaten von der Twitch-API
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");// Offline-Chat herunterladenconst comments = waiting downloader.downloadChat();
Ein Teil des Codes stammt aus Bibliotheken wie twitch-m3u8 und twitch-tools