diff --git a/src/search_engine/engines/mininova.py b/src/search_engine/engines/mininova.py index 8f63a48a1..cd69c2fe8 100644 --- a/src/search_engine/engines/mininova.py +++ b/src/search_engine/engines/mininova.py @@ -1,5 +1,5 @@ -#VERSION: 1.32 -#AUTHORS: Fabien Devaux (fab@gnux.info) +#VERSION: 1.40 +#AUTHORS: Christophe Dumez (chris@qbittorrent.org) # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -27,88 +27,85 @@ from novaprinter import prettyPrinter from helpers import retrieve_url, download_file -from xml.dom import minidom +import sgmllib import re class mininova(object): - # Mandatory properties - url = 'http://www.mininova.org' - name = 'Mininova' - supported_categories = {'all': '0', 'movies': '4', 'tv': '8', 'music': '5', 'games': '3', 'anime': '1', 'software': '7', 'pictures': '6', 'books': '2'} - - def download_torrent(self, info): - print download_file(info) + # Mandatory properties + url = 'http://www.mininova.org' + name = 'Mininova' + supported_categories = {'all': '0', 'movies': '4', 'tv': '8', 'music': '5', 'games': '3', 'anime': '1', 'software': '7', 'pictures': '6', 'books': '2'} - def search(self, what, cat='all'): + def __init__(self): + self.results = [] + self.parser = self.SimpleSGMLParser(self.results, self.url) - def get_link(lnk): - lnks = lnk.getElementsByTagName('a') - i = 0 - try: - while not lnks.item(i).attributes.get('href').value.startswith('/get'): - i += 1 - except: - return None - return (self.url+lnks.item(i).attributes.get('href').value).strip() - - def get_name(lnk): - lnks = lnk.getElementsByTagName('a') - i = 0 - try: - while not lnks.item(i).attributes.get('href').value.startswith('/tor'): - i += 1 - except: - return None - name = "" - for node in lnks[i].childNodes: - if node.hasChildNodes(): - name += node.firstChild.toxml() - else: - name += node.toxml() - return re.sub('<[a-zA-Z\/][^>]*>', '', name) + def download_torrent(self, info): + print download_file(info) - def get_text(txt): - if txt.nodeType == txt.TEXT_NODE: - return txt.toxml() - else: - return ''.join([ get_text(n) for n in txt.childNodes]) - - if cat == 'all': - self.table_items = 'added cat name size seeds leech'.split() - else: - self.table_items = 'added name size seeds leech'.split() - page = 1 - while True and page<11: - res = 0 - dat = retrieve_url(self.url+'/search/%s/%s/seeds/%d'%(what, self.supported_categories[cat], page)) - dat = re.sub(" 4: + self.td_counter = None + # Display item + if self.current_item: + self.current_item['engine_url'] = self.url + if not self.current_item['seeds'].isdigit(): + self.current_item['seeds'] = 0 + if not self.current_item['leech'].isdigit(): + self.current_item['leech'] = 0 + prettyPrinter(self.current_item) + self.results.append('a') + + def search(self, what, cat='all'): + ret = [] + i = 1 + while True and i<11: + results = [] + parser = self.SimpleSGMLParser(results, self.url) + dat = retrieve_url(self.url+'/search/%s/%s/seeds/%d'%(what, self.supported_categories[cat], i)) + results_re = re.compile('(?s)

Search results for.*') + for match in results_re.finditer(dat): + res_tab = match.group(0) + parser.feed(res_tab) + parser.close() + break + if len(results) <= 0: + break + i += 1 + \ No newline at end of file diff --git a/src/search_engine/engines/versions.txt b/src/search_engine/engines/versions.txt index fbd807a9f..9ff5f6d07 100644 --- a/src/search_engine/engines/versions.txt +++ b/src/search_engine/engines/versions.txt @@ -1,5 +1,5 @@ isohunt: 1.30 torrentreactor: 1.20 btjunkie: 2.21 -mininova: 1.32 +mininova: 1.40 piratebay: 1.30