imdb.py 1.4 KB

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