Outil NodeJS pour télécharger par lots des clips et des VOD (et ses métadonnées) à partir d'une chaîne Twitch.
Cet outil peut PROBABLEMENT télécharger TOUS les clips d'une chaîne (pas seulement les 1000 meilleurs). À l'heure actuelle, cet outil a été testé sur plusieurs grandes chaînes et semble être capable d'obtenir tous les clips (433 000 clips de hasanabi
).
Afin de maximiser la couverture des clips, cet outil ne permettra pas à l'API Twitch de signaler plus de 500 clips sur une seule période. La pagination au-delà de ce point n'est pas fiable (limite à environ 1 000 clips mais varie beaucoup). Pour résoudre ce problème, les périodes contenant plus de 500 clips seront divisées en 2 et le processus redémarrera jusqu'à ce qu'une seule période rapporte moins de 500 clips.
Ce projet n'est pas abandonné mais en même temps n'est pas activement développé en raison de mes contraintes de temps.
J'ai réalisé que le projet dépassait la portée de son nom : un téléchargeur de clips par lots, et j'ai pensé que je devais tout réorganiser en éléments plus faciles à gérer. Je suis encore en train de déterminer quel sera le plan d'attaque final, pour l'instant voici ce que je prévois :
Cela est principalement fait maintenant, mais était nécessaire pour garder les éléments des utilisateurs à l'écart des éléments des développeurs. Cela me permet également de me concentrer sur le maintien des fonctionnalités de base à jour et fréquemment testées et également de partager le code le plus important entre tous les outils.
Actuellement, cet outil ne télécharge TOUT qu'à partir d'une chaîne, et ce n'est pas le cas d'utilisation le plus courant (même pour moi). Je prévois d'ajouter des éléments tels que : télécharger une seule VOD/clip, télécharger à partir d'une liste d'URL, des filtres, une meilleure CLI, etc.
Étant donné que la plupart des utilisateurs ont peur de la CLI, je souhaite implémenter une interface graphique utilisant Electron pour rendre ce projet plus accessible et convivial.
Cet outil est également capable de télécharger l'intégralité du chat VOD depuis Twitch, permettant à un joueur de rejouer l'intégralité du chat comme vous le pouvez pour les VOD encore disponibles.
Le plan ultime est de transformer le package de fonctionnalités de base en un couteau suisse pour les sauvegardes liées aux médias Twitch, permettant à tout développeur d'écrire facilement son propre outil de sauvegarde/téléchargement sans avoir à se soucier des requêtes, des connexions multiples, de l'authentification API, de la récupération de la VOD. Listes de lecture .m3u8, etc.
youtube-dl
;.ts
en .mp4
;Client-ID
et Client Secret
de l'application Twitch (expliqués ci-dessous) - pour accéder à l'API de Twitch. Enregistrez une application sur la console Twitch, cliquez sur Gérer , copiez l' ID client et générez un secret client .
Exécutez cette commande sur votre console :
npm install
Exécutez le script via NPM avec (cela est nécessaire pour charger dotenv
) :
npm run start
Toutes les informations nécessaires seront demandées au démarrage via le terminal.
Chaque fois que vous exécuterez ce script, il vous demandera un nom de chaîne, puis confirmera si vous souhaitez tout télécharger.
Voici les descriptions de chaque variable :
DEBUG
: imprime une tonne d'informations, gardez-les simplement fausses pour une utilisation normale ;CLIENT_ID
: ID client de l'API Twitch ;CLIENT_SECRET
: secret client de l'API Twitch ;BASEPATH
: où les fichiers (clips, VOD, fragments) doivent être stockés ;YOUTUBE_DL_PATH
: où se trouve l'exécutable youtube-dl ;VIDEOS_PARALLEL_DOWNLOADS
: combien de fragments VOD doivent être téléchargés en même temps.CLIPS_PARALLEL_DOWNLOADS
: combien de clips doivent être téléchargés en même temps ;BIN_PATH
: chemin où les binaires seront stockés ;DEFAULT_PERIOD_HOURS
: taille de la période par défaut en heures (12 est un bon nombre pour les grandes chaînes. Réduisez-la pour éviter le fractionnement des périodes, augmentez-la pour réduire le nombre d'API et accélérer la récupération des URL).