Biblioteca para descargar los videos, videos para subs y comentarios de twitch.
$ npm i twitch-video-descargador
Se necesita la biblioteca FFMPEG para transcodificar archivos de vídeo de m3u8 a mkv
importar { unirse } desde "ruta"; importar { writeFileSync } desde "fs"; importar { VideoDownloader, asegurarDirectoryExists } desde "twitch-video-downloader";(async () => {pruebe {const downloader = new VideoDownloader("https ://www.twitch.tv/videos/800558240");downloader.on("progreso-descarga", (progreso) => console.log(`Descargado ${progress.toFixed(2)}%`));downloader.on("progress-transcode", (progreso) => console.log(`Transcodificado ${progress.toFixed(2) )}%`));downloader.on("iniciar-descarga", (e) => console.log(`¡Descarga iniciada! el `, e));downloader.on("iniciar-transcodificar", () => console.log(`¡Transcodificado iniciado!`));// Obtener todas las resoluciones disponibles para este videoconst resoluciones = await downloader.getVideoResolutionsAvailable();// Descargar resolución específicaconst download = aguardar downloader.download(resoluciones[0] );// Información y ruta de los archivos hls descargadosconsole.log(descargar);// Video transcodificado, de HLS a MKVconst transcode = await downloader.transcode(download);// Información y ruta del video trancodificadoconsole.log(transcode);// Descargar chatconst comments sin conexión = await downloader.downloadChat();// Verifique que el directorio exista, si no, cree itensureDirectoryExists(join( __dirname, "./../downloads/chats"));// Guardar todos los comentarioswriteFileSync(join(__dirname, `./../downloads/chats/${comments.vodID}.chat`), comentarios.content);} catch (error) {console.log(error);}})();
Este código puede resultar muy útil para tener una descripción general rápida de la biblioteca. Si clona el repositorio, puede encontrar este mismo archivo en la siguiente ruta.
twitch-video-downloader │ └───example │ index.ts
Una vez que las dependencias del proyecto estén instaladas con
instalación $ npm
Puedes jugar con este archivo modificándolo y descargando los vídeos que te interesen. Para ejecutar el script ejecute el siguiente comando
$ npm inicio de ejecución:ver
Si desea saber todo lo que hace la biblioteca, ejecute el siguiente comando para ejecutar el script en modo de depuración
$ npm ejecutar dev:ver
O puede pasar el parámetro de depuración en las opciones
descargador constante = nuevo VideoDownloader ("https://www.twitch.tv/videos/800558240", {depuración: verdadero});
VideoDownloader es la clase principal de la biblioteca, es el punto de entrada para comenzar a descargar videos o chatear
const defaultOptions = {clientID: "kimne78kx3ncx6brgo4mv6wki5h1ko",debug: false,downloadFolder: Process.cwd(),oAuthToken: "",poolLimit: 20};const downloader = new VideoDownloader("https://www.twitch.tv/videos /800558240", opciones predeterminadas);
Opción | Definición | Por defecto |
---|---|---|
ID de cliente | Este es un parámetro utilizado por la plataforma Twitch, el valor es el mismo sin importar qué cuenta se use, por lo que probablemente no deberías cambiarlo. | kimne78kx3ncx6brgo4mv6wki5h1ko |
depurar | Para iniciar la biblioteca en modo de depuración, se creará un archivo debug.log donde se guardará todo lo que esté haciendo la biblioteca. | FALSO |
descargarcarpeta | La carpeta donde se guardarán los videos. El valor predeterminado es el directorio de trabajo. | proceso.cwd() |
oToken de autenticación | Este parámetro es muy importante porque con este puedes descargar videos solo para suscriptores. No es mágico, antes ya debes tener acceso al vídeo en tu cuenta de twitch para poder descargarlo. | "" |
límite de grupo | Son las descargas paralelas máximas al descargar un vídeo | 20 |
Tienes dos opciones, puedes extraerlo de las cookies de Twitch una vez que hayas iniciado sesión, el campo se llama auth-token. Estos son los pasos que debes seguir:
* 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 segunda opción (aún está en desarrollo, no es recomendable) es utilizar la clase TwitchOAuth
importar { TwitchOAuth, LoginOptions } de "twitch-video-downloader";const loginDefaultOptions: LoginOptions = {authy_token: "", // Esta es la única opción útil. Úsalo cuando tengas el Dos Factor activado, copia el código de la aplicación Authenticator. Asegúrese de que el código siga siendo válido cuando ejecute este métodoclient_id: "kimne78kx3ncx6brgo4mv6wki5h1ko",remember_me: true,}const twitchOAuth = new TwitchOAuth();twitchOAuth.login("<SU USUARIO DE TWITCH>", "<SU CONTRASEÑA>", loginDefaultOptions ).entonces(asíncrono (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
Nombre del evento | Descripción | Parámetros |
---|---|---|
descarga-progreso | El evento se llama cada vez que se actualiza el progreso de la descarga. | decimal |
transcodificación de progreso | El evento se llama cada vez que se actualiza el progreso de la transcodificación. | decimal |
iniciar-descargar | El evento se llama cuando comienza la descarga. | { vodID: cadena, calidad: cadena, ruta de carpeta: cadena} |
iniciar-transcodificar | El evento se llama cuando comienza la transcodificación. | vacío |
Ejemplo para registrar a tus oyentes
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");downloader.on("<NOMBRE DEL EVENTO>", (param) => console.log(param));
descargador constante = nuevo VideoDownloader("https://www.twitch.tv/videos/800558240"); resoluciones constantes = await downloader.getVideoResolutionsAvailable();
La función devuelve una matriz con la siguiente información
[{calidad: '1080p60',resolución: '1920x1080',url: 'https://...index-dvr.m3u8'},{calidad: '1080p',resolución: '1920x1080',url: 'https: //...index-dvr.m3u8'},{calidad: '720p60',resolución: '1080x720',url: 'https://...index-dvr.m3u8'},...]
Esta función te permite descargar una resolución específica, como parámetro tienes que pasar un objeto con los campos calidad, resolución y url
descargador const = nuevo VideoDownloader("https://www.twitch.tv/videos/800558240");resoluciones const = aguarda downloader.getVideoResolutionsAvailable();// Descargar resolución específicadescarga const = aguarda downloader.download(resoluciones[0]) ;
Una vez que la función termina de ejecutarse, devuelve un objeto con la siguiente información
{vodID: '800558240',calidad: '1080p60',ruta de la carpeta: 'D:Projectstwitch-video-downloaderdownloadsvideos800558240hls1080p60'}
Esta función te permite transcodificar un video, como parámetro debes pasar un objeto con los campos calidad, resolución y ruta de carpeta, estos campos se devuelven mediante el método de descarga.
descargador const = nuevo VideoDownloader("https://www.twitch.tv/videos/800558240");resoluciones const = aguardar downloader.getVideoResolutionsAvailable();descarga const = aguardar downloader.download(resoluciones[0]);// Trancodificado video, de HLS a MKVconst transcodificar = esperar downloader.transcode(descargar);
La función también recibe un segundo argumento opcional en forma de objeto con configuraciones adicionales.
const transcode = await downloader.transcode(download, {deleteHslFiles: false, // Valor predeterminadooutputPath: "<DIRECTORIO DE TRABAJO>/downloads/videos/<ID DE VIDEO>/mkv/", // Valor predeterminado});
Una vez que la función termina de ejecutarse, devuelve un objeto con la siguiente información
{vodID: '800558240',calidad: '1080p60',filePath: 'D:Projectstwitch-video-downloaderdownloadsvideos800558240mkv1080p60.mkv'}
Esta función te permite descargar el chat de un vídeo. El retorno de la función son los datos sin procesar de la API de Twitch.
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");// Descargar chat sin conexiónconst comments = await downloader.downloadChat();
Parte del código proviene de bibliotecas como twitch-m3u8 y twitch-tools.