#!/usr/bin/python # -*- coding: utf-8 -*- import urllib import urllib2 import time import cookielib import re ''' Описание классов работы с разными трекерами: __init__(login,password) login() search(query) search_results() save_torrent() ''' class TorrentRu: data = { "login":"****", "password":"****" } request = 0 logined = False cookies = [] opener = 0 cookieJar = 0 _search_results = "" login_counter = 0 def __init__(self,login=None,password=None): self.cookieJar = cookielib.CookieJar() self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookieJar)) def login(self): #TODO: Обернуть в обработку urltimeout self.login_counter+=1 dataToSend = { "login_username":self.data["login"], "login_password":self.data["password"], "login":"Послать", "autologin":"1" } dataToSend = urllib.urlencode(dataToSend) self.request = urllib2.Request("http://torrents.ru/forum/login.php",dataToSend) up = self.opener.open(self.request,dataToSend) loginURL = up.geturl() isLogin = (loginURL.find("login.php")!=-1) if(isLogin): time.sleep(3) self.login() else: self.cookies = self.cookieJar.make_cookies(up,self.request) print self.login_counter, " auths " self.logined = True def search(self,query): dataToSend = urllib.urlencode({'max':'1','to':'1','nm':query}) self.request = urllib2.Request("http://torrents.ru/forum/tracker.php#results",dataToSend) up = self.opener.open(self.request,dataToSend) self._search_results = up.read(); #TODO: Добавить обработку остальных страниц. # Что-то типа # if(res.find("

￑￲￰¢■│￶ :  1, 2, 3, 4, 5, 6, 7, 8, 9, 10  ￑→¥¦.

")) # только через re # В этой версии поиск только по первой странице def search_results(self,files=False): result = {} ''' Парсинг результатов поиска ''' res = self._search_results res = res[res.find(""):] res = res[:res.find("
")] r = re.compile("
.*href="(tracker.php\?f=\d+)">([^<>]+)<\/a>.*href="\.\/(viewtopic.php\?t=\d+)"> # Теперь в res - сама таблица. #TODO: Рассмотреть возможность парсинга DOM #TODO: Заготовить регекспы для обработки самой таблицы. return result