From bb34685dfaf4a63566227d99180fbe6f0ee5016c Mon Sep 17 00:00:00 2001 From: Paul Alcock <25768075+Guilvareux@users.noreply.github.com> Date: Sat, 2 Oct 2021 11:41:38 +0000 Subject: [PATCH] Add IMDB support (#2980) Closes #1145 --- AUTHORS.rst | 1 + searx/engines/imdb.py | 55 +++++++++++++++++++++++++++++++++++++++++++ searx/settings.yml | 6 +++++ 3 files changed, 62 insertions(+) create mode 100644 searx/engines/imdb.py diff --git a/AUTHORS.rst b/AUTHORS.rst index 57834514..8479a357 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -165,3 +165,4 @@ generally made searx better: - @jhigginbotham - @xenrox - @OliveiraHermogenes +- Paul Alcock @Guilvareux diff --git a/searx/engines/imdb.py b/searx/engines/imdb.py new file mode 100644 index 00000000..e1e22010 --- /dev/null +++ b/searx/engines/imdb.py @@ -0,0 +1,55 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later + +""" +IMDB - Internet Movie Database +Retrieves results from a basic search +Advanced search options are not supported +""" + +import json + +about = { + "website": 'https://imdb.com/', + "wikidata_id": 'Q37312', + "official_api_documentation": None, + "use_official_api": False, + "require_api_key": False, + "results": 'HTML', +} + +categories = ['general'] +paging = False +base_url = 'https://imdb.com/{category}/{id}' +suggestion_url = "https://v2.sg.media-imdb.com/suggestion/{letter}/{query}.json" +search_categories = { + "nm": "name", + "tt": "title", + "kw": "keyword", + "co": "company", + "ep": "episode" +} + + +def request(query, params): + query = query.replace(" ", "_").lower() + params['url'] = suggestion_url.format(letter=query[0], query=query) + return params + + +def response(resp): + suggestions = json.loads(resp.text) + results = [] + for entry in suggestions['d']: + content = "" + if entry['id'][:2] in search_categories: + href = base_url.format(category=search_categories[entry['id'][:2]], id=entry['id']) + if 'y' in entry: + content += str(entry['y']) + " - " + if 's' in entry: + content += entry['s'] + results.append({ + "title": entry['l'], + "url": href, + "content": content + }) + return results diff --git a/searx/settings.yml b/searx/settings.yml index 87899759..c46d02c3 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -699,6 +699,12 @@ engines: require_api_key: false results: JSON + - name : imdb + engine : imdb + shortcut : imdb + timeout : 6.0 + disabled : True + - name : ina engine : ina shortcut : in