diff --git a/src/searchengine/nova/engines/torrentdownloads.png b/src/searchengine/nova/engines/torrentdownloads.png deleted file mode 100644 index ce14cea48..000000000 Binary files a/src/searchengine/nova/engines/torrentdownloads.png and /dev/null differ diff --git a/src/searchengine/nova/engines/torrentdownloads.py b/src/searchengine/nova/engines/torrentdownloads.py deleted file mode 100644 index 0d0b79591..000000000 --- a/src/searchengine/nova/engines/torrentdownloads.py +++ /dev/null @@ -1,141 +0,0 @@ -#VERSION: 1.1 -#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: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the author nor the names of its contributors may be -# used to endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - - -from novaprinter import prettyPrinter -from helpers import retrieve_url -import StringIO, gzip, urllib2, tempfile -import sgmllib -import re -import os - -class torrentdownloads(object): - url = 'http://www.torrentdownloads.net' - name = 'TorrentDownloads' - supported_categories = {'all': '0', 'movies': '4', 'tv': '8', 'music': '5', 'games': '3', 'anime': '1', 'software': '7', 'books': '2'} - - def __init__(self): - self.results = [] - #self.parser = self.SimpleSGMLParser(self.results, self.url) - - def download_torrent(self, url): - """ Download file at url and write it to a file, return the path to the file and the url """ - file, path = tempfile.mkstemp() - file = os.fdopen(file, "w") - # Download url - req = urllib2.Request(url) - response = urllib2.urlopen(req) - dat = response.read() - # Check if it is gzipped - if dat[:2] == '\037\213': - # Data is gzip encoded, decode it - compressedstream = StringIO.StringIO(dat) - gzipper = gzip.GzipFile(fileobj=compressedstream) - extracted_data = gzipper.read() - dat = extracted_data - - # Write it to a file - file.write(dat.strip()) - file.close() - # return file path - print path+" "+url - - class SimpleSGMLParser(sgmllib.SGMLParser): - def __init__(self, results, url, what, *args): - sgmllib.SGMLParser.__init__(self) - self.url = url - self.li_counter = None - self.current_item = None - self.results = results - self.what = what.upper().split('+') - if len(self.what) == 0: - self.what = None - - def start_a(self, attr): - params = dict(attr) - #print params - if params.has_key('href') and params['href'].startswith("http://www.torrentdownloads.net/torrent/"): - self.current_item = {} - self.li_counter = 0 - self.current_item['desc_link'] = params['href'].strip() - self.current_item['link']=params['href'].strip().replace('/torrent', '/download', 1) - - def handle_data(self, data): - if self.li_counter == 0: - if not self.current_item.has_key('name'): - self.current_item['name'] = '' - self.current_item['name']+= data - elif self.li_counter == 1: - if not self.current_item.has_key('size'): - self.current_item['size'] = '' - self.current_item['size']+= data.strip().replace(" ", " ") - elif self.li_counter == 2: - if not self.current_item.has_key('seeds'): - self.current_item['seeds'] = '' - self.current_item['seeds']+= data.strip() - elif self.li_counter == 3: - if not self.current_item.has_key('leech'): - self.current_item['leech'] = '' - self.current_item['leech']+= data.strip() - - def start_li(self,attr): - if isinstance(self.li_counter,int): - self.li_counter += 1 - if self.li_counter > 3: - self.li_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 - # Search should use AND operator as a default - tmp = self.current_item['name'].upper(); - if self.what is not None: - for w in self.what: - if tmp.find(w) < 0: return - prettyPrinter(self.current_item) - self.results.append('a') - - def search(self, what, cat='all'): - ret = [] - i = 1 - while i<11: - results = [] - parser = self.SimpleSGMLParser(results, self.url, what) - dat = retrieve_url(self.url+'/search/?page=%d&search=%s&s_cat=%s&srt=seeds&pp=50&order=desc'%(i, what, self.supported_categories[cat])) - results_re = re.compile('(?s)
.*') - 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 - diff --git a/src/searchengine/nova3/engines/torrentdownloads.png b/src/searchengine/nova3/engines/torrentdownloads.png deleted file mode 100644 index ce14cea48..000000000 Binary files a/src/searchengine/nova3/engines/torrentdownloads.png and /dev/null differ diff --git a/src/searchengine/nova3/engines/torrentdownloads.py b/src/searchengine/nova3/engines/torrentdownloads.py deleted file mode 100644 index 6bb3e2b4b..000000000 --- a/src/searchengine/nova3/engines/torrentdownloads.py +++ /dev/null @@ -1,141 +0,0 @@ -#VERSION: 1.1 -#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: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the author nor the names of its contributors may be -# used to endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - - -from novaprinter import prettyPrinter -from helpers import retrieve_url -import io, gzip, urllib.request, urllib.error, urllib.parse, tempfile -import sgmllib3 -import re -import os - -class torrentdownloads(object): - url = 'http://www.torrentdownloads.net' - name = 'TorrentDownloads' - supported_categories = {'all': '0', 'movies': '4', 'tv': '8', 'music': '5', 'games': '3', 'anime': '1', 'software': '7', 'books': '2'} - - def __init__(self): - self.results = [] - #self.parser = self.SimpleSGMLParser(self.results, self.url) - - def download_torrent(self, url): - """ Download file at url and write it to a file, return the path to the file and the url """ - file, path = tempfile.mkstemp() - file = os.fdopen(file, "w") - # Download url - req = urllib.request.Request(url) - response = urllib.request.urlopen(req) - dat = response.read() - # Check if it is gzipped - if dat[:2] == '\037\213': - # Data is gzip encoded, decode it - compressedstream = io.StringIO(dat) - gzipper = gzip.GzipFile(fileobj=compressedstream) - extracted_data = gzipper.read() - dat = extracted_data - - # Write it to a file - file.write(dat.strip()) - file.close() - # return file path - print(path+" "+url) - - class SimpleSGMLParser(sgmllib3.SGMLParser): - def __init__(self, results, url, what, *args): - sgmllib3.SGMLParser.__init__(self) - self.url = url - self.li_counter = None - self.current_item = None - self.results = results - self.what = what.upper().split('+') - if len(self.what) == 0: - self.what = None - - def start_a(self, attr): - params = dict(attr) - #print params - if 'href' in params and params['href'].startswith("http://www.torrentdownloads.net/torrent/"): - self.current_item = {} - self.li_counter = 0 - self.current_item['desc_link'] = params['href'].strip() - self.current_item['link']=params['href'].strip().replace('/torrent', '/download', 1) - - def handle_data(self, data): - if self.li_counter == 0: - if 'name' not in self.current_item: - self.current_item['name'] = '' - self.current_item['name']+= data - elif self.li_counter == 1: - if 'size' not in self.current_item: - self.current_item['size'] = '' - self.current_item['size']+= data.strip().replace(" ", " ") - elif self.li_counter == 2: - if 'seeds' not in self.current_item: - self.current_item['seeds'] = '' - self.current_item['seeds']+= data.strip() - elif self.li_counter == 3: - if 'leech' not in self.current_item: - self.current_item['leech'] = '' - self.current_item['leech']+= data.strip() - - def start_li(self,attr): - if isinstance(self.li_counter,int): - self.li_counter += 1 - if self.li_counter > 3: - self.li_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 - # Search should use AND operator as a default - tmp = self.current_item['name'].upper(); - if self.what is not None: - for w in self.what: - if tmp.find(w) < 0: return - prettyPrinter(self.current_item) - self.results.append('a') - - def search(self, what, cat='all'): - ret = [] - i = 1 - while i<11: - results = [] - parser = self.SimpleSGMLParser(results, self.url, what) - dat = retrieve_url(self.url+'/search/?page=%d&search=%s&s_cat=%s&srt=seeds&pp=50&order=desc'%(i, what, self.supported_categories[cat])) - results_re = re.compile('(?s)
.*') - 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 - diff --git a/src/searchengine/search.qrc b/src/searchengine/search.qrc index 015a0d34c..4a78aa158 100644 --- a/src/searchengine/search.qrc +++ b/src/searchengine/search.qrc @@ -18,8 +18,6 @@ nova/engines/mininova.py nova/engines/piratebay.png nova/engines/piratebay.py - nova/engines/torrentdownloads.png - nova/engines/torrentdownloads.py nova/engines/torrentreactor.png nova/engines/torrentreactor.py nova/engines/vertor.png @@ -42,8 +40,6 @@ nova3/engines/mininova.py nova3/engines/piratebay.png nova3/engines/piratebay.py - nova3/engines/torrentdownloads.png - nova3/engines/torrentdownloads.py nova3/engines/torrentreactor.png nova3/engines/torrentreactor.py nova3/engines/vertor.png