solidtorrents.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # SPDX-License-Identifier: AGPL-3.0-or-later
  2. """Solid Torrents
  3. """
  4. # pylint: disable=missing-function-docstring
  5. from json import loads
  6. from urllib.parse import urlencode
  7. from searx import logger
  8. logger = logger.getChild('solidtor engine')
  9. about = {
  10. "website": 'https://www.solidtorrents.net/',
  11. "wikidata_id": None,
  12. "official_api_documentation": None,
  13. "use_official_api": True,
  14. "require_api_key": False,
  15. "results": 'JSON',
  16. }
  17. categories = ['files']
  18. paging = True
  19. base_url = 'https://www.solidtorrents.net/'
  20. search_url = base_url + 'api/v1/search?{query}'
  21. def request(query, params):
  22. skip = (params['pageno'] - 1) * 20
  23. query = urlencode({'q': query, 'skip': skip})
  24. params['url'] = search_url.format(query=query)
  25. logger.debug("query_url --> %s", params['url'])
  26. return params
  27. def response(resp):
  28. results = []
  29. search_results = loads(resp.text)
  30. for result in search_results["results"]:
  31. results.append({
  32. 'infohash': result["infohash"],
  33. 'seed': result["swarm"]["seeders"],
  34. 'leech': result["swarm"]["leechers"],
  35. 'title': result["title"],
  36. 'url': "https://solidtorrents.net/view/" + result["_id"],
  37. 'filesize': result["size"],
  38. 'magnetlink': result["magnet"],
  39. 'template': "torrent.html",
  40. })
  41. return results