
É possível manter uma lista de reprodução pública do YouTube sincronizada com uma pasta local como arquivos mp3?
Caracteristicas principais:
- Adicione o arquivo mp3 à pasta local, se um novo vídeo for adicionado à lista de reprodução
- Exclua o arquivo mp3 na pasta local, se o respectivo vídeo for removido da lista de reprodução
Responder1
Você pode usaresseRepositório GitHub, que parece fazer exatamente o que você deseja.
Ou você pode usar plain youtube-dl
with --download-archive
, como visto na página de manual do youtube-dl, embora isso não remova nenhum vídeo:
Como faço para baixar apenas vídeos novos de uma playlist?
Use o recurso de arquivo de download. Com este recurso você deverá inicialmente baixar a playlist completa
--download-archive path/to/download/archive/file.txt
que gravará os identificadores de todos os vídeos em um arquivo especial. Cada execução subsequente do mesmo--download-archive
baixará apenas novos vídeos e pulará todos os vídeos que foram baixados anteriormente. Observe que apenas downloads bem-sucedidos são registrados no arquivo.Por exemplo, a princípio,
youtube-dl --download-archive archive.txt "https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re"
irá baixar a playlist PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re completa e criar um arquivo archive.txt. Cada execução subsequente baixará apenas novos vídeos, se houver:
youtube-dl --download-archive archive.txt "https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re"
Responder2
Isso é mais uma solução alternativa do que uma resposta direta, mas se você concordar em baixar novamente alguns dos arquivos da lista de reprodução mais antigos, poderá configurar um cronjob para localizar e excluir arquivos em um diretório de destino usando find
.
Você deve revisar a lista de reprodução e estimar quanto tempo os arquivos normalmente permanecem nela antes de desaparecerem e usar esse número de dias para sua variável. Aqui no meu exemplo escolhi 30 dias.
Aqui está um exemplo de script Bash para o cron ser executado como um trabalho @daily:
#! /bin/bash
# Delete all files in a directory older than 30 days
# (careful, this is recursive and will delete files in subdirectories)
find /PATH/TO/youtube-dl-playlist-files -mtime +30 -delete
Todos os arquivos que ainda estiverem na lista de reprodução, mas com mais de 30 dias, serão excluídos e o youtube-dl irá baixá-los novamente na próxima vez que você executá-lo. Isso não é o ideal, mas pode ser bom o suficiente.