4

Я хочу подписаться на канал YouTube и автоматически загружать новые видео на мой Linux-компьютер.

Я знаю, что мог бы сделать это, например, с помощью miro, но я не буду смотреть видео с использованием Miro, хочу выбрать качество и хотел бы запустить его как cronjob.

Это должно быть в состоянии:

  • знать, какие записи фида новые и не загружать старые записи
  • возобновить (или хотя бы перезагружать) неудачные / неполные загрузки из старых сеансов

Есть ли полные решения для этого?

Если нет, то мне будет достаточно (может быть, даже предпочтительнее) просто иметь программу чтения rss командной строки, которая запоминает, какие записи уже были там, и записывает новые URL-адреса видео (например, http://www.youtube.com/watch?v). = FodYFMaI4vQ & feature = youtube_gdata из http://gdata.youtube.com/feeds/api/users/tedxtalks/uploads) в файл. Затем я мог бы выполнить остальное, используя скрипт bash и youtube-dl .

Какие программы могут быть использованы для этой цели?

1 ответ1

2

Я , наконец , сделал это с помощью этого bash скрипт:

#!/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"

Он считывает URL-адрес канала, выходной файл и новейшее известное видео из файла конфигурации, а затем извлекает идентификаторы видео из канала. Затем эти идентификаторы сравниваются с последним известным идентификатором (сначала с новым элементом фида). Элементы, более новые, чем это, будут добавлены в выходные файлы (теперь сначала самый старый элемент).

Вот пример файла конфигурации youtube_tedx.conf:

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

Что бы использовать, позвонив ./get_new_youtube.sh youtube_tedx.conf .

Выходной файл (list.all) можно затем обработать, например, с помощью youtube-dl с такой командой, как youtube-dl -tca list.all && rm list.all .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .