Como assinar um feed do YouTube na linha de comando do Linux?

Como assinar um feed do YouTube na linha de comando do Linux?

Quero me inscrever em um canal do YouTube e baixar automaticamente novos vídeos para minha máquina Linux.

Eu sei que poderia fazer isso por exemplo com o miro, mas não vou assistir os vídeos usando o Miro, quero escolher a qualidade e gostaria de rodar como um cronjob.

Deve ser capaz de:

  • saiba quais entradas de feed são novas e não baixe entradas antigas
  • retomar (ou pelo menos baixar novamente) downloads com falha/incompletos de sessões mais antigas

Existem soluções completas para isso?

Caso contrário, seria suficiente para mim (talvez até preferível) ter apenas um leitor de rss de linha de comando que lembrasse quais entradas já estavam lá e escrevesse os novos URLs de vídeo (por exemplohttp://www.youtube.com/watch?v=FodYFMaI4vQ&feature=youtube_gdatadehttp://gdata.youtube.com/feeds/api/users/tedxtalks/uploads) em um arquivo. Eu poderia então realizar o resto usando um bashscript e youtube-dl.

Quais seriam os programas utilizáveis ​​para esse fim?

Responder1

Finalmente fiz isso usando este bashscript:

#!/bin/bash

conffile="$@"

if [ ! -f "$@" ] || [ 3 -ne $(wc -l "$@" | grep -o '^[0-9]*') ]; then
        echo "This script writes a list of new video ids into an output file."
        echo "Argument must be a file containing three lines:"
        echo "      line 1: Feed url"
        echo "      line 2: Output file "
        echo "      line 3: Newest id from last program call. Leave empty for first run."

        exit 1
fi

mapfile -t < "$conffile"
url="${MAPFILE[0]}"
outfile="${MAPFILE[1]}"
lastid="${MAPFILE[2]}"

echo "Processing $id:"

allids=$(wget -q -O- "$url" | sed 's,href,\nhref,g' | sed -n -e "s,^.*href='http://www.youtube.com/watch?v=\([A-Za-z0-9_-]*\).*$,\1,p")

for id in $allids; do
    if [ "$lastid" == "$id" ]; then echo "No new items left." >&2; break; fi
    echo "$id"
    echo "Adding $id" >&2
done | tac >> "$outfile"

newlastid=$(echo $allids | grep -o "^[A-Za-z0-9_-]*")

echo  "$url"       > "$conffile"
echo  "$outfile"   >> "$conffile"
echo  "$newlastid" >> "$conffile"

Ele lê o URL do feed, o arquivo de saída e o vídeo conhecido mais recente de um arquivo de configuração e, em seguida, extrai os IDs do vídeo do feed. Esses IDs são então comparados com o ID conhecido mais recente (primeiro o item de feed mais recente). Itens mais recentes que isso serão adicionados aos arquivos de saída (agora o item mais antigo primeiro).

Aqui está um exemplo de arquivo de configuração youtube_tedx.conf:

http://gdata.youtube.com/feeds/api/users/tedxtalks/uploads
~/Documents/Movies/tedx/list.all
VxKMeE-gTQY

Que seria usado chamando ./get_new_youtube.sh youtube_tedx.conf.

O arquivo de saída ( list.all) pode então ser processado, por exemplo, usando youtube-dlum comando como youtube-dl -tca list.all && rm list.all.

informação relacionada