@@ -0,0 +1,55 @@
1+# SPDX-License-Identifier: AGPL-3.0-or-later
2+
3+"""
4+IMDB - Internet Movie Database
5+Retrieves results from a basic search
6+Advanced search options are not supported
7+"""
8+
9+import json
10+
11+about = {
12+ "website": 'https://imdb.com/',
13+ "wikidata_id": 'Q37312',
14+ "official_api_documentation": None,
15+ "use_official_api": False,
16+ "require_api_key": False,
17+ "results": 'HTML',
18+}
19+
20+categories = ['general']
21+paging = False
22+base_url = 'https://imdb.com/{category}/{id}'
23+suggestion_url = "https://v2.sg.media-imdb.com/suggestion/{letter}/{query}.json"
24+search_categories = {
25+ "nm": "name",
26+ "tt": "title",
27+ "kw": "keyword",
28+ "co": "company",
29+ "ep": "episode"
30+}
31+
32+
33+def request(query, params):
34+ query = query.replace(" ", "_").lower()
35+ params['url'] = suggestion_url.format(letter=query[0], query=query)
36+ return params
37+
38+
39+def response(resp):
40+ suggestions = json.loads(resp.text)
41+ results = []
42+ for entry in suggestions['d']:
43+ content = ""
44+ if entry['id'][:2] in search_categories:
45+ href = base_url.format(category=search_categories[entry['id'][:2]], id=entry['id'])
46+ if 'y' in entry:
47+ content += str(entry['y']) + " - "
48+ if 's' in entry:
49+ content += entry['s']
50+ results.append({
51+ "title": entry['l'],
52+ "url": href,
53+ "content": content
54+ })
55+ return results