Merge pull request #3308 from ngosang/torrentreactorimp

[search engine] Update TorrentReactor
This commit is contained in:
sledgehammer999 2015-06-28 14:13:25 +03:00
commit 1bcfae5265
4 changed files with 29 additions and 20 deletions

View file

@ -1,4 +1,4 @@
#VERSION: 1.36 #VERSION: 1.40
#AUTHORS: Gekko Dam Beer (gekko04@users.sourceforge.net) #AUTHORS: Gekko Dam Beer (gekko04@users.sourceforge.net)
#CONTRIBUTORS: Christophe Dumez (chris@qbittorrent.org) #CONTRIBUTORS: Christophe Dumez (chris@qbittorrent.org)
# Bruno Barbieri (brunorex@gmail.com) # Bruno Barbieri (brunorex@gmail.com)
@ -34,7 +34,7 @@ from HTMLParser import HTMLParser
from re import compile as re_compile from re import compile as re_compile
class torrentreactor(object): class torrentreactor(object):
url = 'http://www.torrentreactor.net' url = 'http://torrentreactor.com'
name = 'TorrentReactor' name = 'TorrentReactor'
supported_categories = {'all': '', 'movies': '5', 'tv': '8', 'music': '6', 'games': '3', 'anime': '1', 'software': '2'} supported_categories = {'all': '', 'movies': '5', 'tv': '8', 'music': '6', 'games': '3', 'anime': '1', 'software': '2'}
@ -42,13 +42,14 @@ class torrentreactor(object):
print(download_file(info)) print(download_file(info))
class SimpleHTMLParser(HTMLParser): class SimpleHTMLParser(HTMLParser):
def __init__(self, results, url, *args): def __init__(self, results, url, what):
HTMLParser.__init__(self) HTMLParser.__init__(self)
self.td_counter = None self.td_counter = None
self.current_item = None self.current_item = None
self.results = results self.results = results
self.id = None self.id = None
self.url = url self.url = url
self.what_list = urllib.unquote(what).decode('utf8').split()
self.torrents_matcher = re_compile("/torrents/\d+.*") self.torrents_matcher = re_compile("/torrents/\d+.*")
self.dispatcher = { 'a' : self.start_a, 'td' : self.start_td } self.dispatcher = { 'a' : self.start_a, 'td' : self.start_td }
@ -87,6 +88,10 @@ class torrentreactor(object):
self.td_counter = None self.td_counter = None
# add item to results # add item to results
if self.current_item: if self.current_item:
self.current_item['name'] = self.current_item['name'].decode('utf8')
# TorrentReactor returns unrelated results, we need to filter
if not all(word in self.current_item['name'].lower() for word in self.what_list):
return
self.current_item['engine_url'] = self.url self.current_item['engine_url'] = self.url
if not self.current_item['seeds'].isdigit(): if not self.current_item['seeds'].isdigit():
self.current_item['seeds'] = 0 self.current_item['seeds'] = 0
@ -99,13 +104,13 @@ class torrentreactor(object):
def search(self, what, cat='all'): def search(self, what, cat='all'):
i = 0 i = 0
dat = '' dat = ''
results = []
while i < 11: parser = self.SimpleHTMLParser(results, self.url, what)
results = [] while i < 9:
parser = self.SimpleHTMLParser(results, self.url) dat = retrieve_url('%s/torrents-search/%s/%s?sort=seeders.desc&type=all&period=none&categories=%s'%(self.url, what, (i*35), self.supported_categories[cat]))
dat = retrieve_url('%s/torrent-search/%s/%s?sort=seeders.desc&type=all&period=none&categories=%s'%(self.url, what, (i*35), self.supported_categories[cat]))
parser.feed(dat) parser.feed(dat)
parser.close()
if len(results) <= 0: if len(results) <= 0:
break break
del results[:]
i += 1 i += 1
parser.close()

View file

