Ferramenta NodeJS para download em lote de clipes e VODs (e seus metadados) de um canal Twitch.
Esta ferramenta PROVAVELMENTE pode baixar TODOS os clipes de um canal (não apenas os 1000 principais). Neste momento, esta ferramenta foi testada em vários canais grandes e parece ser capaz de obter todos os clipes (433 mil clipes de hasanabi
).
Para maximizar a cobertura de clipes, esta ferramenta não permitirá que a API Twitch relate mais de 500 clipes em um único período. A paginação além deste ponto não é confiável (limita cerca de 1k clipes, mas varia muito). Para corrigir isso, os períodos com mais de 500 clipes serão divididos em 2 e o processo será reiniciado até que um único período relate menos de 500 clipes.
Este projeto não está abandonado, mas ao mesmo tempo não está sendo desenvolvido ativamente devido às minhas limitações de tempo.
Percebi que o projeto cresceu além do escopo de seu nome: um downloader de clipes em lote, e percebi que precisava reorganizar tudo em partes mais gerenciáveis. Ainda estou descobrindo qual será o plano final de ataque, por enquanto é isso que estou planejando:
Isso já é feito principalmente agora, mas era necessário para manter as coisas do usuário longe do desenvolvedor. Isso também me permite focar em manter as principais funcionalidades atualizadas e testadas com frequência e também compartilhar o código mais importante entre todas as ferramentas
Atualmente esta ferramenta só baixa TUDO de um canal, e este não é o caso de uso mais comum (mesmo para mim). Pretendo adicionar coisas como: baixar VOD/clip único, baixar da lista de URLs, filtros, uma CLI melhor, etc.
Como a maioria dos usuários tem medo da CLI, quero implementar uma GUI usando Electron para tornar este projeto mais acessível e fácil de usar.
Esta ferramenta também é capaz de baixar todo o bate-papo VOD do Twitch, permitindo que um jogador reproduza todo o bate-papo da mesma forma que você faz para VODs que ainda estão disponíveis.
O plano final é transformar o pacote de funcionalidades principais em uma faca suíça de ferramentas para backups relacionados à mídia do Twitch, permitindo que qualquer desenvolvedor escreva facilmente sua própria ferramenta de backup/download sem ter que se preocupar com solicitações, múltiplas conexões, autenticação de API, busca de VOD. Listas de reprodução .m3u8, etc.
youtube-dl
;.ts
para .mp4
;Client-ID
e Client Secret
do aplicativo Twitch (explicados abaixo) - para acessar a API do Twitch. Cadastre um aplicativo no Twitch Console, clique em Gerenciar e copie o Client ID e gere um Client Secret .
Execute este comando em seu console:
npm install
Execute o script via NPM com (isso é necessário para carregar dotenv
):
npm run start
Todas as informações necessárias serão solicitadas na inicialização através do terminal.
Cada vez que você executar este script, ele solicitará o nome do canal e confirmará se deseja baixar tudo.
Aqui estão as descrições de cada variável:
DEBUG
: imprima uma tonelada de informações, apenas mantenha-as falsas para uso normal;CLIENT_ID
: ID do cliente da API Twitch;CLIENT_SECRET
: segredo do cliente da API Twitch;BASEPATH
: onde os arquivos (clipes, VODs, fragmentos) devem ser armazenados;YOUTUBE_DL_PATH
: onde o executável do youtube-dl está localizado;VIDEOS_PARALLEL_DOWNLOADS
: quantos fragmentos VOD devem ser baixados ao mesmo tempo.CLIPS_PARALLEL_DOWNLOADS
: quantos clipes devem ser baixados ao mesmo tempo;BIN_PATH
: caminho onde os binários serão armazenados;DEFAULT_PERIOD_HOURS
: tamanho padrão do período em horas (12 é um bom número para canais grandes. Reduza para evitar a divisão do período, aumente para reduzir contagens de API e acelerar a busca de URL).