def GetMovieDBData(url = "", cache_days = 14): from base64 import b64encode global base_url global poster_size global fanart_size if not base_url: log("fetching base_url and size (MovieDB config)") base_url = True base_url, poster_size, fanart_size = GetMovieDBConfig() filename = b64encode(url).replace("/","XXXX") path = Addon_Data_Path + "/" + filename + ".txt" log("trying to load " + path) if xbmcvfs.exists(path) and ((time.time() - os.path.getmtime(path)) < (cache_days * 86400)): return read_from_file(path) else: url = "http://api.themoviedb.org/3/" + url + "api_key=%s" % moviedb_key log("Downloading MovieDB Data: " + url) headers = {"Accept": "application/json"} succeed = 0 while succeed < 3: try: request = Request(url, headers = headers) response = urlopen(request).read() log(response) log("saved file " + filename) response = json.loads(response) save_to_file(response,filename,Addon_Data_Path) return response except: log("could not get data from %s" % url) xbmc.sleep(1000) succeed += 1 return []
def GetMovieDBData(url="", cache_days=14): from base64 import b64encode global base_url global poster_size global fanart_size if not base_url: log("fetching base_url and size (MovieDB config)") base_url = True base_url, poster_size, fanart_size = GetMovieDBConfig() filename = b64encode(url).replace("/", "XXXX") path = Addon_Data_Path + "/" + filename + ".txt" log("trying to load " + path) if xbmcvfs.exists(path) and ((time.time() - os.path.getmtime(path)) < (cache_days * 86400)): return read_from_file(path) else: url = "http://api.themoviedb.org/3/" + url + "api_key=%s" % moviedb_key log("Downloading MovieDB Data: " + url) headers = {"Accept": "application/json"} succeed = 0 while succeed < 3: try: request = Request(url, headers=headers) response = urlopen(request).read() log("saved file " + filename) response = json.loads(response) save_to_file(response, filename, Addon_Data_Path) return response except: log("could not get data from %s" % url) xbmc.sleep(1000) succeed += 1 return []
def GetMusicBrainzIdFromNet(artist, xbmc_artist_id=-1): import base64 url = 'http://musicbrainz.org/ws/1/artist/?type=xml&name=%s' % urllib.quote_plus( artist) tries = 0 trylimit = 5 gotit = False filename = base64.urlsafe_b64encode(url) if xbmcvfs.exists( filename) and time.time() - os.path.getmtime(filename) < 86400: return read_from_file(filename) else: while tries < trylimit and not gotit: ret = GetStringFromUrl(url) if ret: if 'requests are exceeding the allowable rate limit' in ret: log('MusicBrainz limits amount of request per time - we must wait' ) xbmc.sleep(1000) tries = tries + 1 else: gotit = True if not gotit: return -1 curXML = xml.dom.minidom.parseString(ret) curXMLs = curXML.getElementsByTagName('metadata') if len(curXMLs) > 0: curXML = curXMLs[0] else: return None curXMLs = curXML.getElementsByTagName('artist-list') if len(curXMLs) > 0: curXML = curXMLs[0] else: return None curXMLs = curXML.getElementsByTagName('artist') if len(curXMLs) > 0: curXML = curXMLs[0] else: return None # artistName = GetValue(curXML, 'name') artistMusicBrainzId = curXML.getAttribute('id') log('Found MusicBrainz ID') # if xbmc_artist_id != -1: # SetMusicBrainzID(xbmc_artist_id, artistMusicBrainzId) return artistMusicBrainzId
def GetMusicBrainzIdFromNet(artist, xbmc_artist_id = -1): import base64 url = 'http://musicbrainz.org/ws/1/artist/?type=xml&name=%s' % urllib.quote_plus(artist) tries = 0 trylimit = 5 gotit = False filename = base64.urlsafe_b64encode(url) if xbmcvfs.exists(filename) and time.time() - os.path.getmtime(filename) < 86400: return read_from_file(filename) else: while tries < trylimit and not gotit: ret = GetStringFromUrl(url) if ret: if 'requests are exceeding the allowable rate limit' in ret: log('MusicBrainz limits amount of request per time - we must wait') xbmc.sleep(1000) tries = tries + 1 else: gotit = True if not gotit: return -1 log(ret) curXML = xml.dom.minidom.parseString(ret) curXMLs = curXML.getElementsByTagName('metadata') if len(curXMLs) > 0: curXML = curXMLs[0] else: return None curXMLs = curXML.getElementsByTagName('artist-list') if len(curXMLs) > 0: curXML = curXMLs[0] else: return None curXMLs = curXML.getElementsByTagName('artist') if len(curXMLs) > 0: curXML = curXMLs[0] else: return None artistName = GetValue(curXML, 'name') artistMusicBrainzId = curXML.getAttribute('id') log('Found MusicBrainz ID') if xbmc_artist_id != -1: SetMusicBrainzID(xbmc_artist_id, artistMusicBrainzId) return artistMusicBrainzId