Biblioteca para baixar os vídeos, vídeos para inscritos e comentários do Twitch.
$ npm i twitch-video-downloader
A biblioteca FFMPEG é necessária para transcodificar arquivos de vídeo de m3u8 para mkv
importar { join } de "caminho";importar { writeFileSync } de "fs";importar { VideoDownloader, garantirDirectoryExists } de "twitch-video-downloader";(async () => {tentar {const downloader = new VideoDownloader("https ://www.twitch.tv/videos/800558240");downloader.on("progress-download", (progresso) => console.log(`Baixado ${progress.toFixed(2)}%`));downloader.on("progress-transcode", (progress) => console.log(`Transcodificado ${progress.toFixed(2)} %`));downloader.on("start-download", (e) => console.log(`Download iniciado! em `, e));downloader.on("start-transcode", () => console.log(`Transcoded iniciado!`));// Obtenha todas as resoluções disponíveis para este videoconst resoluções = await downloader.getVideoResolutionsAvailable();// Baixe a resolução específicaconst download = await downloader.download(resolutions[0]);// Informações e caminho dos arquivos hls baixadosconsole.log(download);// Vídeo transcrito, de HLS para MKVconst transcode = await downloader.transcode(download);// Informações e caminho do videoconsole trancoded.log(transcode);// Download offline chatconst comments = await downloader.downloadChat();// Verifique se o diretório existe, caso contrário crie itensureDirectoryExists(join( __dirname, "./../downloads/chats"));// Salvar todos os comentárioswriteFileSync(join(__dirname, `./../downloads/chats/${comments.vodID}.chat`), comments.content);} catch (erro) {console.log(error);}})();
Este código pode ser muito útil para ter uma visão geral rápida da biblioteca. Se você clonar o repositório, poderá encontrar esse mesmo arquivo no caminho a seguir.
twitch-video-downloader │ └───example │ index.ts
Depois que as dependências do projeto forem instaladas com
$ npm instalar
Você pode brincar com este arquivo modificando-o e baixando os vídeos de seu interesse. Para executar o script execute o seguinte comando
$ npm run start:assistir
Se você quiser saber tudo o que a biblioteca está fazendo, execute o seguinte comando para executar o script em modo de depuração
$ npm execute dev: assistir
Ou você pode passar o parâmetro debug nas opções
const downloader = novo VideoDownloader("https://www.twitch.tv/videos/800558240", {debug: true});
VideoDownloader é a classe principal da biblioteca, é o ponto de entrada para iniciar o download de vídeos ou bate-papo
const defaultOptions = {clientID: "kimne78kx3ncx6brgo4mv6wki5h1ko",debug: false,downloadFolder: process.cwd(),oAuthToken: "",poolLimit: 20};const downloader = new VideoDownloader("https://www.twitch.tv/videos /800558240", opções padrão);
Opção | Definição | Padrão |
---|---|---|
ID do cliente | Este é um parâmetro usado pela plataforma Twitch, o valor é o mesmo independentemente da conta usada, então provavelmente você não deve alterá-lo | kimne78kx3ncx6brgo4mv6wki5h1ko |
depurar | Para iniciar a biblioteca em modo debug, será criado um arquivo debug.log onde será salvo tudo o que a biblioteca estiver fazendo. | falso |
pasta de download | A pasta onde os vídeos serão salvos. O padrão é o diretório de trabalho | processo.cwd() |
oAuthToken | Este parâmetro é muito importante porque com ele você pode baixar vídeos apenas para assinantes. Não é mágica, antes você já deve ter acesso ao vídeo na sua conta do Twitch para poder baixá-lo | "" |
poolLimit | Eles são os downloads paralelos máximos ao baixar um vídeo | 20 |
Você tem duas opções: você pode extraí-lo dos cookies do Twitch assim que estiver logado, o campo é chamado de token de autenticação. Aqui estão as etapas que você deve 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
A segunda opção (ainda está em desenvolvimento, não é recomendado) é usar a classe TwitchOAuth
import { TwitchOAuth, LoginOptions } from "twitch-video-downloader";const loginDefaultOptions: LoginOptions = {authy_token: "", // Esta é a única opção útil. Use-o quando tiver o Dois Fatores ativado, copie o código do aplicativo Autenticador. Certifique-se de que o código ainda seja válido ao executar este métodoclient_id: "kimne78kx3ncx6brgo4mv6wki5h1ko",remember_me: true,}const twitchOAuth = new TwitchOAuth();twitchOAuth.login("<YOUR TWITCH USER>", "<YOUR PASSWORD>", loginDefaultOptions ).então(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
Nome do evento | Descrição | Parâmetros |
---|---|---|
download de progresso | O evento é chamado sempre que o progresso do download é atualizado | decimal |
transcodificação de progresso | O evento é chamado sempre que o progresso da transcodificação é atualizado | decimal |
iniciar download | O evento é chamado quando o download começa | { vodID: string, qualidade: string, folderPath:string} |
iniciar-transcodificação | O evento é chamado quando a transcodificação começa | vazio |
Exemplo para cadastrar seus ouvintes
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");downloader.on("<NOME DO EVENTO>", (param) => console.log(param));
const downloader = novo VideoDownloader("https://www.twitch.tv/videos/800558240");const resoluções = aguardar downloader.getVideoResolutionsAvailable();
A função retorna um array com as seguintes informações
[{qualidade: '1080p60', resolução: '1920x1080',url: 'https://...index-dvr.m3u8'},{qualidade: '1080p', resolução: '1920x1080',url: 'https: //...index-dvr.m3u8'},{qualidade: '720p60',resolução: '1080x720',url: 'https://...index-dvr.m3u8'},...]
Esta função permite baixar uma resolução específica, como parâmetro você deve passar um objeto com os campos qualidade, resolução e url
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");const resoluções = aguardar downloader.getVideoResolutionsAvailable();// Baixar resolução específicaconst download = aguardar downloader.download(resolutions[0]) ;
Assim que a função termina de ser executada, ela retorna um objeto com as seguintes informações
{vodID: '800558240',qualidade: '1080p60',folderPath: 'D:Projectstwitch-video-downloaderdownloadsvideos800558240hls1080p60'}
Esta função permite transcodificar um vídeo, como parâmetro você deve passar um objeto com os campos qualidade, resolução e folderPath, estes campos são retornados pelo método downloader
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");const resoluções = await downloader.getVideoResolutionsAvailable();const download = await downloader.download(resolutions[0]);// Trancodificado vídeo, de HLS para MKVconst transcode = await downloader.transcode(download);
A função também recebe um segundo argumento opcional na forma de um objeto com configurações adicionais.
const transcode = await downloader.transcode(download, {deleteHslFiles: false, // Valor padrãooutputPath: "<DIRETÓRIO DE TRABALHO>/downloads/videos/<ID DE VÍDEO>/mkv/", // Valor padrão});
Assim que a função termina de ser executada, ela retorna um objeto com as seguintes informações
{vodID: '800558240',qualidade: '1080p60',filePath: 'D:Projetostwitch-video-downloaderdownloadsvideos800558240mkv1080p60.mkv'}
Esta função permite baixar o chat de um vídeo. O retorno da função são os dados brutos da API do Twitch
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");// Baixar chat offlineconst comments = await downloader.downloadChat();
Parte do código vem de bibliotecas como twitch-m3u8 e twitch-tools