Herramienta NodeJS para descargar por lotes clips y VOD (y sus metadatos) desde un canal de Twitch.
Esta herramienta PROBABLEMENTE puede descargar TODOS los clips de un canal (no solo los 1000 principales). En este momento, esta herramienta ha sido probada en múltiples canales grandes y parece ser capaz de obtener todos los clips (433k clips de hasanabi
).
Para maximizar la cobertura de clips, esta herramienta no permitirá que la API de Twitch informe más de 500 clips en un solo período. La paginación más allá de este punto no es confiable (tiene un límite de alrededor de 1k clips, pero varía mucho). Para solucionar este problema, los períodos con más de 500 clips se dividirán en 2 y el proceso se reiniciará hasta que un solo período informe menos de 500 clips.
Este proyecto no está abandonado pero al mismo tiempo no se está desarrollando activamente debido a mis limitaciones de tiempo.
Me di cuenta de que el proyecto iba más allá del alcance de su nombre: un descargador de clips por lotes, y pensé que necesitaba reorganizar todo en partes más manejables. Todavía estoy averiguando cuál será el plan de ataque final, por ahora esto es lo que estoy planeando:
Esto ya se ha hecho en su mayor parte, pero era necesario para mantener las cosas del usuario alejadas de las del desarrollador. Esto también me permite concentrarme en mantener las funcionalidades principales actualizadas y probadas con frecuencia y también compartir el código más importante entre todas las herramientas.
Actualmente, esta herramienta solo descargará TODO de un canal y este no es el caso de uso más común (ni siquiera para mí). Planeo agregar cosas como: descargar VOD/clip único, descargar desde una lista de URL, filtros, una CLI mejor, etc.
Dado que la mayoría de los usuarios le temen a la CLI, quiero implementar una GUI usando Electron para que este proyecto sea más accesible y fácil de usar.
Esta herramienta también es capaz de descargar todo el chat VOD de Twitch, lo que permite al jugador reproducir todo el chat tal como usted puede hacerlo con los VOD que aún están disponibles.
El plan final es convertir el paquete de funcionalidades principales en la navaja suiza de herramientas para copias de seguridad relacionadas con medios de Twitch, permitiendo a cualquier desarrollador escribir fácilmente su propia herramienta de copia de seguridad/descarga sin tener que preocuparse por solicitudes, conexiones múltiples, autenticación de API o obtención de VOD. Listas de reproducción .m3u8, etc.
youtube-dl
;.ts
a .mp4
;Client-ID
y Client Secret
de la aplicación Twitch (explicados a continuación): para acceder a la API de Twitch. Registre una aplicación en Twitch Console, haga clic en Administrar , copie el ID del cliente y genere un secreto de cliente .
Ejecute este comando en su consola:
npm install
Ejecute el script a través de NPM con (esto es necesario para cargar dotenv
):
npm run start
Toda la información necesaria se solicitará al inicio a través de la terminal.
Cada vez que ejecute este script, le pedirá el nombre de un canal y luego confirmará si desea descargarlo todo.
Aquí están las descripciones de cada variable:
DEBUG
: imprime una jodida tonelada de información, solo mantenla falsa para uso normal;CLIENT_ID
: ID de cliente de la API de Twitch;CLIENT_SECRET
: Secreto del cliente API de Twitch;BASEPATH
: donde se deben almacenar los archivos (clips, VOD, fragmentos);YOUTUBE_DL_PATH
: donde se encuentra el ejecutable youtube-dl;VIDEOS_PARALLEL_DOWNLOADS
: cuántos fragmentos VOD se deben descargar al mismo tiempo.CLIPS_PARALLEL_DOWNLOADS
: cuántos clips se deben descargar al mismo tiempo;BIN_PATH
: ruta donde se almacenarán los binarios;DEFAULT_PERIOD_HOURS
: tamaño de período predeterminado en horas (12 es un buen número para canales grandes. Disminuya este valor para evitar la división de períodos, increméntelo para reducir los recuentos de API y acelerar la recuperación de URL).