def GetRottenTomatoesMoviesComingSoon(type): movies = [] results = "" try: url = 'http://api.rottentomatoes.com/api/public/v1.0/lists/movies/upcoming.json?apikey=%s' % ( rottentomatoes_key) log("Json Query: " + url) response = GetStringFromUrl(url) results = simplejson.loads(response) except: log("Error when fetching RottenTomatoes data from net") count = 1 if results: for item in results["movies"]: movie = { 'Title': item["title"], 'Art(poster)': item["posters"]["original"], 'Runtime': item["runtime"], 'Year': item["year"], 'Premiered': item["release_dates"]["theater"], 'mpaa': item["mpaa_rating"], 'Rating': item["ratings"]["audience_score"] / 10.0, 'Plot': item["synopsis"] } movies.append(movie) count += 1 if count > 20: break return movies
def GetNearEvents(): settings = xbmcaddon.Addon(id='script.ExtraMusicInfo') country = 'Poland' #settings.getSetting('country') city = 'Wroclaw' #settings.getSetting('city') url = 'http://api.bandsintown.com/events/search?format=json&location=use_geoip&app_id=%s' % (bandsintown_apikey) log('request: %s' % url) response = GetStringFromUrl(url) results = json.loads(response) return HandleResult(results)
def GetMusicBrainzIdFromNet(artist, xbmc_artist_id=-1): url = 'http://musicbrainz.org/ws/1/artist/?type=xml&name=%s' % urllib.quote_plus( artist) tries = 0 trylimit = 5 gotit = False while tries < trylimit and not gotit: ret = GetStringFromUrl(url) if 'requests are exceeding the allowable rate limit' in ret: log('MusicBrainz limits amount of request per time - we must wait') time.sleep(1) 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 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 GetNearEvents(Artists): settings = xbmcaddon.Addon(id='script.ExtraMusicInfo') ArtistStr = '' for art in Artists: if len(ArtistStr) > 0: ArtistStr = ArtistStr + '&' ArtistStr = ArtistStr + 'artists[]=' + urllib.quote(art['name']) Artists url = 'http://api.bandsintown.com/events/search?%sformat=json&location=use_geoip&app_id=%s' % (ArtistStr, bandsintown_apikey) log('request: %s' % url) response = GetStringFromUrl(url) results = json.loads(response) return HandleResult(results)
def GetSimiliarById(m_id): url = 'http://ws.audioscrobbler.com/2.0/?method=artist.getsimilar&mbid=%s&api_key=%s' % ( m_id, lastfm_apikey) ret = GetStringFromUrl(url) curXML = xml.dom.minidom.parseString(ret) curXMLs = curXML.getElementsByTagName('lfm') if len(curXMLs) > 0: curXML = curXMLs[0] else: log('No <lfm> found - printing retrieved xml:') print ret return None curXMLs = curXML.getElementsByTagName('similarartists') if len(curXMLs) > 0: curXML = curXMLs[0] else: log('No <similiarartists> found - printing retrieved xml:') print ret return None artistXMLs = curXML.getElementsByTagName('artist') similiars = [] for artistXML in artistXMLs: artist = { "name": GetValue(artistXML, 'name'), "mbid": GetValue(artistXML, 'mbid') } similiars.append(artist) log('Found %i Similiar artists in last.FM' % len(similiars)) return similiars
def GetEvents(id): url = 'http://api.bandsintown.com/artists/mbid_%s/events?format=json&app_id=%s' % (id, bandsintown_apikey) response = GetStringFromUrl(url) results = json.loads(response) return HandleResult(results)