From 2afa28219062fbe049ab47c8cc28d836aceb92f9 Mon Sep 17 00:00:00 2001 From: ngosang Date: Sat, 27 Jun 2015 13:58:25 +0200 Subject: [PATCH] [search engine] Update BTDigg --- src/searchengine/nova/engines/btdigg.py | 49 ++++++++++++-------- src/searchengine/nova/engines/versions.txt | 2 +- src/searchengine/nova3/engines/btdigg.py | 51 ++++++++++++--------- src/searchengine/nova3/engines/versions.txt | 2 +- 4 files changed, 63 insertions(+), 41 deletions(-) diff --git a/src/searchengine/nova/engines/btdigg.py b/src/searchengine/nova/engines/btdigg.py index 53fb3940b..79d924b57 100644 --- a/src/searchengine/nova/engines/btdigg.py +++ b/src/searchengine/nova/engines/btdigg.py @@ -1,4 +1,4 @@ -#VERSION: 1.25 +#VERSION: 1.30 #AUTHORS: BTDigg team (research@btdigg.org) # GNU GENERAL PUBLIC LICENSE @@ -33,26 +33,39 @@ class btdigg(object): def search(self, what, cat='all'): req = urllib.unquote(what) - u = urllib2.urlopen('https://api.btdigg.org/api/public-8e9a50f8335b964f/s01?%s' % (urllib.urlencode(dict(q = req)),)) - - try: + what_list = req.decode('utf8').split() + i = 0 + results = 0 + while i < 3: + u = urllib2.urlopen('https://api.btdigg.org/api/public-8e9a50f8335b964f/s01?%s' % urllib.urlencode(dict(q = req, p = i))) for line in u: - if line.startswith('#'): - continue + try: + line = line.decode('utf8') + if line.startswith('#'): + continue - info_hash, name, files, size, dl, seen = line.strip().split('\t')[:6] - name = name.translate(None, '|') - res = dict(link = 'magnet:?xt=urn:btih:%s&dn=%s' % (info_hash, urllib.quote(name)), - name = name, - size = size, - seeds = int(dl), - leech = int(dl), - engine_url = self.url, - desc_link = '%s/search?%s' % (self.url, urllib.urlencode(dict(info_hash = info_hash, q = req)),)) + info_hash, name, files, size, dl, seen = line.strip().split('\t')[:6] + name = name.replace('|', '') + # BTDigg returns unrelated results, we need to filter + if not all(word in name.lower() for word in what_list): + continue - prettyPrinter(res) - finally: - u.close() + res = dict(link = 'magnet:?xt=urn:btih:%s&dn=%s' % (info_hash, urllib.quote(name.encode('utf8'))), + name = name, + size = size, + seeds = int(dl), + leech = int(dl), + engine_url = self.url, + desc_link = '%s/search?%s' % (self.url, urllib.urlencode(dict(info_hash = info_hash, q = req)))) + + prettyPrinter(res) + results += 1 + except: + pass + + if results == 0: + break + i += 1 if __name__ == "__main__": s = btdigg() diff --git a/src/searchengine/nova/engines/versions.txt b/src/searchengine/nova/engines/versions.txt index 25b2da2a0..f093b2773 100644 --- a/src/searchengine/nova/engines/versions.txt +++ b/src/searchengine/nova/engines/versions.txt @@ -1,4 +1,4 @@ -btdigg: 1.25 +btdigg: 1.30 demonoid: 1.1 extratorrent: 2.0 kickasstorrents: 1.27 diff --git a/src/searchengine/nova3/engines/btdigg.py b/src/searchengine/nova3/engines/btdigg.py index 6d2e7e8e0..38db5be2e 100644 --- a/src/searchengine/nova3/engines/btdigg.py +++ b/src/searchengine/nova3/engines/btdigg.py @@ -1,4 +1,4 @@ -#VERSION: 1.25 +#VERSION: 1.30 #AUTHORS: BTDigg team (research@btdigg.org) # GNU GENERAL PUBLIC LICENSE @@ -33,30 +33,39 @@ class btdigg(object): def search(self, what, cat='all'): req = urllib.parse.unquote(what) - u = urllib.request.urlopen('https://api.btdigg.org/api/public-8e9a50f8335b964f/s01?%s' % (urllib.parse.urlencode(dict(q = req)),)) - - try: + what_list = req.split() + i = 0 + results = 0 + while i < 3: + u = urllib.request.urlopen('https://api.btdigg.org/api/public-8e9a50f8335b964f/s01?%s' % urllib.parse.urlencode(dict(q = req, p = i))) for line in u: - line = line.decode('utf-8') - if line.startswith('#'): - continue + try: + line = line.decode('utf8') + if line.startswith('#'): + continue - info_hash, name, files, size, dl, seen = line.strip().split('\t')[:6] - name = name.replace('|', '') - res = dict(link = 'magnet:?xt=urn:btih:%s&dn=%s' % (info_hash, urllib.parse.quote(name)), - name = name, - size = size, - seeds = int(dl), - leech = int(dl), - engine_url = self.url, - desc_link = '%s/search?%s' % (self.url, urllib.parse.urlencode(dict(info_hash = info_hash, q = req)),)) + info_hash, name, files, size, dl, seen = line.strip().split('\t')[:6] + name = name.replace('|', '') + # BTDigg returns unrelated results, we need to filter + if not all(word in name.lower() for word in what_list): + continue - prettyPrinter(res) - finally: - u.close() - + res = dict(link = 'magnet:?xt=urn:btih:%s&dn=%s' % (info_hash, urllib.parse.quote(name)), + name = name, + size = size, + seeds = int(dl), + leech = int(dl), + engine_url = self.url, + desc_link = '%s/search?%s' % (self.url, urllib.parse.urlencode(dict(info_hash = info_hash, q = req)))) - + prettyPrinter(res) + results += 1 + except: + pass + + if results == 0: + break + i += 1 if __name__ == "__main__": s = btdigg() diff --git a/src/searchengine/nova3/engines/versions.txt b/src/searchengine/nova3/engines/versions.txt index 25b2da2a0..f093b2773 100644 --- a/src/searchengine/nova3/engines/versions.txt +++ b/src/searchengine/nova3/engines/versions.txt @@ -1,4 +1,4 @@ -btdigg: 1.25 +btdigg: 1.30 demonoid: 1.1 extratorrent: 2.0 kickasstorrents: 1.27