From 5549d58de3512203943308c8fbe23c1d7187c96d Mon Sep 17 00:00:00 2001 From: Michael Ilsaas Date: Sun, 7 Mar 2021 18:14:30 +0100 Subject: [PATCH] Add Solid Torrents engine --- Makefile | 1 + searx/engines/solidtorrents.py | 53 ++++++++++++++++++++++++++++++++++ searx/settings.yml | 6 ++++ 3 files changed, 60 insertions(+) create mode 100644 searx/engines/solidtorrents.py diff --git a/Makefile b/Makefile index 9917da78b..3bd217d4d 100644 --- a/Makefile +++ b/Makefile @@ -195,6 +195,7 @@ PYLINT_FILES=\ searx/engines/google_videos.py \ searx/engines/google_images.py \ searx/engines/mediathekviewweb.py \ + searx/engines/solidtorrents.py \ searx/engines/google_scholar.py \ searx_extra/update/update_external_bangs.py diff --git a/searx/engines/solidtorrents.py b/searx/engines/solidtorrents.py new file mode 100644 index 000000000..050149187 --- /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"], + 'link': "https://solidtorrents.net/view/" + result["_id"], + 'filesize': result["size"], + 'magnetlink': result["magnet"], + 'template': "torrent.html", + }) + return results diff --git a/searx/settings.yml b/searx/settings.yml index e45afb59b..55da9d402 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -956,6 +956,12 @@ engines: timeout : 6.0 disabled : True + - name : solidtorrents + engine : solidtorrents + shortcut : solid + timeout : 3.0 + disabled : True + - name : torrentz engine : torrentz shortcut : tor