def get_category_title(element): """Return a category title, if available""" found_element = element.find('h3') if found_element: return strip_newlines(found_element.contents[0]) # FIXME: We should probably fall back to something sensible here, or raise an exception instead return ''
def album_info(self, album_id): """get album metadata by musicbrainz id""" details = {"art": {}} params = {'method': 'album.getInfo', 'mbid': album_id} data = self.get_data(params) if data and data.get("album"): if isinstance(data["album"], list): lfmdetails = data["album"][0] else: lfmdetails = data["album"] #if lfmdetails.get("image"): # for image in lfmdetails["image"]: # if image["size"] in ["mega", "extralarge"] and xbmcvfs.exists(image["#text"]): # details["art"]["thumbs"] = [image["#text"]] # details["art"]["thumb"] = image["#text"] if lfmdetails.get("listeners"): details["lastfm.listeners"] = lfmdetails["listeners"] if lfmdetails.get("playcount"): details["lastfm.playcount"] = lfmdetails["playcount"] if lfmdetails.get("tags") and lfmdetails["tags"].get("tag"): details["lastfm.tags"] = [ tag["name"] for tag in lfmdetails["tags"]["tag"] ] if lfmdetails.get("wiki"): details["plot"] = strip_newlines(lfmdetails["wiki"].get( "content", "").split(' <a')[0])
def album_info(self, album_id): '''get album metadata by musicbrainz id''' details = {"art": {}} data = self.get_data("/album-mb.php", {'i': album_id}) if data and data.get("album"): adbdetails = data["album"][0] if adbdetails.get("strAlbumThumb") and xbmcvfs.exists(adbdetails.get("strAlbumThumb")): details["art"]["thumb"] = adbdetails.get("strAlbumThumb") details["art"]["thumbs"] = [adbdetails.get("strAlbumThumb")] if adbdetails.get("strAlbumCDart") and xbmcvfs.exists(adbdetails.get("strAlbumCDart")): details["art"]["discart"] = adbdetails.get("strAlbumCDart") details["art"]["discarts"] = [adbdetails.get("strAlbumCDart")] if adbdetails.get("strAlbumSpine") and xbmcvfs.exists(adbdetails.get("strAlbumSpine")): details["art"]["spine"] = adbdetails.get("strAlbumSpine") if adbdetails.get("strAlbumThumbBack") and xbmcvfs.exists(adbdetails.get("strAlbumThumbBack")): details["art"]["thumbback"] = adbdetails.get("strAlbumThumbBack") if adbdetails.get("strDescription%s" % KODI_LANGUAGE.upper()): details["plot"] = adbdetails.get("strDescription%s" % KODI_LANGUAGE.upper()) if not details.get("plot") and adbdetails.get("strDescriptionEN"): details["plot"] = adbdetails.get("strDescriptionEN") if details.get("plot"): details["plot"] = strip_newlines(details["plot"]) if adbdetails.get("strGenre"): details["genre"] = adbdetails["strGenre"].split("/") if adbdetails.get("strStyle"): details["style"] = adbdetails["strStyle"].split("/") if adbdetails.get("strMood"): details["mood"] = adbdetails["strMood"].split("/") if adbdetails.get("intYearReleased"): details["year"] = adbdetails["intYearReleased"] if adbdetails.get("intScore"): details["rating"] = adbdetails["intScore"] if adbdetails.get("strAlbum"): details["title"] = adbdetails["strAlbum"] return details
def artist_info(self, artist_id): '''get artist metadata by musicbrainz id''' details = {"art": {}} params = {'method': 'artist.getInfo', 'mbid': artist_id} data = self.get_data(params) if data and data.get("artist"): lfmdetails = data["artist"] if lfmdetails.get("image"): for image in lfmdetails["image"]: if image["size"] in ["mega", "extralarge" ] and xbmcvfs.exists(image["#text"]): details["art"]["thumbs"] = [image["#text"]] details["art"]["thumb"] = image["#text"] if lfmdetails.get("bio") and lfmdetails["bio"].get("content"): details["plot"] = strip_newlines( lfmdetails["bio"]["content"].split(' <a href')[0]) if lfmdetails.get("stats") and lfmdetails["stats"].get( "listeners"): details["lastfm.listeners"] = lfmdetails["stats"]["listeners"] if lfmdetails.get("stats") and lfmdetails["stats"].get( "playcount"): details["lastfm.playcount"] = lfmdetails["stats"]["playcount"] if lfmdetails.get("tags") and lfmdetails["tags"].get("tag"): details["lastfm.tags"] = [ tag["name"] for tag in lfmdetails["tags"]["tag"] ] if lfmdetails.get("similar") and lfmdetails["similar"].get( "artist"): details["lastfm.similarartists"] = [ item["name"] for item in lfmdetails["similar"]["artist"] ] return details
def album_info(self, album_id): '''get album metadata by musicbrainz id''' details = {"art": {}} data = self.get_data("/album-mb.php", {'i': album_id}) if data and data.get("album"): adbdetails = data["album"][0] if adbdetails.get("strAlbumThumb") and xbmcvfs.exists( adbdetails.get("strAlbumThumb")): details["art"]["thumb"] = adbdetails.get("strAlbumThumb") details["art"]["thumbs"] = [adbdetails.get("strAlbumThumb")] if adbdetails.get("strAlbumCDart") and xbmcvfs.exists( adbdetails.get("strAlbumCDart")): details["art"]["discart"] = adbdetails.get("strAlbumCDart") details["art"]["discarts"] = [adbdetails.get("strAlbumCDart")] if adbdetails.get("strDescription%s" % KODI_LANGUAGE.upper()): details["plot"] = adbdetails.get("strDescription%s" % KODI_LANGUAGE.upper()) if not details.get("plot") and adbdetails.get("strDescriptionEN"): details["plot"] = adbdetails.get("strDescriptionEN") if details.get("plot"): details["plot"] = strip_newlines(details["plot"]) if adbdetails.get("strGenre"): details["genre"] = adbdetails["strGenre"].split("/") if adbdetails.get("strStyle"): details["style"] = adbdetails["strStyle"].split("/") if adbdetails.get("strMood"): details["mood"] = adbdetails["strMood"].split("/") if adbdetails.get("intYearReleased"): details["year"] = adbdetails["intYearReleased"] if adbdetails.get("intScore"): details["rating"] = adbdetails["intScore"] if adbdetails.get("strAlbum"): details["title"] = adbdetails["strAlbum"] return details
def artist_info(self, artist_id): '''get artist metadata by musicbrainz id''' details = {"art": {}} params = {'method': 'artist.getInfo', 'mbid': artist_id} data = self.get_data(params) if data and data.get("artist"): lfmdetails = data["artist"] if lfmdetails.get("image"): for image in lfmdetails["image"]: if image["size"] in ["mega", "extralarge"] and xbmcvfs.exists(image["#text"]): details["art"]["thumbs"] = [image["#text"]] details["art"]["thumb"] = image["#text"] if lfmdetails.get("bio") and lfmdetails["bio"].get("content"): details["plot"] = strip_newlines(lfmdetails["bio"]["content"].split(' <a href')[0]) if lfmdetails.get("stats") and lfmdetails["stats"].get("listeners"): details["lastfm.listeners"] = lfmdetails["stats"]["listeners"] if lfmdetails.get("stats") and lfmdetails["stats"].get("playcount"): details["lastfm.playcount"] = lfmdetails["stats"]["playcount"] if lfmdetails.get("tags") and lfmdetails["tags"].get("tag"): details["lastfm.tags"] = [tag["name"] for tag in lfmdetails["tags"]["tag"]] if lfmdetails.get("similar") and lfmdetails["similar"].get("artist"): similar_artists = [] for count, item in enumerate(lfmdetails["similar"]["artist"]): similar_artists.append(item["name"]) details["lastfm.similarartists.%s.name" % count] = item["name"] if item.get("image"): for image in item["image"]: if image["size"] in ["mega", "extralarge", "large"] and xbmcvfs.exists(image["#text"]): details["lastfm.similarartists.%s.thumb" % count] = image["#text"] break details["lastfm.similarartists"] = similar_artists return details
def artist_info(self, artist_id): '''get artist metadata by musicbrainz id''' details = {"art": {}} data = self.get_data("/artist-mb.php", {'i': artist_id}) if data and data.get("artists"): adbdetails = data["artists"][0] if adbdetails.get("strArtistBanner") and xbmcvfs.exists(adbdetails.get("strArtistBanner")): details["art"]["banner"] = adbdetails.get("strArtistBanner") details["art"]["banners"] = [adbdetails.get("strArtistBanner")] details["art"]["fanarts"] = [] if adbdetails.get("strArtistFanart") and xbmcvfs.exists(adbdetails.get("strArtistFanart")): details["art"]["fanart"] = adbdetails.get("strArtistFanart") details["art"]["fanarts"].append(adbdetails.get("strArtistFanart")) if adbdetails.get("strArtistFanart2") and xbmcvfs.exists(adbdetails.get("strArtistFanart2")): details["art"]["fanarts"].append(adbdetails.get("strArtistFanart2")) if adbdetails.get("strArtistFanart3") and xbmcvfs.exists(adbdetails.get("strArtistFanart3")): details["art"]["fanarts"].append(adbdetails.get("strArtistFanart3")) if adbdetails.get("strArtistLogo") and xbmcvfs.exists(adbdetails.get("strArtistLogo")): details["art"]["clearlogo"] = adbdetails.get("strArtistLogo") details["art"]["clearlogos"] = [adbdetails.get("strArtistLogo")] if adbdetails.get("strArtistThumb") and xbmcvfs.exists(adbdetails.get("strArtistThumb")): details["art"]["thumb"] = adbdetails["strArtistThumb"] details["art"]["thumbs"] = [adbdetails["strArtistThumb"]] if adbdetails.get("strBiography" + KODI_LANGUAGE.upper()): details["plot"] = adbdetails["strBiography" + KODI_LANGUAGE.upper()] if adbdetails.get("strBiographyEN") and not details.get("plot"): details["plot"] = adbdetails.get("strBiographyEN") if details.get("plot"): details["plot"] = strip_newlines(details["plot"]) if adbdetails.get("strArtistAlternate"): details["alternamename"] = adbdetails["strArtistAlternate"] if adbdetails.get("intFormedYear"): details["formed"] = adbdetails["intFormedYear"] if adbdetails.get("intBornYear"): details["born"] = adbdetails["intBornYear"] if adbdetails.get("intDiedYear"): details["died"] = adbdetails["intDiedYear"] if adbdetails.get("strDisbanded"): details["disbanded"] = adbdetails["strDisbanded"] if adbdetails.get("strStyle"): details["style"] = adbdetails["strStyle"].split("/") if adbdetails.get("strGenre"): details["genre"] = adbdetails["strGenre"].split("/") if adbdetails.get("strMood"): details["mood"] = adbdetails["strMood"].split("/") if adbdetails.get("strWebsite"): details["homepage"] = adbdetails["strWebsite"] if adbdetails.get("strFacebook"): details["facebook"] = adbdetails["strFacebook"] if adbdetails.get("strTwitter"): details["twitter"] = adbdetails["strTwitter"] if adbdetails.get("strGender"): details["gender"] = adbdetails["strGender"] if adbdetails.get("intMembers"): details["members"] = adbdetails["intMembers"] if adbdetails.get("strCountry"): details["country"] = adbdetails["strCountry"].split(", ") return details
def get_album_kodi_metadata(self, artist, album, track, disc): """get album details from the kodi database""" details = {} filters = [{"operator": "contains", "field": "artist", "value": artist}] if artist and track and not album: # get album by track filters.append({"operator": "contains", "field": "title", "value": track}) result = self._mutils.kodidb.songs(filters=filters) for item in result: album = item["album"] break if artist and album: filters.append({"operator": "contains", "field": "album", "value": album}) result = self._mutils.kodidb.albums(filters=filters) if result: details = result[0] details["plot"] = strip_newlines(details["description"]) filters = [{"albumid": details["albumid"]}] album_tracks = self._mutils.kodidb.songs(filters=filters) details["artistid"] = details["artistid"][0] details["tracks"] = [] if sys.version_info.major == 3: bullet = "•" else: bullet = "•".decode("utf-8") details["tracks.formatted"] = u"" details["tracks.formatted2"] = "" details["runtime"] = 0 for item in album_tracks: details["tracks"].append(item["title"]) details["tracks.formatted"] += u"%s %s [CR]" % (bullet, item["title"]) duration = item["duration"] total_seconds = int(duration) minutes = total_seconds // 60 % 60 seconds = total_seconds - (minutes * 60) duration = "%s:%s" % (minutes, str(seconds).zfill(2)) details["runtime"] += item["duration"] details["tracks.formatted2"] += u"%s %s (%s)[CR]" % (bullet, item["title"], duration) if not details.get("diskpath"): if not disc or item["disc"] == int(disc): details["diskpath"] = self.get_albumpath_by_songpath(item["file"]) details["art"] = {} details["songcount"] = len(album_tracks) # get album total duration pretty printed as mm:ss total_seconds = int(details["runtime"]) minutes = total_seconds // 60 % 60 seconds = total_seconds - (minutes * 60) details["duration"] = "%s:%s" % (minutes, str(seconds).zfill(2)) # do not retrieve artwork from item as there's no way to write it back # and it will already be retrieved if user enables to get the artwork from the song path return details
def get_album_kodi_metadata(self, artist, album, track, disc): '''get album details from the kodi database''' details = {} filters = [{"operator": "contains", "field": "artist", "value": artist}] if artist and track and not album: # get album by track filters.append({"operator": "contains", "field": "title", "value": track}) result = self.metadatautils.kodidb.songs(filters=filters) for item in result: album = item["album"] break if artist and album: filters.append({"operator": "contains", "field": "album", "value": album}) result = self.metadatautils.kodidb.albums(filters=filters) if result: details = result[0] details["plot"] = strip_newlines(details["description"]) filters = [{"albumid": details["albumid"]}] album_tracks = self.metadatautils.kodidb.songs(filters=filters) details["tracks"] = [] bullet = "•".decode("utf-8") details["tracks.formatted"] = u"" details["tracks.formatted2"] = "" details["runtime"] = 0 for item in album_tracks: details["tracks"].append(item["title"]) details["tracks.formatted"] += u"%s %s [CR]" % (bullet, item["title"]) duration = item["duration"] total_seconds = int(duration) minutes = total_seconds / 60 seconds = total_seconds - (minutes * 60) duration = "%s:%s" % (minutes, str(seconds).zfill(2)) details["runtime"] += item["duration"] details["tracks.formatted2"] += u"%s %s (%s)[CR]" % (bullet, item["title"], duration) if not details.get("diskpath"): if not disc or item["disc"] == int(disc): details["diskpath"] = self.get_albumpath_by_songpath(item["file"]) details["art"] = {} details["songcount"] = len(album_tracks) # get album total duration pretty printed as mm:ss total_seconds = int(details["runtime"]) minutes = total_seconds / 60 seconds = total_seconds - (minutes * 60) details["duration"] = "%s:%s" % (minutes, str(seconds).zfill(2)) # do not retrieve artwork from item as there's no way to write it back # and it will already be retrieved if user enables to get the artwork from the song path return details
def artist_info(self, artist_id): """get artist metadata by musicbrainz id""" details = {"art": {}} params = {'method': 'artist.getInfo', 'mbid': artist_id} data = self.get_data(params) if data and data.get("artist"): lfmdetails = data["artist"] #if lfmdetails.get("image"): # for image in lfmdetails["image"]: # if image["size"] in ["mega", "extralarge"] and xbmcvfs.exists(image["#text"]): # details["art"]["thumbs"] = [image["#text"]] # details["art"]["thumb"] = image["#text"] if lfmdetails.get("bio") and lfmdetails["bio"].get("content"): details["plot"] = strip_newlines( lfmdetails["bio"]["content"].split(' <a href')[0]) if lfmdetails.get("stats") and lfmdetails["stats"].get( "listeners"): details["lastfm.listeners"] = lfmdetails["stats"]["listeners"] if lfmdetails.get("stats") and lfmdetails["stats"].get( "playcount"): details["lastfm.playcount"] = lfmdetails["stats"]["playcount"] if lfmdetails.get("tags") and lfmdetails["tags"].get("tag"): details["lastfm.tags"] = [ tag["name"] for tag in lfmdetails["tags"]["tag"] ] if lfmdetails.get("similar") and lfmdetails["similar"].get( "artist"): similar_artists = [] for count, item in enumerate(lfmdetails["similar"]["artist"]): similar_artists.append(item["name"]) details["lastfm.similarartists.%s.name" % count] = item["name"] #if item.get("image"): # for image in item["image"]: # if image["size"] in ["mega", "extralarge", "large"] and xbmcvfs.exists(image["#text"]): # details["lastfm.similarartists.%s.thumb" % count] = image["#text"] # break details["lastfm.similarartists"] = similar_artists return details
def album_info(self, album_id): '''get album metadata by musicbrainz id''' details = {"art": {}} params = {'method': 'album.getInfo', 'mbid': album_id} data = self.get_data(params) if data and data.get("album"): if isinstance(data["album"], list): lfmdetails = data["album"][0] else: lfmdetails = data["album"] if lfmdetails.get("image"): for image in lfmdetails["image"]: if image["size"] in ["mega", "extralarge"] and xbmcvfs.exists(image["#text"]): details["art"]["thumbs"] = [image["#text"]] details["art"]["thumb"] = image["#text"] if lfmdetails.get("listeners"): details["lastfm.listeners"] = lfmdetails["listeners"] if lfmdetails.get("playcount"): details["lastfm.playcount"] = lfmdetails["playcount"] if lfmdetails.get("tags") and lfmdetails["tags"].get("tag"): details["lastfm.tags"] = [tag["name"] for tag in lfmdetails["tags"]["tag"]] if lfmdetails.get("wiki"): details["plot"] = strip_newlines(lfmdetails["wiki"].get("content", "").split(' <a')[0])
def get_artist_kodi_metadata(self, artist): """get artist details from the kodi database""" details = {} filters = [{"operator": "is", "field": "artist", "value": artist}] result = self._mutils.kodidb.artists(filters=filters, limits=(0, 1)) if result: details = result[0] details["title"] = details["artist"] details["plot"] = strip_newlines(details["description"]) if details["musicbrainzartistid"] and isinstance( details["musicbrainzartistid"], list): details["musicbrainzartistid"] = details[ "musicbrainzartistid"][0] filters = [{"artistid": details["artistid"]}] artist_albums = self._mutils.kodidb.albums(filters=filters) details["albums"] = [] details["albumsartist"] = [] details["albumscompilations"] = [] details["tracks"] = [] if sys.version_info.major == 3: bullet = "•" else: bullet = "•".decode("utf-8") details["albums.formatted"] = u"" details["tracks.formatted"] = u"" details["tracks.formatted2"] = u"" details["albumsartist.formatted"] = u"" details["albumscompilations.formatted"] = u"" # enumerate albums for this artist for artist_album in artist_albums: details["albums"].append(artist_album["label"]) details["albums.formatted"] += u"%s %s [CR]" % ( bullet, artist_album["label"]) if artist in artist_album["displayartist"]: details["albumsartist"].append(artist_album["label"]) details["albumsartist.formatted"] += u"%s %s [CR]" % ( bullet, artist_album["label"]) else: details["albumscompilations"].append(artist_album["label"]) details[ "albumscompilations.formatted"] += u"%s %s [CR]" % ( bullet, artist_album["label"]) # enumerate songs for this album filters = [{"albumid": artist_album["albumid"]}] album_tracks = self._mutils.kodidb.songs(filters=filters) if album_tracks: # retrieve path on disk by selecting one song for this artist if not details.get("ref_track") and not len( artist_album["artistid"]) > 1: song_path = album_tracks[0]["file"] details["diskpath"] = self.get_artistpath_by_songpath( song_path, artist) details["ref_album"] = artist_album["title"] details["ref_track"] = album_tracks[0]["title"] for album_track in album_tracks: details["tracks"].append(album_track["title"]) tr_title = album_track["title"] if album_track["track"]: tr_title = "%s. %s" % (album_track["track"], album_track["title"]) details["tracks.formatted"] += u"%s %s [CR]" % ( bullet, tr_title) duration = album_track["duration"] total_seconds = int(duration) minutes = total_seconds / 60 seconds = total_seconds - (minutes * 60) duration = "%s:%s" % (minutes, str(seconds).zfill(2)) details["tracks.formatted2"] += u"%s %s (%s)[CR]" % ( bullet, tr_title, duration) details["albumcount"] = len(details["albums"]) details["albumsartistcount"] = len(details["albumsartist"]) details["albumscompilationscount"] = len( details["albumscompilations"]) # do not retrieve artwork from item as there's no way to write it back # and it will already be retrieved if user enables to get the artwork from the song path return details
def get_artist_kodi_metadata(self, artist): '''get artist details from the kodi database''' details = {} filters = [{"operator": "is", "field": "artist", "value": artist}] result = self.metadatautils.kodidb.artists(filters=filters, limits=(0, 1)) if result: details = result[0] details["title"] = details["artist"] details["plot"] = strip_newlines(details["description"]) if details["musicbrainzartistid"] and isinstance(details["musicbrainzartistid"], list): details["musicbrainzartistid"] = details["musicbrainzartistid"][0] filters = [{"artistid": details["artistid"]}] artist_albums = self.metadatautils.kodidb.albums(filters=filters) details["albums"] = [] details["albumsartist"] = [] details["albumscompilations"] = [] details["tracks"] = [] bullet = "•".decode("utf-8") details["albums.formatted"] = u"" details["tracks.formatted"] = u"" details["tracks.formatted2"] = u"" details["albumsartist.formatted"] = u"" details["albumscompilations.formatted"] = u"" # enumerate albums for this artist for artist_album in artist_albums: details["albums"].append(artist_album["label"]) details["albums.formatted"] += u"%s %s [CR]" % (bullet, artist_album["label"]) if artist in artist_album["displayartist"]: details["albumsartist"].append(artist_album["label"]) details["albumsartist.formatted"] += u"%s %s [CR]" % (bullet, artist_album["label"]) else: details["albumscompilations"].append(artist_album["label"]) details["albumscompilations.formatted"] += u"%s %s [CR]" % (bullet, artist_album["label"]) # enumerate songs for this album filters = [{"albumid": artist_album["albumid"]}] album_tracks = self.metadatautils.kodidb.songs(filters=filters) if album_tracks: # retrieve path on disk by selecting one song for this artist if not details.get("ref_track") and not len(artist_album["artistid"]) > 1: song_path = album_tracks[0]["file"] details["diskpath"] = self.get_artistpath_by_songpath(song_path, artist) details["ref_album"] = artist_album["title"] details["ref_track"] = album_tracks[0]["title"] for album_track in album_tracks: details["tracks"].append(album_track["title"]) tr_title = album_track["title"] if album_track["track"]: tr_title = "%s. %s" % (album_track["track"], album_track["title"]) details["tracks.formatted"] += u"%s %s [CR]" % (bullet, tr_title) duration = album_track["duration"] total_seconds = int(duration) minutes = total_seconds / 60 seconds = total_seconds - (minutes * 60) duration = "%s:%s" % (minutes, str(seconds).zfill(2)) details["tracks.formatted2"] += u"%s %s (%s)[CR]" % (bullet, tr_title, duration) details["albumcount"] = len(details["albums"]) details["albumsartistcount"] = len(details["albumsartist"]) details["albumscompilationscount"] = len(details["albumscompilations"]) # do not retrieve artwork from item as there's no way to write it back # and it will already be retrieved if user enables to get the artwork from the song path return details
def artist_info(self, artist): """get artist metadata by artist""" details = {"art": {}} data = self.get_data("/search.php", {'s': artist}) if data and data.get("artists"): adbdetails = data["artists"][0] if adbdetails.get("strArtistBanner") and xbmcvfs.exists( adbdetails.get("strArtistBanner")): details["art"]["banner"] = adbdetails.get("strArtistBanner") details["art"]["banners"] = [adbdetails.get("strArtistBanner")] details["art"]["fanarts"] = [] if adbdetails.get("strArtistFanart") and xbmcvfs.exists( adbdetails.get("strArtistFanart")): details["art"]["fanart"] = adbdetails.get("strArtistFanart") details["art"]["fanarts"].append( adbdetails.get("strArtistFanart")) if adbdetails.get("strArtistFanart2") and xbmcvfs.exists( adbdetails.get("strArtistFanart2")): details["art"]["fanarts"].append( adbdetails.get("strArtistFanart2")) if adbdetails.get("strArtistFanart3") and xbmcvfs.exists( adbdetails.get("strArtistFanart3")): details["art"]["fanarts"].append( adbdetails.get("strArtistFanart3")) if adbdetails.get("strArtistWideThumb") and xbmcvfs.exists( adbdetails.get("strArtistWideThumb")): details["art"]["landscape"] = adbdetails.get( "strArtistWideThumb") if adbdetails.get("strArtistLogo") and xbmcvfs.exists( adbdetails.get("strArtistLogo")): details["art"]["clearlogo"] = adbdetails.get("strArtistLogo") details["art"]["clearlogos"] = [ adbdetails.get("strArtistLogo") ] if adbdetails.get("strArtistClearart") and xbmcvfs.exists( adbdetails.get("strArtistClearart")): details["art"]["clearart"] = adbdetails.get( "strArtistClearart") details["art"]["cleararts"] = [ adbdetails.get("strArtistClearart") ] if adbdetails.get("strArtistThumb") and xbmcvfs.exists( adbdetails.get("strArtistThumb")): details["art"]["thumb"] = adbdetails["strArtistThumb"] details["art"]["thumbs"] = [adbdetails["strArtistThumb"]] if adbdetails.get("strBiography" + KODI_LANGUAGE.upper()): details["plot"] = adbdetails["strBiography" + KODI_LANGUAGE.upper()] if adbdetails.get("strBiographyEN") and not details.get("plot"): details["plot"] = adbdetails.get("strBiographyEN") if details.get("plot"): details["plot"] = strip_newlines(details["plot"]) if adbdetails.get("strArtistAlternate"): details["alternamename"] = adbdetails["strArtistAlternate"] if adbdetails.get("intFormedYear"): details["formed"] = adbdetails["intFormedYear"] if adbdetails.get("intBornYear"): details["born"] = adbdetails["intBornYear"] if adbdetails.get("intDiedYear"): details["died"] = adbdetails["intDiedYear"] if adbdetails.get("strDisbanded"): details["disbanded"] = adbdetails["strDisbanded"] if adbdetails.get("strStyle"): details["style"] = adbdetails["strStyle"].split("/") if adbdetails.get("strGenre"): details["genre"] = adbdetails["strGenre"].split("/") if adbdetails.get("strMood"): details["mood"] = adbdetails["strMood"].split("/") if adbdetails.get("strWebsite"): details["homepage"] = adbdetails["strWebsite"] if adbdetails.get("strFacebook"): details["facebook"] = adbdetails["strFacebook"] if adbdetails.get("strTwitter"): details["twitter"] = adbdetails["strTwitter"] if adbdetails.get("strGender"): details["gender"] = adbdetails["strGender"] if adbdetails.get("intMembers"): details["members"] = adbdetails["intMembers"] if adbdetails.get("strCountry"): details["country"] = adbdetails["strCountry"].split(", ") return details
def album_info(self, artist, album): """get album metadata by name""" details = {"art": {}} data = self.get_data("/searchalbum.php", {'s': artist, 'a': album}) if data and data.get("album"): adbdetails = data["album"][0] if adbdetails.get("strAlbumThumb") and xbmcvfs.exists( adbdetails.get("strAlbumThumb")): details["art"]["thumb"] = adbdetails.get("strAlbumThumb") details["art"]["thumbs"] = [adbdetails.get("strAlbumThumb")] if adbdetails.get("strAlbumCDart") and xbmcvfs.exists( adbdetails.get("strAlbumCDart")): details["art"]["discart"] = adbdetails.get("strAlbumCDart") details["art"]["discarts"] = [adbdetails.get("strAlbumCDart")] if adbdetails.get("strAlbumSpine") and xbmcvfs.exists( adbdetails.get("strAlbumSpine")): details["art"]["spine"] = adbdetails.get("strAlbumSpine") if adbdetails.get("strAlbumThumbBack") and xbmcvfs.exists( adbdetails.get("strAlbumThumbBack")): details["art"]["thumbback"] = adbdetails.get( "strAlbumThumbBack") if adbdetails.get("strAlbum3DCase") and xbmcvfs.exists( adbdetails.get("strAlbum3DCase")): details["art"]["album3Dcase"] = adbdetails.get( "strAlbum3DCase") if adbdetails.get("strAlbum3DFlat") and xbmcvfs.exists( adbdetails.get("strAlbum3DFlat")): details["art"]["album3Dflat"] = adbdetails.get( "strAlbum3DFlat") if adbdetails.get("strAlbum3DFace") and xbmcvfs.exists( adbdetails.get("strAlbum3DFace")): details["art"]["album3Dface"] = adbdetails.get( "strAlbum3DFace") if adbdetails.get("strAlbum3DThumb") and xbmcvfs.exists( adbdetails.get("strAlbum3DThumb")): details["art"]["album3Dthumb"] = adbdetails.get( "strAlbum3DThumb") if adbdetails.get("strDescription%s" % KODI_LANGUAGE.upper()): details["plot"] = adbdetails.get("strDescription%s" % KODI_LANGUAGE.upper()) if not details.get("plot") and adbdetails.get("strDescriptionEN"): details["plot"] = adbdetails.get("strDescriptionEN") if details.get("plot"): details["plot"] = strip_newlines(details["plot"]) if adbdetails.get("strGenre"): details["genre"] = adbdetails["strGenre"].split("/") if adbdetails.get("strStyle"): details["style"] = adbdetails["strStyle"].split("/") if adbdetails.get("strMood"): details["mood"] = adbdetails["strMood"].split("/") if adbdetails.get("intYearReleased"): details["year"] = adbdetails["intYearReleased"] if adbdetails.get("intScore"): details["rating"] = adbdetails["intScore"] if adbdetails.get("strAlbum"): details["title"] = adbdetails["strAlbum"] if adbdetails.get("strLabel"): details["albumlabel"] = adbdetails["strLabel"] if adbdetails.get("idAlbum"): details["idalbum"] = adbdetails["idAlbum"] if adbdetails.get("idAlbum"): idalbum = adbdetails.get("idAlbum", "") data = self.get_data("/track.php", {'m': idalbum}) adbtrackdetails = data["track"] if data.get("track"): tracks = [] for count, item in enumerate(adbtrackdetails): tracks.append(item["strTrack"]) details["tracks.formatted.%s" % count] = item[ "intTrackNumber"] + "." + item["strTrack"] details["tracks.clean.formatted.%s" % count] = item["strTrack"] details["tracks.formatted"] = "[CR]".join(tracks) return details