diff --git a/src/searchengine.qrc b/src/searchengine.qrc
index 2f94cae5f..35dea1b8a 100644
--- a/src/searchengine.qrc
+++ b/src/searchengine.qrc
@@ -5,35 +5,11 @@
searchengine/nova/nova2.py
searchengine/nova/novaprinter.py
searchengine/nova/socks.py
- searchengine/nova/engines/btdb.png
- searchengine/nova/engines/btdb.py
- searchengine/nova/engines/demonoid.png
- searchengine/nova/engines/demonoid.py
- searchengine/nova/engines/legittorrents.png
- searchengine/nova/engines/legittorrents.py
- searchengine/nova/engines/piratebay.png
- searchengine/nova/engines/piratebay.py
- searchengine/nova/engines/torlock.png
- searchengine/nova/engines/torlock.py
- searchengine/nova/engines/torrentz.png
- searchengine/nova/engines/torrentz.py
searchengine/nova3/helpers.py
searchengine/nova3/nova2.py
searchengine/nova3/novaprinter.py
searchengine/nova3/sgmllib3.py
searchengine/nova3/socks.py
- searchengine/nova3/engines/btdb.png
- searchengine/nova3/engines/btdb.py
- searchengine/nova3/engines/demonoid.png
- searchengine/nova3/engines/demonoid.py
- searchengine/nova3/engines/legittorrents.png
- searchengine/nova3/engines/legittorrents.py
- searchengine/nova3/engines/piratebay.png
- searchengine/nova3/engines/piratebay.py
- searchengine/nova3/engines/torlock.png
- searchengine/nova3/engines/torlock.py
- searchengine/nova3/engines/torrentz.png
- searchengine/nova3/engines/torrentz.py
searchengine/nova/nova2dl.py
searchengine/nova3/nova2dl.py
diff --git a/src/searchengine/nova/engines/__init__.py b/src/searchengine/nova/engines/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/searchengine/nova/engines/btdb.png b/src/searchengine/nova/engines/btdb.png
deleted file mode 100644
index b63314b9d..000000000
Binary files a/src/searchengine/nova/engines/btdb.png and /dev/null differ
diff --git a/src/searchengine/nova/engines/btdb.py b/src/searchengine/nova/engines/btdb.py
deleted file mode 100644
index 58ed79c78..000000000
--- a/src/searchengine/nova/engines/btdb.py
+++ /dev/null
@@ -1,147 +0,0 @@
-#VERSION: 1.01
-#AUTHORS: Charles Worthing
-#CONTRIBUTORS: Diego de las Heras (ngosang@hotmail.es)
-
-# 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 HTMLParser import HTMLParser
-#qBt
-from novaprinter import prettyPrinter
-from helpers import download_file, retrieve_url
-
-class btdb(object):
- """ Search engine class """
- url = 'https://btdb.in'
- name = 'BTDB'
-
- def download_torrent(self, info):
- """ Downloader """
- print(download_file(info))
-
- class MyHtmlParser(HTMLParser):
- """ Parser class """
- def __init__(self, results, url):
- HTMLParser.__init__(self)
- self.results = results
- self.url = url
- self.current_item = {} # One torrent result
- self.add_query = True
- self.torrent_info_index = 0 # Count of the meta data encountered
- self.torrent_info_array = []
- self.meta_data_grabbing = 0
- self.meta_data_array = []
- self.torrent_no_files = 0
- self.torrent_date_added = 0
- self.torrent_popularity = 0
- self.mangnet_link = ""
- self.desc_link = ""
- self.torrent_name = ""
-
- def handle_starttag(self, tag, attrs):
- if tag == "span":
- span_dict = dict(attrs)
- if "class" in span_dict:
- the_class = span_dict["class"]
- if the_class == "item-meta-info-value":
- self.meta_data_grabbing += 1
- else:
- self.meta_data_grabbing = 0
- if tag == "script":
- return
- if tag == "li":
- for attr in attrs:
- if attr[1] == "search-ret-item":
- self.torrent_info_index = 1
- if tag == "a":
- if self.torrent_info_index > 0:
- params = dict(attrs)
- if "href" in params:
- link = params["href"]
- if link.startswith("/torrent"):
- self.desc_link = "".join((self.url, link))
- self.torrent_name = params["title"]
- if link.startswith("magnet:"):
- self.mangnet_link = link
-
- def handle_endtag(self, tag):
- if tag == "script":
- return
- if tag == "div":
- if self.meta_data_grabbing > 0:
-
- self.torrent_no_files = self.meta_data_array[2] # Not used
- self.torrent_date_added = self.meta_data_array[4] # Not used
- self.torrent_popularity = self.meta_data_array[6] # Not used
-
- self.current_item["size"] = self.meta_data_array[0]
- self.current_item["name"] = self.torrent_name
- self.current_item["engine_url"] = self.url
- self.current_item["link"] = self.mangnet_link
- self.current_item["desc_link"] = self.desc_link
- self.current_item["seeds"] = -1
- self.current_item["leech"] = -1
-
- prettyPrinter(self.current_item)
- self.results.append('a')
- self.current_item = {}
-
- self.meta_data_grabbing = 0
- self.meta_data_array = []
- self.mangnet_link = ""
- self.desc_link = ""
- self.torrent_name = ""
-
- def handle_data(self, data):
- if self.torrent_info_index > 0:
- self.torrent_info_array.append(data)
- self.torrent_info_index += 1
- if self.meta_data_grabbing > 0:
- self.meta_data_array.append(data)
- self.meta_data_grabbing += 1
-
- def handle_entityref(self, name):
- c = unichr(name2codepoint[name])
-
- def handle_charref(self, name):
- if name.startswith('x'):
- c = unichr(int(name[1:], 16))
- else:
- c = unichr(int(name))
-
-
- def search(self, what, cat='all'):
- """ Performs search """
- results_list = []
- parser = self.MyHtmlParser(results_list, self.url)
- i = 1
- while i < 31:
- # "what" is already urlencoded
- html = retrieve_url(self.url + '/q/%s/%d?sort=popular' % (what, i))
- parser.feed(html)
- if len(results_list) < 1:
- break
- del results_list[:]
- i += 1
- parser.close()
diff --git a/src/searchengine/nova/engines/demonoid.png b/src/searchengine/nova/engines/demonoid.png
deleted file mode 100644
index 71eb56442..000000000
Binary files a/src/searchengine/nova/engines/demonoid.png and /dev/null differ
diff --git a/src/searchengine/nova/engines/demonoid.py b/src/searchengine/nova/engines/demonoid.py
deleted file mode 100644
index 53a6ff509..000000000
--- a/src/searchengine/nova/engines/demonoid.py
+++ /dev/null
@@ -1,144 +0,0 @@
-#VERSION: 1.23
-#AUTHORS: Douman (custparasite@gmx.se)
-#CONTRIBUTORS: Diego de las Heras (ngosang@hotmail.es)
-
-# 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 HTMLParser import HTMLParser
-from re import compile as re_compile
-from re import DOTALL
-from itertools import islice
-#qBt
-from novaprinter import prettyPrinter
-from helpers import download_file, retrieve_url
-
-class demonoid(object):
- """ Search engine class """
- url = "https://www.demonoid.pw"
- name = "Demonoid"
- supported_categories = {'all': '0',
- 'music': '2',
- 'movies': '1',
- 'games': '4',
- 'software': '5',
- 'books': '11',
- 'anime': '9',
- 'tv': '3'}
-
- def download_torrent(self, info):
- """ Downloader """
- print(download_file(info))
-
- class MyHtmlParseWithBlackJack(HTMLParser):
- """ Parser class """
- def __init__(self, url):
- HTMLParser.__init__(self)
- self.url = url
- self.current_item = None
- self.save_data = None
- self.seeds_leech = False
- self.size_repl = re_compile(",")
-
- def handle_starttag(self, tag, attrs):
- """ Parser's start tag handler """
- if tag == "a":
- params = dict(attrs)
- if "href" in params:
- link = params["href"]
- if link.startswith("/files/details"):
- self.current_item = dict()
- self.current_item["desc_link"] = "".join((self.url, link))
- self.current_item["engine_url"] = self.url
- self.save_data = "name"
- elif link.startswith("/files/download"):
- self.current_item["link"] = "".join((self.url, link))
-
- elif self.current_item:
- if tag == "td":
- params = dict(attrs)
- if "class" in params and "align" in params:
- if params["class"].startswith("tone"):
- if params["align"] == "right":
- self.save_data = "size"
- elif params["align"] == "center":
- self.seeds_leech = True
-
- elif self.seeds_leech and tag == "font":
- for attr in attrs:
- if "class" in attr:
- if attr[1] == "green":
- self.save_data = "seeds"
- elif attr[1] == "red":
- self.save_data = "leech"
-
- self.seeds_leech = False
-
-
- def handle_data(self, data):
- """ Parser's data handler """
- if self.save_data:
- if self.save_data == "name":
- # names with special characters like '&' are splitted in several pieces
- if 'name' not in self.current_item:
- self.current_item['name'] = ''
- self.current_item['name'] += data
- else:
- self.current_item[self.save_data] = data
- self.save_data = None
- if self.current_item.__len__() == 7:
- self.current_item["size"] = self.size_repl.sub("", self.current_item["size"])
- prettyPrinter(self.current_item)
- self.current_item = None
-
- def handle_endtag(self, tag):
- """ Parser's end tag handler """
- if self.save_data == "name":
- self.save_data = None
-
- def search(self, what, cat='all'):
- """ Performs search """
- #prepare query
- cat = self.supported_categories[cat.lower()]
- query = "".join((self.url, "/files/?category=", cat, "&subcategory=All&quality=All&seeded=2&external=2&query=", what, "&uid=0&sort=S"))
-
- data = retrieve_url(query)
-
- add_res_list = re_compile("/files.*page=[0-9]+")
- torrent_list = re_compile("start torrent list -->(.*)(.*)