Comments 75
спрашивайте, критикуйте… :)
+5
все просто и понятно. спасибо. прикручу на свой медиасервер.
p.s. когда же мне мой сервак пиво и тапочки уже будет подавать? =)
p.s. когда же мне мой сервак пиво и тапочки уже будет подавать? =)
+3
Супер, понравилось больше всего то что это простой скрипт. Не нужно побочного софта, ака флексгет, про которого я где-то месяц назад писал статейку habrahabr.ru/blogs/linux/83367/
Только единственный минус как быть с двойными релизами??
А кстати кто упоминал rtorrent + wtorren… Чисто для справки вы побывали через тот фид тянуть с закрытых ресурсов ??
Только единственный минус как быть с двойными релизами??
А кстати кто упоминал rtorrent + wtorren… Чисто для справки вы побывали через тот фид тянуть с закрытых ресурсов ??
0
Уровень квалификаций читателей хабра очень разный.
Я, например, так и не понял, куда писать этот grep.
Это для Linux?
Я, например, так и не понял, куда писать этот grep.
Это для Linux?
+1
критикую:
дабы не парсить и не грузить одно и тоже, да и сервер почём зря не дёргать следует записывать значение заголовка Last-Modified и передавать его в заголовке If-Modified-Since
Также сервер может поддерживать ETag.
См. к примеру: fishbowl.pastiche.org/2002/10/21/http_conditional_get_for_rss_hackers/
дабы не парсить и не грузить одно и тоже, да и сервер почём зря не дёргать следует записывать значение заголовка Last-Modified и передавать его в заголовке If-Modified-Since
Также сервер может поддерживать ETag.
См. к примеру: fishbowl.pastiche.org/2002/10/21/http_conditional_get_for_rss_hackers/
+1
проверь лостфильмовский рсс:
1. Если новых записей не было — сервер выдаёт 304 Not Modified
2. Иначе — полную ленту РСС.
Некоторые ленты поддерживающие ЕТаги могут возвращать только новые записи в ленте, но это не наш случай.
1. Если новых записей не было — сервер выдаёт 304 Not Modified
2. Иначе — полную ленту РСС.
Некоторые ленты поддерживающие ЕТаги могут возвращать только новые записи в ленте, но это не наш случай.
$ wget -vS www.lostfilm.tv/rssdd.xml
--2010-03-12 01:47:02-- www.lostfilm.tv/rssdd.xml
Преобразование адреса www.lostfilm.tv... 81.29.134.150
Устанавливается соединение с www.lostfilm.tv|81.29.134.150|:80... соединились.
Запрос HTTP послан, ожидание ответа...
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 11 Mar 2010 21:46:57 GMT
Content-Type: text/xml
Content-Length: 17139
Last-Modified: Thu, 11 Mar 2010 18:16:28 GMT
Connection: keep-alive
Keep-Alive: timeout=15
Accept-Ranges: bytes
Длина: 17139 (17K) [text/xml]
Saving to: «rssdd.xml»
100%[=================================================>] 17 139 89,4K/s в 0,2s
2010-03-12 01:47:02 (89,4 KB/s) - «rssdd.xml» saved [17139/17139]
$ wget -vS --header="If-Modified-Since: Thu, 11 Mar 2010 18:16:28 GMT" www.lostfilm.tv/rssdd.xml
--2010-03-12 01:47:11-- www.lostfilm.tv/rssdd.xml
Преобразование адреса www.lostfilm.tv... 81.29.134.150
Устанавливается соединение с www.lostfilm.tv|81.29.134.150|:80... соединились.
Запрос HTTP послан, ожидание ответа...
HTTP/1.1 304 Not Modified
Server: nginx
Date: Thu, 11 Mar 2010 21:47:08 GMT
Last-Modified: Thu, 11 Mar 2010 18:16:28 GMT
Connection: keep-alive
Keep-Alive: timeout=15
2010-03-12 01:47:12 ОШИБКА 304: Not Modified.
0
Спасибо за идею! Единственный момент, что где-то нужно будет хранить эту дату с которой будем сравнивать — или делать демона или лог вести…
Отлично дополняет мой комент habrahabr.ru/blogs/p2p/87042/#comment_2609116
Отлично дополняет мой комент habrahabr.ru/blogs/p2p/87042/#comment_2609116
+1
А я себе для того, чтобы отслеживать и качать обновления сериалов на торрентс.ру, сделал скриптик для гризманки… userscripts.org/scripts/show/68387. Формирую список торрентов, которые периодически обновляются (сериалы обычно выкладывают методом добавления в существующую раздачу), ну и один раз в день ткнуть на ссылочку — проверить весь список на предмет обновления мне не сложно.
0
В качестве альтернативы приведу flexget ( habrahabr.ru/blogs/linux/83367/ ). Флексгет, например, ведет базу данных и не качает уже скачанные торренты, которые удаляет мой делюж после успешного добавления в список закачиваемых. Здесь как я понял торрент файл будет перекачан если он был удален с диска?
з.ы. За статью спасибо. :)
з.ы. За статью спасибо. :)
+2
>В качестве альтернативы приведу flexget
да, пользовался, знаю. но самоцелью было разобраться с grep и сделать все самому :)
>Здесь как я понял торрент файл будет перекачан если он был удален с диска?
Да, именно так. Но я только что специально провел эксперимент: удалил файл из папки слежения и снова его добавил. Transmission при этом не стал заново стартовать загрузку или даже выполнять проверку хеша файлов.
да, пользовался, знаю. но самоцелью было разобраться с grep и сделать все самому :)
>Здесь как я понял торрент файл будет перекачан если он был удален с диска?
Да, именно так. Но я только что специально провел эксперимент: удалил файл из папки слежения и снова его добавил. Transmission при этом не стал заново стартовать загрузку или даже выполнять проверку хеша файлов.
+1
на здоровье ;)
0
FlexGet удобная и достаточно мощная штука. Сам использую. Так как я не давно начал настраивать сервак-торренто-качалку-фтп-самба-сервер под линем и опыта немного, то стараюсь выбирать наиболее простые варианты )
+1
Отлично! То, что нужно, чтобы полностью облениться ;)
+1
Кстати, если интересно, могу написать статью про настройку медисервера на базе Debin. Имею ввиду LVM для удобной разметки винтов, Samba, сборка последних версий Transmission и/или rTorrent из исходников, подключение веб интерфейсов к последнему, ну и автоматизация закачек… Хотя про это только что уже написал :)
+4
UFO just landed and posted this here
Пожалуйста ;)
А статью постараюсь написать. Хоть на хабре уже и мелькали подобные темы, но освещали они лишь ту или иную часть. Хотелось бы объединить и собрать все вместе.
А статью постараюсь написать. Хоть на хабре уже и мелькали подобные темы, но освещали они лишь ту или иную часть. Хотелось бы объединить и собрать все вместе.
+1
Начинаю выполнять задуманное. Только что выложил пост про сборку и настройку Transmission:
labinskiy.habrahabr.ru/blog/87287/
labinskiy.habrahabr.ru/blog/87287/
+1
Еще один пост готов, на этот раз про rTorrent:
habrahabr.ru/blogs/p2p/88405/
habrahabr.ru/blogs/p2p/88405/
0
Эх, поднял бы кто вопрос, как автоматизировать закачки из RSS лент не содержащих в себе прямых ссылок на .torrent файлы.
+1
>RSS лент не содержащих в себе прямых ссылок на .torrent файлы
Например? Думаю, этот вопрос тоже решаемый. Хотя нужно разбирать каждый конкретный случай.
Например? Думаю, этот вопрос тоже решаемый. Хотя нужно разбирать каждый конкретный случай.
+1
Например почти любой другой российский трекер, название которого не Лостфильм и не Новафильм. В RSS ленте которую вы берете с этих ресурсов, уже содержится в новости ссылка на .torrent файл. В 99% случаев остальных трекеров, RSS нам отдает лишь ссылку на тему, которая уже и содержит нужный нам .torrent
На некоторых трекерах очень хочется автоматизировать процесс скачивания, но пока не нахожу как. Пробовал создавать нужный RSS с помощью pipes.yahoo, не получилось.
На некоторых трекерах очень хочется автоматизировать процесс скачивания, но пока не нахожу как. Пробовал создавать нужный RSS с помощью pipes.yahoo, не получилось.
0
К сожалению догадаться какой именно трекер вы имеете ввиду не могу, поэтому покажу на примере самого популярного. Для генерации RSS можно воспользоваться следующим конструктором:
xpoft.ru/rutracker.org/generator/
после генерации выбираете «Ссылка на ленту для интеграции в torrent-клиенты»
и аналогичным образом закачиваете файлы с помощью wget (не забываем передать cookies) и grep. Но, после этого на выходе получаем хоть и торрент файлы, но в имени не содержащие ".torrent". После чего командой find находим наши файлы без расширения и переименовываем. После переименования торрент клиент их подхватывает из папки слежения.
xpoft.ru/rutracker.org/generator/
после генерации выбираете «Ссылка на ленту для интеграции в torrent-клиенты»
и аналогичным образом закачиваете файлы с помощью wget (не забываем передать cookies) и grep. Но, после этого на выходе получаем хоть и торрент файлы, но в имени не содержащие ".torrent". После чего командой find находим наши файлы без расширения и переименовываем. После переименования торрент клиент их подхватывает из папки слежения.
+1
Все хорошо, но это не более чем частный случай костыля для самого популярного трекера. Названия не говорил, чтоб за рекламу не приняли(ну к примеру мне рутрекер вовсе не интересен, т.к. не является первоисточником релизов, и пока их там выложат придется изрядно подождать, взять к примеру bigfangroup или kinozal). А хочется способа, который бы можно было применить и в других направлениях.
0
Только что зарегистрировался на кинозале и посмотрел на их RSS ленту. Действительно интересный случай. Если в общих чертах, то я вижу решение в виде шелл скрипта с таким алгоритмом:
1) из RSS ленты grep'ом фильтруем интересующие нас ссылки. они будут иметь такой вид:
2) после этого циклом проходим по всем отобранным ссылкам и загружаем их wget'ом тут же передая по конвейеру на grep
3) в grep на переданной страничке выбираем ссылку на торрент флай. ссылка имеет вид
как видно по ссылке, он содержит тот же айди что и в RSS ленте что заметно облегчает поиск
4) закачиваем torrent файл
5) переход к следующей отобранной строке из rss ленты
1) из RSS ленты grep'ом фильтруем интересующие нас ссылки. они будут иметь такой вид:
http://kinozal.tv/details.php?id=546387
2) после этого циклом проходим по всем отобранным ссылкам и загружаем их wget'ом тут же передая по конвейеру на grep
3) в grep на переданной страничке выбираем ссылку на торрент флай. ссылка имеет вид
http://kinozal.tv/download.php/546387/Badfinger-Collection.1969-2001.FLAC.CUE.Lossless.torrent
как видно по ссылке, он содержит тот же айди что и в RSS ленте что заметно облегчает поиск
4) закачиваем torrent файл
5) переход к следующей отобранной строке из rss ленты
+2
Я тут на досуге набросал команду для кинозала по описанному выше алгоритму, вот что получилось:
на выходе получается список относительных ссылок на загрузку торрент файлов с кинозала. После этого их лишь остается удобно передать на вход wget задав параметр
Из особенностей хочется отметить опцию "
Почему
for i in `curl -s http://kinozal.tv/rss.xml | grep -iA 2 'MP3' | grep -ioe 'http.*[0-9]'`; do curl -sb "uid=***; pass=***; countrys=ua" $i | grep -ioe 'download.*\.torrent' | head -1; done
на выходе получается список относительных ссылок на загрузку торрент файлов с кинозала. После этого их лишь остается удобно передать на вход wget задав параметр
--base=URL"
, где вместо URL задается любой нужный домен/префикс.Из особенностей хочется отметить опцию "
-A 2
" у grep
'a. Дело в том что только по адресу ссылки из RSS ленты узнать название раздачи невозможно, поэтому поиск идет по описанию, а на выход передаются еще и следующие две строки за описанием, где и расположена сама ссылка. Ну а следующим по конвейеру grep'ом из потока отфильтровываются только нужные нам ссылки. И еще один момент, в теме что описывает раздачу на кинозале ссылка на торрент файл встречается два раза, с помощью "head -1
" мы оставляем только первую из нихПочему
curl
? А не знаю, наверно потому, что просто захотелось разобраться и в нем :)0
Вопрос парсинга таких лент вылился в новый пост:
labinskiy.habrahabr.ru/blog/87166/
labinskiy.habrahabr.ru/blog/87166/
0
завтра поэксперементирую, а то только подручными средствами на php умею
0
Как альтернативу можно uTorrent запустить под wine… не комильфо но все же.
0
Спасибо, вроде ничего революционного, но очень доходчиво и хорошо разъяснено. Ну и плюс самому подобное все время лень сделать, а тут готовый четкий рецепт.
+1
Перенес в Peer-to-Peer
0
Спасибо за ссылку, раньше не находил.
А если по теме, то хотелось сделать все самому и по пути набраться опыта знаний. В результате не только сам понял и разобрался, но и рассказал другим «как» ;)
А если по теме, то хотелось сделать все самому и по пути набраться опыта знаний. В результате не только сам понял и разобрался, но и рассказал другим «как» ;)
0
Вот вам и сила командной строки в Linux. Каждая команда делает свое дело.
Описание параметров к командам порадовало. На базе этого можно без проблем сделать другие подобные «следилки».
Описание параметров к командам порадовало. На базе этого можно без проблем сделать другие подобные «следилки».
+1
UFO just landed and posted this here
Написал ровно такой же скрипт год назад или больше :)
#!/bin/bash
ua=«Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2a1pre) Gecko/20090302 Minefield/3.2a1pre»
cd /home/nebulosa/torrents
#LostFilm.tv
lfrss=«httр://lostfilm.tv/rssdd.xml»
lfshows="(Star.Wars|Heroes|Seeker)"
lfcookie=«Cookie: uid=***; pass=***; phpbb2mysql_data=***»
lfurl=$(wget -t1 --connect-timeout=1 -q $lfrss -O- | tac | egrep -o «http://[^ ]+\.torrent» | egrep $lfshows)
for k in $lfurl
do
if [! -e new/$(basename $k) ]
then
wget -q --referer="$lfrss" --user-agent="$ua" --no-cookies --header="$lfcookie" $k
mv -t new $(basename $k)
fi
done
Логика работы немножко помягче для сервера Лостфильма… Был момент когда lostfilm был перегружен, поэтому чтобы не порождать новые коннекты прописал опции у wget опции -t1 --connect-timeout=1 и проверку на существования файлов, чтобы wget не дергал каждый раз сервер.
Когда торрентов накопится больше чем 30 штук или когда сервер будет загружен — оцените эти ухищрения :)
#!/bin/bash
ua=«Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2a1pre) Gecko/20090302 Minefield/3.2a1pre»
cd /home/nebulosa/torrents
#LostFilm.tv
lfrss=«httр://lostfilm.tv/rssdd.xml»
lfshows="(Star.Wars|Heroes|Seeker)"
lfcookie=«Cookie: uid=***; pass=***; phpbb2mysql_data=***»
lfurl=$(wget -t1 --connect-timeout=1 -q $lfrss -O- | tac | egrep -o «http://[^ ]+\.torrent» | egrep $lfshows)
for k in $lfurl
do
if [! -e new/$(basename $k) ]
then
wget -q --referer="$lfrss" --user-agent="$ua" --no-cookies --header="$lfcookie" $k
mv -t new $(basename $k)
fi
done
Логика работы немножко помягче для сервера Лостфильма… Был момент когда lostfilm был перегружен, поэтому чтобы не порождать новые коннекты прописал опции у wget опции -t1 --connect-timeout=1 и проверку на существования файлов, чтобы wget не дергал каждый раз сервер.
Когда торрентов накопится больше чем 30 штук или когда сервер будет загружен — оцените эти ухищрения :)
+2
Спасибо за комментарий, идея с проверкой существования файлов хороша!
з.ы. а символ точки вот тут
з.ы. а символ точки вот тут
lfshows="(Star.Wars|Heroes|Seeker)"
воспримется именно как точка или как «любой символ»?0
что то я попробовал, а получил:
egrep: Неверное регулярное выражение
egrep: Неверное регулярное выражение
0
а еще можно поставить rutorrent+плагин rss
меньше велосипедов и больше функционала
меньше велосипедов и больше функционала
0
а я что то никак не совладаю со скриптом, не пойму что не так
wget -qO — www.lostfilm.tv/rssdd.xml | grep -ioe 'http.*torrent' | grep -ie '[0-9]\{4\}/\(house\|heroes\|star.wars\)' | wget -nc -qi — -P /home/share/torrent/torrent_auto_load --load-cookies=/home/share/torrent/cookies.txt
в итоге получаю пустой торрент :(
wget -qO — www.lostfilm.tv/rssdd.xml | grep -ioe 'http.*torrent' | grep -ie '[0-9]\{4\}/\(house\|heroes\|star.wars\)' | wget -nc -qi — -P /home/share/torrent/torrent_auto_load --load-cookies=/home/share/torrent/cookies.txt
в итоге получаю пустой торрент :(
0
Скорее всего у вас ошибка в cookies.txt
0
ну я тоже к этому склоняюсь, но там ошибаться вродь особо негде
.lostfilm.tv TRUE / FALSE 2147483643 pass пароль
.lostfilm.tv TRUE / FALSE 2147483643 uid логин
как в инструкции
.lostfilm.tv TRUE / FALSE 2147483643 pass пароль
.lostfilm.tv TRUE / FALSE 2147483643 uid логин
как в инструкции
0
Логин и пароль задаются не в явном виде. Откройте в своем браузере просмотр cookies и скопируйте от туда значения ;)
0
наверное тогда это стоит как то пометить в самой статье, для таких как я :)
0
да нет, попробовал занести корректные данные из кукисов браузера, на общую картину это так и не повлияло, всё-равно пустой торрент
0
Старый файл перед этим удалили? Возможно из-за этого wget не стал его перезагружать.
0
удалял
0
Только что запустил у себя:
закачало торрент файл Хауса.
Еще раз перепроверьте команду и cookies. Возможно при копировании/вставке что-то потерялось
wget -qO - http://www.lostfilm.tv/rssdd.xml | grep -ioe 'http.*torrent' | grep -ie '[0-9]\{4\}/\(house\|heroes\|star.wars\)' | wget -nc -qi - -P ~/ --load-cookies=cookies.txt
закачало торрент файл Хауса.
Еще раз перепроверьте команду и cookies. Возможно при копировании/вставке что-то потерялось
0
не, пустой файл хоть ты тресни :(
0
а если передавать cookies не из файла, напрямую через зголовок GET запроса:
?
wget -nc -qi - -P ~/ --header "Cookie: uid=***; pass=***"
?
0
вот так другое дело, всё работает
странно, путь до файла был указан верно, права выдал максимальные, файл по шаблону… мистика :(
странно, путь до файла был указан верно, права выдал максимальные, файл по шаблону… мистика :(
0
забыл самое главное — спасибо за помощь! :)
0
у меня и так не работает… пустой файлик создаеться…
0
Покажите вашу команду полностью
0
wget -qO — www.lostfilm.tv/rssdd.xml | grep -ioe 'http.*torrent' | grep -ie '[0-9]\{4\}/\(lost\|house\)' | wget -nc -qi — -P /usr/local/www/apache22/data/bt/downloads/.torrents/ --load-cookies=/usr/local/www/parser/cookies.txt
# cat /usr/local/www/parser/cookies.txt
.lostfilm.tv TRUE / FALSE 2147483643 pass blablabla
.lostfilm.tv TRUE / FALSE 2147483643 uid iru
# cat /usr/local/www/parser/cookies.txt
.lostfilm.tv TRUE / FALSE 2147483643 pass blablabla
.lostfilm.tv TRUE / FALSE 2147483643 uid iru
0
Логин и пароль не передаются в открытом виде. В качестве uid выступает набор цифр, а в качестве пароля длинная строка вида «6b2e4f7f...».
Переписать эти значения можно из окошка просмотра cookies в браузере или, к примеру, воспользоваться плагином к FireFox.
Переписать эти значения можно из окошка просмотра cookies в браузере или, к примеру, воспользоваться плагином к FireFox.
0
# cat /usr/local/www/parser/cookies.txt
.lostfilm.tv TRUE / FALSE 2147483643 pass 1326b7…
.lostfilm.tv TRUE / FALSE 2147483643 uid 903094
# wget -qO — www.lostfilm.tv/rssdd.xml | grep -ioe 'http.*torrent' | grep -ie '[0-9]\{4\}/\(lost\|house\)' | wget -nc -qi — -P /usr/local/www/apache22/data/bt/downloads/.torrents/ --load-cookies=/usr/local/www/parser/cookies.txt
# ll | grep root
-rw-r--r-- 1 root www 0 Mar 13 18:13 Lost.s06e07.rus.PROPER.LostFilm.TV.torrent
всеравно пустой фаил
.lostfilm.tv TRUE / FALSE 2147483643 pass 1326b7…
.lostfilm.tv TRUE / FALSE 2147483643 uid 903094
# wget -qO — www.lostfilm.tv/rssdd.xml | grep -ioe 'http.*torrent' | grep -ie '[0-9]\{4\}/\(lost\|house\)' | wget -nc -qi — -P /usr/local/www/apache22/data/bt/downloads/.torrents/ --load-cookies=/usr/local/www/parser/cookies.txt
# ll | grep root
-rw-r--r-- 1 root www 0 Mar 13 18:13 Lost.s06e07.rus.PROPER.LostFilm.TV.torrent
всеравно пустой фаил
0
А если комп был выключен и в рсс накопилось несколько новых серий разных сериалов, то будет ли этот скрипт скачивать все по очереди или скачает только первое что найдет? Если так то я бы отдавал все что он напарсит в файлик и потом качал бы торренты с ключиком -I urls.txt, ну и наверное бы удалял этот файлик после отработки скрипта, также было бы интересно иметь лог скачки, который например отправлялся бы на почту, чтобы сидя на работе сразу видеть что я сегодня вечером смогу посмотреть дома.
+1
>А если комп был выключен и в рсс накопилось несколько новых серий разных сериалов, то будет ли этот скрипт скачивать все по очереди или скачает только первое что найдет?
Будет загружено все новое.
>также было бы интересно иметь лог скачки, который например отправлялся бы на почту
Уже думаю над реализацией ;)
Будет загружено все новое.
>также было бы интересно иметь лог скачки, который например отправлялся бы на почту
Уже думаю над реализацией ;)
0
кстати, если интересно, можно замутить один большой скрипт, который будет определять сайт, генерить куки, оповещать о cкаченном и т.д, меня просто эта тема заинтересовала, в каком-нибудь гуглокоде замутить проект и поковырять вместе, если интересно пиши на bezgubov@gmail.com
0
Будет загружено только то новое что все еще останется в rss-ленте.
А что-то может уже и выпасть за нее(там 5 сериалов, каждый из которых в 3 качествах, итого = 15 записей).
Как только выложили шестой сериал, самый старый из ленты вылетает. И так можно пропустить.
Жаль, что это не решается никак кроме запуска на отдельной машине, которая будет вечно поднята.
И да, я видел дату :)
А что-то может уже и выпасть за нее(там 5 сериалов, каждый из которых в 3 качествах, итого = 15 записей).
Как только выложили шестой сериал, самый старый из ленты вылетает. И так можно пропустить.
Жаль, что это не решается никак кроме запуска на отдельной машине, которая будет вечно поднята.
И да, я видел дату :)
0
Вот более простое решение: skurudo.livejournal.com/375464.html
0
Вот сделал полностью рабочий в данный момент времени вариант:
http://mihavxc.ru/files/script/lostflv_torrent_gets.bat
http://mihavxc.ru/files/script/lostflv_torrent_gets.bat
0
Sign up to leave a comment.
Парсим RSS LostFilm'a с помощью grep и передаем на закачку через wget