@ -5,5 +5,5 @@ kickasstorrents: 1.28
legittorrents: 2.00 legittorrents: 2.00
mininova: 2.00 mininova: 2.00
piratebay: 2.11 piratebay: 2.11
torrentreactor: 1.36 torrentreactor: 1.40
torrentz: 2.15 torrentz: 2.15

View file

@ -1,4 +1,4 @@
#VERSION: 1.36 #VERSION: 1.40
#AUTHORS: Gekko Dam Beer (gekko04@users.sourceforge.net) #AUTHORS: Gekko Dam Beer (gekko04@users.sourceforge.net)
#CONTRIBUTORS: Christophe Dumez (chris@qbittorrent.org) #CONTRIBUTORS: Christophe Dumez (chris@qbittorrent.org)
# Bruno Barbieri (brunorex@gmail.com) # Bruno Barbieri (brunorex@gmail.com)
@ -34,7 +34,7 @@ from html.parser import HTMLParser
from re import compile as re_compile from re import compile as re_compile
class torrentreactor(object): class torrentreactor(object):
url = 'http://www.torrentreactor.net' url = 'http://torrentreactor.com'
name = 'TorrentReactor' name = 'TorrentReactor'
supported_categories = {'all': '', 'movies': '5', 'tv': '8', 'music': '6', 'games': '3', 'anime': '1', 'software': '2'} supported_categories = {'all': '', 'movies': '5', 'tv': '8', 'music': '6', 'games': '3', 'anime': '1', 'software': '2'}
@ -42,13 +42,14 @@ class torrentreactor(object):
print(download_file(info)) print(download_file(info))
class SimpleHTMLParser(HTMLParser): class SimpleHTMLParser(HTMLParser):
def __init__(self, results, url, *args): def __init__(self, results, url, what):
HTMLParser.__init__(self) HTMLParser.__init__(self)
self.td_counter = None self.td_counter = None
self.current_item = None self.current_item = None
self.results = results self.results = results
self.id = None self.id = None
self.url = url self.url = url
self.what_list = parse.unquote(what).split()
self.torrents_matcher = re_compile("/torrents/\d+.*") self.torrents_matcher = re_compile("/torrents/\d+.*")
self.dispatcher = { 'a' : self.start_a, 'td' : self.start_td } self.dispatcher = { 'a' : self.start_a, 'td' : self.start_td }
@ -87,6 +88,9 @@ class torrentreactor(object):
self.td_counter = None self.td_counter = None
# add item to results # add item to results
if self.current_item: if self.current_item:
# TorrentReactor returns unrelated results, we need to filter
if not all(word in self.current_item['name'].lower() for word in self.what_list):
return
self.current_item['engine_url'] = self.url self.current_item['engine_url'] = self.url
if not self.current_item['seeds'].isdigit(): if not self.current_item['seeds'].isdigit():
self.current_item['seeds'] = 0 self.current_item['seeds'] = 0
@ -99,13 +103,13 @@ class torrentreactor(object):
def search(self, what, cat='all'): def search(self, what, cat='all'):
i = 0 i = 0
dat = '' dat = ''
results = []
while i < 11: parser = self.SimpleHTMLParser(results, self.url, what)
results = [] while i < 9:
parser = self.SimpleHTMLParser(results, self.url) dat = retrieve_url('%s/torrents-search/%s/%s?sort=seeders.desc&type=all&period=none&categories=%s'%(self.url, what, (i*35), self.supported_categories[cat]))
dat = retrieve_url('%s/torrent-search/%s/%s?sort=seeders.desc&type=all&period=none&categories=%s'%(self.url, what, (i*35), self.supported_categories[cat]))
parser.feed(dat) parser.feed(dat)
parser.close()
if len(results) <= 0: if len(results) <= 0:
break break
del results[:]
i += 1 i += 1
parser.close()

View file

@ -5,5 +5,5 @@ kickasstorrents: 1.28
legittorrents: 2.00 legittorrents: 2.00
mininova: 2.00 mininova: 2.00
piratebay: 2.11 piratebay: 2.11
torrentreactor: 1.36 torrentreactor: 1.40
torrentz: 2.15 torrentz: 2.15