9 мая


Раньше использовал flexget для скачивания сериалов с lostfilm по rss, но из-за того что он работал крайне не стабильно(то скачивал то не скачивал торрент, то скачивал но только через пару часов и т.п.) набросал скрипт для скачивания и разбора rss ленты и скачиванию торрент-файлов нужных раздач сериалов.

Скрипт писался на основе множества существующих вариантов с моими доработками.

Особенности:
1. Скачиваются только заданные сериалы, можно задавать качество.
2. Отправка почтового уведомления.
3. Скачиватся в указанную папку для каждого конкретного сериала.

Для работы требуется поставить дополнительные пакеты:
xmlstarlet - для разборки xml
msmtp msmtp-mta - для отправки почты
deluge-console - для добавления в торрент-клиент делуже задания для скачивания

Список сериалов указывается в виде:
SERIAL['File.name']="Название директории для скачивания"

#!/bin/bash
# apt-get install xmlstarlet msmtp msmtp-mta deluge-console

declare -A SERIAL
SERIAL['12.Monkeys']="12 Обезьян"
SERIAL['Vikings']="Викинги"
SERIAL['Gotham']="Готэм"
SERIAL['Game.of.Thrones']="Игра престолов"
SERIAL['Under.the.Dome']="Под куполом"
SERIAL['Extant']="Род человеческий"
SERIAL['Falling.Skies']="Сошедшие с небес"
SERIAL['Arrow']="Стрела"
SERIAL['The.Flash']="Флэш"
SERIAL['The.Walking.Dead']="Ходячие мертвецы"

#############################################
rssEval () { # $1 = rsseval; $2 = file;
    xmlstarlet sel -T -t -m "$1" -v . -n "$2"
}
#############################################

DIR=`dirname $0`
cd $DIR
[ !$DIR/torrents ] && mkdir -p $DIR/torrents ||:
MEDIA=/media/Сериалы/

lastmod="$( grep -m 1 Last-Modified lostfilm.out )"
header="If-Modified-Since:"${lastmod#*:}
wget --header="$header" http://www.lostfilm.tv/rssdd.xml -o lostfilm.out -O rssdd.xml

for s in "${!SERIAL[@]}"; do
  rssEval "/rss/channel/item/link[contains(., '$s')]" rssdd.xml | egrep "\.avi" | while read LINK; do
    NAME="${LINK#*&}"
    FILE="torrents/$NAME"
    if [ ! -e $FILE ]; then
      wget -q --header "Cookie: uid=XXXXXXXXX; pass=XXXXXXXXXXXXXXX; usess=XXXXXXXXXXXXXXXXXX" $LINK -O "$FILE"
      D_DIR=`echo -ne ${SERIAL[$s]} | sed 's/\ /\\\ /g'`
      su - server -c "deluge-console add -p '$MEDIA/$D_DIR' '$DIR/$FILE'"
      SERIYA=`rssEval "rss/channel/item[contains(., '${NAME}')]/title" rssdd.xml`
      echo -e "Subject: ${SERIAL[$s]}\r\n\r\n$SERIYA" | msmtp MAIL@mail.com
    fi
  done
done


Писалось и проверено на Ubuntu 14.04
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.