http://habrahabr.ru/post/250429/
Не так давно «Лостфильм» переехал на https. В связи с этим flexget стал выдавать чудесную ошибку при попытке скачать торрент-файл:
RequestException hostname 'www.lostfilm.tv' doesn't match either of 'ssl2000.cloudflare.com', 'cloudflare.com', '*.cloudflare.com'
Поиск в итернетах ничего вразумительно не выдал, либо же все данные были 1-2 летней давности, курение форума Лостфильма тоже не принесло результатов. Поэтому возникла идея написать очередной велосипед.
Собственно, все исходники
здесь.
Делалось все для ubuntu, но в процессе разработки прекрасно работало и на macos
Необходимые пакеты:
- feedparser
- transmissionrpc
- pyyaml
Настройки вынесены в отдельный конфиг:
send_email: False #включить отправку email при удачно скачанном торрент-файле
use_transmission: False #передать торрент-файл в transmission для закачки
store_torrent_files: False #сохранить торрент-файл в указанную папку для дальнейшей обработки
transmission: #настройки transmission
address: localhost
port: 9091
user: admin
password: admin
email: #настройки отправки email, я использовал google
from: *****
to: *****
subject: New torrents from Lostfilm
smtp_host: smtp.gmail.com
smtp_port: 587
smtp_username: ****
smtp_password: ****
smtp_tls: yes
lostfilm:
feed: http://www.lostfilm.tv/rssdd.xml
cookie: " uid=****; pass=****; usess=****" #куки лостфильма, думаю все уже в курсе, где их брать
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:34.0) Gecko/20100101 Firefox/34.0 #можно поменять на свой из браузера
downloads-path: /path/to/downloads/dir/ #папка с сериалами, настройка use_transmission
torrents-path: /path/to/torrents/dir/ #папка для торрент-файлов, настройка store_torrent_files
series: #настройка сериалов
720p:
- Bitten:
path: Serials
1080p:
- Cougar Town:
alternate_name: 'Город хищниц'
MP4:
- Grimm
- Stargate Atlantis
О настройке сериалов поподробнее.
Да, некоторые части копировал из flexget, не вижу смысла придумывать формат заново.
Как видно из примера конфига — первым уровнем идет качество, а вторым — оригинальное название сериала ().
Это может быть просто список без дополнительнызх параметров, как в MP4 — в этом случае оба сериала будут искаться по оригинальным названиям и скачиваться с помощью transmisiion в папки с таким же названием.
Также это может быть список с параметрами. Дополнительных параметров пока два:
- название (alternate_name) или часть названия, по которому можно онозначно выделить сериал из пачки других, бцдет использоваться вместо оригинального названия при поиске;
- папка для скачивания (path), если не указана — будет использование оригинальное название.
Это позволяет создать, например, такой конфиг (все три сериала скачаются в одну папку Outer space serials):
series:
720p:
- Stargate 1:
path: Outer space serials
alternate_name: 'Stargate Atlantis'
- Stargate 2:
path: Outer space serials
alternate_name: 'Stargate Universe'
- Startrek 1:
path: Outer space serials
alternate_name: 'Startrek: Deep Space Nine'
Поиск сериала сделать очень просто — в строке с названием сериала ищутся вхождения по названию и качеству. Никто не запрещает сделать, например, качество avi и тогда парсер найдет все файлы, заканчивающиеся на avi.
Если серия скачалась либо в папку для торрентов, либо успешно передана в transmission — она помечается как скачанная (файл download.log) и в следующий раз парсер ее пропустит.
Мануал по запуску — в readme.
Ошибки падают в error.log, общий прогресс — в process.log
Скрипт успешно работает третий день.
Столкнулся с проблемой — иногда по ссылке на торрент файл ничего нет, но, видимо, это проблема уже со стороны Лостфильма. Скрипт при каждом запуске будет пытаться скачать этот файл до тех пор, пока он будет в фиде.
Критика и пожелания приветствуются.