Bibliothèque pour télécharger les vidéos, les vidéos pour les abonnés et les commentaires de Twitch.
$ npm je twitch-video-downloader
La bibliothèque FFMPEG est nécessaire pour transcoder les fichiers vidéo de m3u8 en mkv
importer { join } depuis "path"; importer { writeFileSync } depuis "fs"; importer { VideoDownloader, EnsureDirectoryExists } depuis "twitch-video-downloader";(async () => {try {const downloader = new VideoDownloader("https ://www.twitch.tv/videos/800558240");downloader.on("progress-download", (progress) => console.log(`Téléchargé ${progress.toFixed(2)}%`));downloader.on("progress-transcode", (progress) => console.log(`Transcodé ${progress. toFixed(2)}%`));downloader.on("start-download", (e) => console.log(`Téléchargement démarré ! sur `, e));downloader.on("start-transcode", () => console.log(`Transcoded wanted!`));// Obtenez toutes les résolutions disponibles pour cette vidéoconst résolutions = wait downloader.getVideoResolutionsAvailable();// Télécharger une résolution spécifiqueconst download = wait downloader.download(resolutions[0]);// Informations et chemin des fichiers hls téléchargésconsole.log(download);// Vidéo transcodée, de HLS vers MKVconst transcode = wait downloader.transcode(download);// Informations et chemin du videoconsole.log(transcode) transcodé);// Télécharger les commentaires chatconst hors ligne = wait downloader.downloadChat();// Vérifiez que le répertoire existe, sinon créez itensureDirectoryExists(join(__dirname, "./../downloads/chats"));// Enregistrer tous les commentaireswriteFileSync(join(__dirname, `./../downloads/chats/${comments.vodID}.chat`), comments.content);} catch (erreur) {console.log(error);}})();
Ce code peut être très utile pour avoir un aperçu rapide de la bibliothèque. Si vous clonez le référentiel, vous pouvez trouver ce même fichier dans le chemin suivant.
twitch-video-downloader │ └───example │ index.ts
Une fois les dépendances du projet installées avec
$ npm installer
Vous pouvez jouer avec ce fichier en le modifiant et en téléchargeant les vidéos qui vous intéressent. Pour exécuter le script, exécutez la commande suivante
$ npm run start:regarder
Si vous voulez savoir tout ce que fait la bibliothèque, exécutez la commande suivante pour exécuter le script en mode débogage
$ npm exécuter dev: regarder
Ou vous pouvez passer le paramètre debug dans les options
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240", {debug : true});
VideoDownloader est la classe principale de la bibliothèque, c'est le point d'entrée pour commencer à télécharger des vidéos ou à discuter
const defaultOptions = {clientID : "kimne78kx3ncx6brgo4mv6wki5h1ko", debug : false, downloadFolder : process.cwd(),oAuthToken : "", poolLimit : 20}; const downloader = new VideoDownloader ("https://www.twitch.tv/videos /800558240", Options par défaut);
Option | Définition | Défaut |
---|---|---|
ID client | Il s'agit d'un paramètre utilisé par la plateforme Twitch, la valeur est la même quel que soit le compte utilisé, vous ne devriez donc probablement pas la modifier | kimne78kx3ncx6brgo4mv6wki5h1ko |
déboguer | Pour démarrer la bibliothèque en mode débogage, un fichier debug.log sera créé dans lequel tout ce que fait la bibliothèque sera enregistré. | FAUX |
téléchargerDossier | Le dossier dans lequel les vidéos seront enregistrées. La valeur par défaut est le répertoire de travail | processus.cwd() |
oAuthToken | Ce paramètre est très important car avec lui, vous pouvez télécharger des vidéos uniquement pour les abonnés. Ce n'est pas magique, avant il faut déjà avoir accès à la vidéo dans son compte Twitch pour pouvoir la télécharger | "" |
poolLimit | Ce sont les téléchargements parallèles maximum lors du téléchargement d'une vidéo | 20 |
Vous avez deux options, vous pouvez l'extraire des cookies Twitch une fois connecté, le champ s'appelle auth-token. Voici les étapes à suivre :
* 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
La deuxième option (elle est encore en développement, ce n'est pas recommandé) est d'utiliser la classe TwitchOAuth
import { TwitchOAuth, LoginOptions } from "twitch-video-downloader";const loginDefaultOptions : LoginOptions = {authy_token : "", // C'est la seule option utile. Utilisez-le lorsque vous avez activé le double facteur, copiez le code depuis l'application Authenticator. Assurez-vous que le code est toujours valide lorsque vous exécutez cette méthodeclient_id : "kimne78kx3ncx6brgo4mv6wki5h1ko",remember_me: true,}const twitchOAuth = new TwitchOAuth();twitchOAuth.login("<VOTRE UTILISATEUR TWITCH>", "<VOTRE MOT DE PASSE>", 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
Nom de l'événement | Description | Paramètres |
---|---|---|
téléchargement de progression | L'événement est appelé à chaque fois que la progression du téléchargement est mise à jour | décimal |
progrès-transcodage | L'événement est appelé à chaque fois que la progression du transcodage est mise à jour | décimal |
démarrer le téléchargement | L'événement est appelé au démarrage du téléchargement | { vodID : chaîne, qualité : chaîne, chemin du dossier : chaîne} |
démarrer le transcodage | L'événement est appelé lorsque le transcodage démarre | vide |
Exemple pour inscrire vos auditeurs
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");downloader.on("<NOM DE L'ÉVÉNEMENT>", (param) => console.log(param));
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");const résolutions = wait downloader.getVideoResolutionsAvailable();
La fonction renvoie un tableau avec les informations suivantes
[{qualité : '1080p60',résolution : '1920x1080',url : 'https://...index-dvr.m3u8'},{qualité : '1080p',résolution : '1920x1080',url : 'https : //...index-dvr.m3u8'},{qualité : '720p60',résolution : '1080x720',url : 'https://...index-dvr.m3u8'},...]
Cette fonction permet de télécharger une résolution spécifique, en paramètre il faut passer un objet avec les champs qualité, résolution et url
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");const résolutions = wait downloader.getVideoResolutionsAvailable();// Télécharger une résolution spécifiqueconst download = wait downloader.download(resolutions[0]) ;
Une fois l'exécution de la fonction terminée, elle renvoie un objet avec les informations suivantes
{vodID : '800558240', qualité : '1080p60', chemin du dossier : 'D:Projectstwitch-video-downloaderdownloadsvideos800558240hls1080p60'}
Cette fonction permet de transcoder une vidéo, en paramètre vous devez passer un objet avec les champs qualité, résolution et dossierPath, ces champs sont renvoyés par la méthode downloader
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");const résolutions = wait downloader.getVideoResolutionsAvailable();const download = wait downloader.download(resolutions[0]);// Trancodé vidéo, de HLS à MKVconst transcode = wait downloader.transcode(download);
La fonction reçoit également un deuxième argument facultatif sous la forme d'un objet avec des paramètres supplémentaires.
const transcode = wait downloader.transcode(download, {deleteHslFiles : false, // ValueoutputPath par défaut : "<WORKING DIRECTORY>/downloads/videos/<VIDEO ID>/mkv/", // Valeur par défaut});
Une fois l'exécution de la fonction terminée, elle renvoie un objet avec les informations suivantes
{vodID : '800558240', qualité : '1080p60', filePath : 'D:Projectstwitch-video-downloaderdownloadsvideos800558240mkv1080p60.mkv'}
Cette fonction permet de télécharger le chat d'une vidéo. Le retour de la fonction correspond aux données brutes de l'API Twitch
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");// Télécharger les commentaires de chatconst hors ligne = wait downloader.downloadChat();
Une partie du code provient de bibliothèques comme Twitch-m3u8 et Twitch-Tools