Files
DevOps/Kodi/Lenovo/addons/script.embuary.info/resources/lib/omdb.py

84 lines
2.8 KiB
Python

#!/usr/bin/python
# coding: utf-8
########################
import json
import sys
import requests
import xml.etree.ElementTree as ET
from resources.lib.helper import *
########################
OMDB_API_KEY = ADDON.getSettingString('omdb_api_key')
########################
def omdb_api(imdbnumber=None,title=None,year=None,content_type=None):
if imdbnumber:
url = 'http://www.omdbapi.com/?apikey=%s&i=%s&plot=short&r=xml&tomatoes=true' % (OMDB_API_KEY, imdbnumber)
elif title and year and content_type:
# urllib has issues with some asian letters
try:
title = urllib.quote(title)
except KeyError:
return
url = 'http://www.omdbapi.com/?apikey=%s&t=%s&year=%s&plot=short&r=xml&tomatoes=true' % (OMDB_API_KEY, title, year)
else:
return
omdb = get_cache(url)
if omdb:
return omdb
elif OMDB_API_KEY:
omdb = {}
for i in range(1,4): # loop if heavy server load
try:
request = requests.get(url, timeout=5)
if not request.ok:
raise Exception(str(request.status_code))
result = request.text
tree = ET.ElementTree(ET.fromstring(result))
root = tree.getroot()
for child in root:
# imdb ratings
omdb['imdbRating'] = child.get('imdbRating', '').replace('N/A', '')
omdb['imdbVotes'] = child.get('imdbVotes', '0').replace('N/A', '0').replace(',', '')
# regular rotten rating
omdb['tomatometerallcritics'] = child.get('tomatoMeter', '').replace('N/A', '')
omdb['tomatometerallcritics_avg'] = child.get('tomatoRating', '').replace('N/A', '')
omdb['tomatometerallcritics_votes'] = child.get('tomatoReviews', '0').replace('N/A', '0').replace(',', '')
# user rotten rating
omdb['tomatometerallaudience'] = child.get('tomatoUserMeter', '').replace('N/A', '')
omdb['tomatometerallaudience_avg'] = child.get('tomatoUserRating', '').replace('N/A', '')
omdb['tomatometerallaudience_votes'] = child.get('tomatoUserReviews', '0').replace('N/A', '0').replace(',', '')
# metacritic
omdb['metacritic'] = child.get('metascore', '').replace('N/A', '')
# other
omdb['awards'] = child.get('awards', '').replace('N/A', '')
omdb['DVD'] = date_format(child.get('DVD', '').replace('N/A', ''), scheme='DD MMM YYYY')
except Exception as error:
log('OMDB Error: %s' % error)
pass
else:
write_cache(url,omdb)
break
return omdb