¿Cómo suscribirse a un canal de YouTube desde la línea de comandos de Linux?

¿Cómo suscribirse a un canal de YouTube desde la línea de comandos de Linux?

Quiero suscribirme a un canal de YouTube y descargar automáticamente nuevos videos a mi máquina Linux.

Sé que podría hacer esto, por ejemplo, con Miro, pero no veré los videos usando Miro, quiero elegir la calidad y me gustaría ejecutarlo como un cronjob.

Debería poder:

  • saber qué entradas del feed son nuevas y no descargar entradas antiguas
  • reanudar (o al menos volver a descargar) descargas fallidas/incompletas de sesiones anteriores

¿Existen soluciones completas para esto?

Si no, sería suficiente para mí (tal vez incluso preferible) tener un lector de rss de línea de comando que recuerde qué entradas ya han estado allí y escriba las nuevas URL de los videos (por ejemplo,http://www.youtube.com/watch?v=FodYFMaI4vQ&feature=youtube_gdatadehttp://gdata.youtube.com/feeds/api/users/tedxtalks/uploads) en un archivo. Luego podría realizar el resto usando un bashscript y youtube-dl.

¿Cuáles serían los programas utilizables para este propósito?

Respuesta1

Finalmente lo hice 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"

Lee la URL del feed, el archivo de salida y el vídeo conocido más reciente de un archivo de configuración y luego extrae los identificadores de vídeo del feed. Luego, estos identificadores se comparan con el último identificador conocido (primero el elemento más reciente del feed). Los elementos más nuevos se agregarán a los archivos de salida (ahora el elemento más antiguo primero).

Aquí hay un archivo de configuración de ejemplo youtube_tedx.conf:

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

Que se usaría llamando ./get_new_youtube.sh youtube_tedx.conf.

El archivo de salida ( list.all) luego se puede procesar, por ejemplo, usando youtube-dlun comando como youtube-dl -tca list.all && rm list.all.

información relacionada