x0x01 25.03.2011 16:59
Скрипты — Качаем обновленные торренты c rutracker.org
Как известно, многие раздачи ведутся путем добавления новых файлов к уже существующим, у rutracker.org нет прямого RSS на обновленный torrent файл.Данный скрипт исправляет этот недостаток. Обходя ссылки из файла urls.lst, проверяет изменились ли размеры torrent файлов, в случае изменений - сохраняет обновленный и запоминает размер в last.lst
Не забудьте перед запуском создать urls.lst и пустой last.lst в каталоге со скриптом.
Собственно код:
кусочек моего urls.lst
1 |
http://rutracker.org/forum/viewtopic.php?t=3414220
|
за второй кусок - спасибо, try вообще-то "IndexError: list index out of range" обрабатывает, когда добавляется новый url и/или размера torrent еще нет в last.lst
try вообще-то "IndexError: list index out of range" обрабатывает
А если так:
if topic_id in dta_dic.keys():
if len(data) != int(dta_dic):
print '<^>', thread_url
dw_torrent_f(data, topic_id)
else:
print '<+>', thread_url
dw_torrent_f(data, topic_id)
PS: Все-таки названия ваших переменных и функций выкалывают вилкой мне глаза =(
Скрипт может и полезный, но требует периодического обслуживание в виде добавления новых ссылок в urls.lst.
На мой взгляд, идельный скрипт должен делать следующие вещи:
Было бы у меня сериалов по-больше — сам бы написал ;)
На мой взгляд, идельный скрипт должен делать следующие вещи:
- подключаться к Transmission и забираться торренты со статусом «не зарегистрирован»
- получать из торрентов ссылки на страницы форума
- скачивать обновлённые торрент-файлы
- добавлять новые торренты, а старые удалять (с сохранением статусов содержимого торрентов)
Было бы у меня сериалов по-больше — сам бы написал ;)
статусы сохранить не удастся насколько мне известно, у самого есть такая хотелка по поводу трансмишн, все упирается в разношерстную авторизацию. На лосте одна, на нове другая, на пирате 3...
Статусы я имел ввиду приоритеты отдельных файлов + флаг качать/не качать внутри одного торрента. Я просто для просмотренных файлов ставлю флаг «не качать» и всегда знаю на какой серии остановился.
скрипт не работает с к сожалению, пишет ошибку синтаксиса в 48 строчке:
dta_dic<0>> = str.split(curr)<1>
что там не так подскажите (в питоне не шарю)?
dta_dic<0>> = str.split(curr)<1>
что там не так подскажите (в питоне не шарю)?
Я давно уже отчаялся размещать тут более-менее сложный код, ибо парсер здесь жутко кривой и всё портит. Сам предпочитаю github и gist.
Traceback (most recent call last):
File "rutrack.py", line 69, in
data = web_obj.read()
File "/usr/lib/python2.6/socket.py", line 348, in read
data = self._sock.recv(rbufsize)
File "/usr/lib/python2.6/httplib.py", line 522, in read
return self._read_chunked(amt)
File "/usr/lib/python2.6/httplib.py", line 580, in _read_chunked
value.append(self._safe_read(chunk_left))
File "/usr/lib/python2.6/httplib.py", line 619, in _safe_read
chunk = self.fp.read(min(amt, MAXAMOUNT))
File "/usr/lib/python2.6/socket.py", line 377, in read
data = self._sock.recv(left)
socket.error: [Errno 104] Connection reset by peer
куда капать?
File "rutrack.py", line 69, in
data = web_obj.read()
File "/usr/lib/python2.6/socket.py", line 348, in read
data = self._sock.recv(rbufsize)
File "/usr/lib/python2.6/httplib.py", line 522, in read
return self._read_chunked(amt)
File "/usr/lib/python2.6/httplib.py", line 580, in _read_chunked
value.append(self._safe_read(chunk_left))
File "/usr/lib/python2.6/httplib.py", line 619, in _safe_read
chunk = self.fp.read(min(amt, MAXAMOUNT))
File "/usr/lib/python2.6/socket.py", line 377, in read
data = self._sock.recv(left)
socket.error: [Errno 104] Connection reset by peer
куда капать?
Глас из чата:
[20:08:06] Кот Шрёдингера: Тут http://welinux.ru/post/5344/ строку #57
иначе utorrent считает торрент-файл невалидным
[20:14:19] DarknеSS: Кот Шрёдингера, Дык откомменти ;)
[20:14:37] Кот Шрёдингера: не зарегистрирован
f = open(OUT_DIR+f_name+'.torrent', 'w')
лучше заменить на
f = open(OUT_DIR+f_name+'.torrent', 'wb')
иначе utorrent считает торрент-файл невалидным
[20:14:19] DarknеSS: Кот Шрёдингера, Дык откомменти ;)
[20:14:37] Кот Шрёдингера: не зарегистрирован
if len(data) != int(dta_dic):
print '<^>', thread_url
dw_torrent_f(data, topic_id)
else:
print '<+>', thread_url
dw_torrent_f(data, topic_id)
И еще немного:
# лично я бы заменил это:
topic_id = str.split(thread_url,'=')<1>
# на это:
topic_id = thread_url.split('=')<1>
# имхо, наглядней =)
PS: Очень уж сложно уследить за переменными. Как-то они одна на другую похожи, что-ли =\