Download da lista de reprodução do youtube com o youtube-dl, ignorando os arquivos existentes

22

Eu queria saber se era possível baixar uma lista de reprodução do youtube como mp3 usando youtube-dl, pulando os arquivos já existentes. Eu estou usando este comando:

youtube-dl --continue --ignore-errors --no-overwrites --extract-audio --audio-format mp3 --output "%(title)s.%(ext)s" [path here]

e, mesmo que eu o defina para não substituir, ele redefine tudo do zero. Isso é possível?

Guerreiro
fonte
mesmo que redownloads ele geralmente ignora gravar o arquivo por padrão, mesmo sem esse conjunto de opções
mchid
Ok, se eu mantiver o vídeo baixado junto com o arquivo mp3, a função de pular funcionará corretamente. Não é exatamente o que eu precisava, mas está tudo bem.
Warrior

Respostas:

45

Com a opção --download-archive FILE youtube-dl, lê e adiciona a uma lista de arquivos para não baixar novamente. Sempre que um arquivo é baixado com sucesso, esse ID de vídeo é adicionado FILE.

Você pode usá-lo da seguinte maneira:

youtube-dl --download-archive downloaded.txt --no-post-overwrites -ciwx --audio-format mp3 -o "%(title)s.%(ext)s" [path here]

Ele fará o download novamente de todos os vídeos anteriores que você não manteve pela última vez, à medida que cria a lista. Agora você pode excluí-los.

Se seus arquivos MP3 tivessem sido nomeados com o formato padrão de %(title)s-%(id)s.%(ext)s, você poderia ter evitado o download novamente criando a downloaded.txtpartir do youtube %(id)sem um terminal do bash da seguinte maneira:

for n in *.mp3
do if [[ "$n" =~ -[-_0-9a-zA-Z]{11}.mp3$ ]]
   then echo "youtube ${n: -15: 11}" >> downloaded.txt
   fi
done
Martin Thornton
fonte
1
Resposta valiosa aqui. Isso resolve meu problema. obrigado.
Guerreiro
O que tem -cwixaqui?
bteo
2
-cwixé uma alternativa mais curta para--continue --no-overwrites --ignore-errors --extract-audio
Martin Thornton
1
Vale ressaltar que, embora isso funcione perfeitamente para o YouTube, o youtube-dl também funciona com outros sites (por exemplo, Soundcloud) onde a -xopção parece interromper a saída. Você pode remover com segurança esse sinalizador se estiver baixando de uma fonte de áudio.
Christian
2

Isso é realmente útil. Se é de alguma utilidade para alguém, modifiquei o código para criar a lista de downloads existente para incluir todos os arquivos na pasta. Útil se estiver baixando áudio com o--extract-audio--audio-quality "best" sinalizadores e

for n in *.*
do if [[ "$n" =~ -[-_0-9a-zA-Z]{11}.*$ ]]
   then echo "youtube ${n: -15: 11}" >> downloaded.txt
   fi
done

Tenho certeza de que a maioria das pessoas poderia ter resolvido isso por conta própria, mas nem todo mundo é informado sobre os scripts do bash.

Jeremy Paul Carroll
fonte