Парсим Lostfilm.tv RSS или Очередной велосипед

Не так давно «Лостфильм» переехал на 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

Скрипт успешно работает третий день.

Столкнулся с проблемой — иногда по ссылке на торрент файл ничего нет, но, видимо, это проблема уже со стороны Лостфильма. Скрипт при каждом запуске будет пытаться скачать этот файл до тех пор, пока он будет в фиде.

Критика и пожелания приветствуются.

© Habrahabr.ru