summaryrefslogtreecommitdiff
path: root/searx/engines/solidtorrents.py
diff options
context:
space:
mode:
Diffstat (limited to 'searx/engines/solidtorrents.py')
-rw-r--r--searx/engines/solidtorrents.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/searx/engines/solidtorrents.py b/searx/engines/solidtorrents.py
new file mode 100644
index 0000000..dad36cc
--- /dev/null
+++ b/searx/engines/solidtorrents.py
@@ -0,0 +1,53 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""Solid Torrents
+
+"""
+
+# pylint: disable=missing-function-docstring
+
+from json import loads
+from urllib.parse import urlencode
+from searx import logger
+
+logger = logger.getChild('solidtor engine')
+
+about = {
+ "website": 'https://www.solidtorrents.net/',
+ "wikidata_id": None,
+ "official_api_documentation": None,
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
+categories = ['files']
+paging = True
+
+base_url = 'https://www.solidtorrents.net/'
+search_url = base_url + 'api/v1/search?{query}'
+
+
+def request(query, params):
+ skip = (params['pageno'] - 1) * 20
+ query = urlencode({'q': query, 'skip': skip})
+ params['url'] = search_url.format(query=query)
+ logger.debug("query_url --> %s", params['url'])
+ return params
+
+
+def response(resp):
+ results = []
+ search_results = loads(resp.text)
+
+ for result in search_results["results"]:
+ results.append({
+ 'infohash': result["infohash"],
+ 'seed': result["swarm"]["seeders"],
+ 'leech': result["swarm"]["leechers"],
+ 'title': result["title"],
+ 'url': "https://solidtorrents.net/view/" + result["_id"],
+ 'filesize': result["size"],
+ 'magnetlink': result["magnet"],
+ 'template': "torrent.html",
+ })
+ return results