Форум сайта python.su
В питоне не силен. Помогите, пожалуйста.
Нужно скачать торрент-файлы с трекера. Ссылки на них вытягиваются регуляркой из сохраненных страничек. Логин и пароль под звездами правильные ввожу.
Вот мой код:
#-*- coding: cp1251 -*-
import os,cookielib,urllib2,urllib,re,sys
directory = 'c:/kilotorrent/list'
data2={'login_username':'***','login_password':'***','login':'Вход'}
LoginUrl=r'http://login.rutracker.org/forum/login.php'
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
enc_data2=urllib.urlencode(data2)
opener.open(LoginUrl,enc_data2)
files = os.listdir(directory)
for FileName in files:
r=str(open(directory+'/%s'%(FileName),'rb').read())
re1='dl\.php\?t=(\d*)'
m=re.findall(re1,r,16)
for i in m:
tor=opener.open("http://dl.rutracker.org/forum/dl.php?t=%s"%i).read()
open('torrent/%s.torrent'%i,'wb+').write(tor)
print u"Торрент успешно сохранен"
POST /forum/dl.php?t=3636051
http://dl.rutracker.org/forum/dl.php?t=3636051
POST /forum/dl.php?t=3636051 HTTP/1.1
Host: dl.rutracker.org
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://rutracker.org/forum/viewtopic.php?t=3636051
Cookie: bb_t=a%3A4%3A%7Bi%3A3228112%3Bi%3A1288262044%3Bi%3A3219939%3Bi%3A1288159172%3Bi%3A3163291%3Bi%3A1289227832%3Bi%3A3636051%3Bi%3A1309516972%3B%7D; bb_data=1-9972480-bfFCKnjiRthGmvGmzAM0-2994217755-1309555918-1309555918-2116105708-1; bb_dl=3636051
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 01 Jul 2011 21:32:07 GMT
Content-Type: application/x-bittorrent; name="[rutracker.org].t3636051.torrent"
Transfer-Encoding: chunked
Connection: keep-alive
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified: Fri, 01 Jul 2011 21:32:07 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: bb_dl=deleted; expires=Thu, 01-Jul-2010 21:32:06 GMT; path=/forum/; domain=.rutracker.org
Content-Disposition: attachment; filename="[rutracker.org].t3636051.torrent"
----------------------------------------------------------
Офлайн
У меня вот это работает:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# vim: sw=4 ts=4 expandtab ai
import os
import sys
import urllib
import urllib2
import cookielib
def main(args):
login, password, topic_id, outf = args
# prepare opener with cookie handling
cookies = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies))
data = urllib.urlencode({'login_username': login,
'login_password': password,
'login': ''})
# login
opener.open('http://login.rutracker.org/forum/login.php', data)
# open torrent url
torrent_url = 'http://dl.rutracker.org/forum/dl.php?t=%s' % topic_id
handle = opener.open(torrent_url, data)
# write it to output file
out = open(outf, 'wb')
out.write(handle.read())
out.close()
return 0
if __name__ == "__main__":
if len(sys.argv) != 5:
print "Usage: %s <login> <password> <topic id> <output file>" % \
os.path.basename(sys.argv[0])
sys.exit(1)
sys.exit(main(sys.argv[1:]))
Офлайн
Вообще по-хорошему неплохо было бы просто читать уже скачаные торренты с помощью какого-нибудь libtorrent и апдейтить их. Если torrent клиент не поймет и не начнет скачивать обновленный торрент, то нужно ему об этом сказать. В моем случае это можно сделать через python-transmissionrpc. Нужно будет попробовать.
А вообще спасибо за идею. Надоело уже вручную их обновлять.
Офлайн
Спасибо большое, ваш код работает.
Офлайн