Como baixar vídeos em massa e renomeá-los simultaneamente usando o youtube-dl?

1

Estou usando o Ubuntu 16.04 LTS. Quero fazer download de alguns vídeos YouTube . Eu vim a saber sobre a ferramenta de linha de comando youtube-dl desta pergunta . Como mencionado por Yasser, usando o comando

youtube-dl youtube.com/videolink --format mp4

Eu posso baixar esses arquivos de vídeo no formato mp4.

Agora quero baixar dez vídeos de diferentes canais. Eu tenho um arquivo de texto com os links do YouTube e os nomes pelos quais eu quero salvá-los. O arquivo de texto com o nome data.txt parece,

http://youtube.com/link1    name1
http://youtube.com/link2    name2
http://youtube.com/link3    name3 
.........                   ......
.........                   ......
http://youtube.com/link10    name10

Agora, quero executar o comando youtube-dl apenas uma vez, para que ele receba automaticamente os argumentos desse arquivo de texto e salve-os com os nomes necessários.

Se eu tiver apenas os links em data.txt , por exemplo,

http://youtube.com/link1
http://youtube.com/link2
http://youtube.com/link3 
.........
.........
http://youtube.com/link10

Eu posso baixar os vídeos usando o comando apenas uma vez com a opção -a

youtube-dl --format mp4 -a data.txt

Mas não consegui renomeá-los simultaneamente. De man page de youtube-dl descobri que existe uma opção --output para definir o nome do arquivo.

Como eu poderia fazer isso?

    
por ddas 22.03.2017 / 10:43

2 respostas

1

Se você estiver renomeando arquivos porque não gosta do estilo pelo qual youtube-dl os nomeia, use --output (ou -o ) com um modelo para personalizar a maneira como ele nomeia todos os arquivos dos metadados do Youtube.

Por exemplo, -o %(title)s.%(ext)s fará com que ele deixe de fora os IDs do YouTube de todos os nomes de arquivos.

Existem muitas opções, que podem depender da sua versão do youtube-dl , então detalhes completos sobre isso podem ser encontrados no terminal digitando:

man youtube-dl
/OUTPUT

No entanto, se quiser nomear cada arquivo individualmente, você poderá executar youtube-dl uma vez para cada linha no arquivo de texto da seguinte forma:

(while read URL NAME; do [ "$URL" ] && youtube-dl --format mp4 -o "$NAME" "$URL"; done) < data.txt

Para cada linha, divida-a na primeira execução de uma ou mais guias e espaços em um URL e NAME. Em seguida, se a linha não estiver em branco, passe-os para youtube-dl . Se a linha tiver apenas uma URL, o arquivo não será renomeado.

    
por Martin Thornton 03.04.2017 / 19:04
0

Sua solução é usar o arquivo config . No Linux e OS X, o arquivo de configuração do sistema está localizado em /etc/youtube-dl.conf e no arquivo de configuração de largura de usuário em ~/.config/youtube-dl/config . Observe que, por padrão, o arquivo de configuração pode não existir, portanto, talvez seja necessário criá-lo você mesmo. Eu não tinha nenhum em meu ~/.config , então eu tive que criar meu arquivo de configuração. Lá você pode passar qualquer argumento que você usaria normalmente com o comando inline no youtube-dl. Um bom caso de uso é a autenticação com o arquivo .netrc e o uso comum é o formato de saída. Aqui está a amostra config file:

#Authentication with .netrc file
--netrc

# Save all videos in a directory named vimeo in your home directory
-o "~/Vimeo/%(title)s %(upload_date)s i%(id)s.%(ext)s"


# Download best format available via direct link over HTTP/HTTPS protocol
-f '(bestvideo+bestaudio/best)[protocol^=http]'

# Simple file name
--restrict-filenames

Você pode usar --ignore-config se quiser desabilitar o arquivo de configuração para uma execução específica do youtube-dl. Em essência, assim como você está usando -a para baixar em lote, você pode usar o arquivo config para renomear seus downloads e toneladas de outras personalizações, se desejar. Tudo está documentado com bons exemplos em documentações oficiais do youtube-dl , especialmente leia o CONFIGURAÇÃO & amp; seções OUTPUT TEMPLATE .

    
por Saidul Hassan 20.04.2018 / 13:23