Python源码示例:xbmcplugin.setProperty()
示例1
def get_authkey(self):
'''get authentication key'''
auth_token = None
count = 10
while not auth_token and count: # wait max 5 seconds for the token
auth_token = self.win.getProperty("spotify-token").decode("utf-8")
count -= 1
if not auth_token:
xbmc.sleep(500)
if not auth_token:
if self.win.getProperty("spotify.supportsplayback"):
if self.win.getProperty("spotify-discovery") == "disabled":
msg = self.addon.getLocalizedString(11050)
else:
msg = self.addon.getLocalizedString(11065)
dialog = xbmcgui.Dialog()
header = self.addon.getAddonInfo("name")
dialog.ok(header, msg)
del dialog
else:
# login with browser
request_token_web(force=True)
self.win.setProperty("spotify-cmd", "__LOGOUT__")
return auth_token
示例2
def browse_album(self):
xbmcplugin.setContent(self.addon_handle, "songs")
album = self.sp.album(self.albumid, market=self.usercountry)
xbmcplugin.setProperty(self.addon_handle, 'FolderName', album["name"])
tracks = self.get_album_tracks(album)
if album.get("album_type") == "compilation":
self.add_track_listitems(tracks, True)
else:
self.add_track_listitems(tracks)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_UNSORTED)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_TRACKNUM)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_TITLE)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_VIDEO_YEAR)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_SONG_RATING)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_ARTIST)
xbmcplugin.endOfDirectory(handle=self.addon_handle)
if self.defaultview_songs:
xbmc.executebuiltin('Container.SetViewMode(%s)' % self.defaultview_songs)
示例3
def search_artists(self):
xbmcplugin.setContent(self.addon_handle, "artists")
xbmcplugin.setProperty(self.addon_handle, 'FolderName', xbmc.getLocalizedString(133))
result = self.sp.search(
q="artist:%s" %
self.artistid,
type='artist',
limit=self.limit,
offset=self.offset,
market=self.usercountry)
artists = self.prepare_artist_listitems(result['artists']['items'])
self.add_artist_listitems(artists)
self.add_next_button(result['artists']['total'])
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_UNSORTED)
xbmcplugin.endOfDirectory(handle=self.addon_handle)
if self.defaultview_artists:
xbmc.executebuiltin('Container.SetViewMode(%s)' % self.defaultview_artists)
示例4
def search_tracks(self):
xbmcplugin.setContent(self.addon_handle, "songs")
xbmcplugin.setProperty(self.addon_handle, 'FolderName', xbmc.getLocalizedString(134))
result = self.sp.search(
q="track:%s" %
self.trackid,
type='track',
limit=self.limit,
offset=self.offset,
market=self.usercountry)
tracks = self.prepare_track_listitems(tracks=result["tracks"]["items"])
self.add_track_listitems(tracks, True)
self.add_next_button(result['tracks']['total'])
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_UNSORTED)
xbmcplugin.endOfDirectory(handle=self.addon_handle)
if self.defaultview_songs:
xbmc.executebuiltin('Container.SetViewMode(%s)' % self.defaultview_songs)
示例5
def search_albums(self):
xbmcplugin.setContent(self.addon_handle, "albums")
xbmcplugin.setProperty(self.addon_handle, 'FolderName', xbmc.getLocalizedString(132))
result = self.sp.search(
q="album:%s" %
self.albumid,
type='album',
limit=self.limit,
offset=self.offset,
market=self.usercountry)
albumids = []
for album in result['albums']['items']:
albumids.append(album["id"])
albums = self.prepare_album_listitems(albumids)
self.add_album_listitems(albums, True)
self.add_next_button(result['albums']['total'])
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_UNSORTED)
xbmcplugin.endOfDirectory(handle=self.addon_handle)
if self.defaultview_albums:
xbmc.executebuiltin('Container.SetViewMode(%s)' % self.defaultview_albums)
示例6
def search_playlists(self):
xbmcplugin.setContent(self.addon_handle, "files")
result = self.sp.search(
q=self.playlistid,
type='playlist',
limit=self.limit,
offset=self.offset,
market=self.usercountry)
log_msg(result)
xbmcplugin.setProperty(self.addon_handle, 'FolderName', xbmc.getLocalizedString(136))
playlists = self.prepare_playlist_listitems(result['playlists']['items'])
self.add_playlist_listitems(playlists)
self.add_next_button(result['playlists']['total'])
xbmcplugin.endOfDirectory(handle=self.addon_handle)
if self.defaultview_playlists:
xbmc.executebuiltin('Container.SetViewMode(%s)' % self.defaultview_playlists)
示例7
def precache_library(self):
if not self.win.getProperty("Spotify.PreCachedItems"):
monitor = xbmc.Monitor()
self.win.setProperty("Spotify.PreCachedItems", "busy")
userplaylists = self.get_user_playlists(self.userid)
for playlist in userplaylists:
self.get_playlist_details(playlist['owner']['id'], playlist["id"])
if monitor.abortRequested():
return
self.get_savedalbums()
if monitor.abortRequested():
return
self.get_savedartists()
if monitor.abortRequested():
return
self.get_saved_tracks()
del monitor
self.win.setProperty("Spotify.PreCachedItems", "done")
示例8
def finish_container(self):
if self.params.get('random'):
return
for k, v in self.params.items():
if not k or not v:
continue
try:
xbmcplugin.setProperty(self.handle, u'Param.{}'.format(k), u'{}'.format(v)) # Set params to container properties
except Exception as exc:
utils.kodi_log(u'Error: {}\nUnable to set Param.{} to {}'.format(exc, k, v), 1)
if self.item_dbtype in ['movie', 'tvshow', 'episode']:
xbmcplugin.addSortMethod(self.handle, xbmcplugin.SORT_METHOD_UNSORTED)
xbmcplugin.addSortMethod(self.handle, xbmcplugin.SORT_METHOD_EPISODE) if self.item_dbtype == 'episode' else None
xbmcplugin.addSortMethod(self.handle, xbmcplugin.SORT_METHOD_TITLE_IGNORE_THE)
xbmcplugin.addSortMethod(self.handle, xbmcplugin.SORT_METHOD_LASTPLAYED)
xbmcplugin.addSortMethod(self.handle, xbmcplugin.SORT_METHOD_PLAYCOUNT)
xbmcplugin.endOfDirectory(self.handle, updateListing=self.updatelisting)
示例9
def refresh_connected_device(self):
'''set reconnect flag for main_loop'''
if self.addon.getSetting("playback_device") == "connect":
self.win.setProperty("spotify-cmd", "__RECONNECT__")
示例10
def logoff_user(self):
''' logoff user '''
dialog = xbmcgui.Dialog()
if dialog.yesno(self.addon.getLocalizedString(11066), self.addon.getLocalizedString(11067)):
xbmcvfs.delete("special://profile/addon_data/%s/credentials.json" % ADDON_ID)
xbmcvfs.delete("special://profile/addon_data/%s/spotipy.cache" % ADDON_ID)
self.win.clearProperty("spotify-token")
self.win.clearProperty("spotify-username")
self.win.clearProperty("spotify-country")
self.addon.setSetting("username", "")
self.addon.setSetting("password", "")
self.win.setProperty("spotify-cmd", "__LOGOUT__")
xbmc.executebuiltin("Container.Refresh")
del dialog
示例11
def switch_user_multi(self):
'''switch the currently logged in user'''
usernames = []
count = 1
while True:
username = self.addon.getSetting("username%s" % count).decode("utf-8")
count += 1
if not username:
break
else:
display_name = ""
try:
display_name = self.sp.user(username)["display_name"]
except Exception:
pass
if not display_name:
display_name = username
usernames.append(display_name)
dialog = xbmcgui.Dialog()
ret = dialog.select(self.addon.getLocalizedString(11048), usernames)
del dialog
if ret != -1:
ret += 1
new_user = self.addon.getSetting("username%s" % ret)
new_pass = self.addon.getSetting("password%s" % ret)
self.addon.setSetting("username", new_user)
self.addon.setSetting("password", new_pass)
xbmcvfs.delete("special://profile/addon_data/%s/credentials.json" % ADDON_ID)
self.win.setProperty("spotify-cmd", "__LOGOUT__")
self.win.clearProperty("spotify-token")
self.win.clearProperty("spotify-username")
self.win.clearProperty("spotify-country")
xbmc.executebuiltin("Container.Refresh")
示例12
def browse_main(self):
# main listing
xbmcplugin.setContent(self.addon_handle, "files")
items = []
items.append(
(self.addon.getLocalizedString(11013),
"plugin://plugin.audio.spotify/?action=browse_main_library",
"DefaultMusicCompilations.png", True))
items.append(
(self.addon.getLocalizedString(11014),
"plugin://plugin.audio.spotify/?action=browse_main_explore",
"DefaultMusicGenres.png", True))
items.append(
(xbmc.getLocalizedString(137),
"plugin://plugin.audio.spotify/?action=search",
"DefaultMusicSearch.png", True))
items.append(
("%s: %s" % (self.addon.getLocalizedString(11039), self.playername),
"plugin://plugin.audio.spotify/?action=browse_playback_devices",
"DefaultMusicPlugins.png", True))
cur_user_label = self.sp.me()["display_name"]
if not cur_user_label:
cur_user_label = self.sp.me()["id"]
label = "%s: %s" % (self.addon.getLocalizedString(11047), cur_user_label)
items.append(
(label,
"plugin://plugin.audio.spotify/?action=switch_user",
"DefaultActor.png", False))
for item in items:
li = xbmcgui.ListItem(
item[0],
path=item[1],
iconImage=item[2]
)
li.setProperty('IsPlayable', 'false')
li.setArt({"fanart": "special://home/addons/plugin.audio.spotify/fanart.jpg"})
li.addContextMenuItems([], True)
xbmcplugin.addDirectoryItem(handle=self.addon_handle, url=item[1], listitem=li, isFolder=item[3])
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_UNSORTED)
xbmcplugin.endOfDirectory(handle=self.addon_handle)
self.refresh_connected_device()
示例13
def browse_main_explore(self):
# explore nodes
xbmcplugin.setContent(self.addon_handle, "files")
xbmcplugin.setProperty(self.addon_handle, 'FolderName', self.addon.getLocalizedString(11014))
items = []
items.append(
(self.addon.getLocalizedString(11015),
"plugin://plugin.audio.spotify/?action=browse_playlists&applyfilter=featured",
"DefaultMusicPlaylists.png"))
items.append(
(self.addon.getLocalizedString(11016),
"plugin://plugin.audio.spotify/?action=browse_newreleases",
"DefaultMusicAlbums.png"))
# add categories
items += self.get_explore_categories()
for item in items:
li = xbmcgui.ListItem(
item[0],
path=item[1],
iconImage=item[2]
)
li.setProperty('do_not_analyze', 'true')
li.setProperty('IsPlayable', 'false')
li.setArt({"fanart": "special://home/addons/plugin.audio.spotify/fanart.jpg"})
li.addContextMenuItems([], True)
xbmcplugin.addDirectoryItem(handle=self.addon_handle, url=item[1], listitem=li, isFolder=True)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_UNSORTED)
xbmcplugin.endOfDirectory(handle=self.addon_handle)
示例14
def artist_toptracks(self):
xbmcplugin.setContent(self.addon_handle, "songs")
xbmcplugin.setProperty(self.addon_handle, 'FolderName', self.addon.getLocalizedString(11011))
tracks = self.sp.artist_top_tracks(self.artistid, country=self.usercountry)
tracks = self.prepare_track_listitems(tracks=tracks["tracks"])
self.add_track_listitems(tracks)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_UNSORTED)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_TRACKNUM)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_TITLE)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_VIDEO_YEAR)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_SONG_RATING)
xbmcplugin.endOfDirectory(handle=self.addon_handle)
if self.defaultview_songs:
xbmc.executebuiltin('Container.SetViewMode(%s)' % self.defaultview_songs)
示例15
def related_artists(self):
xbmcplugin.setContent(self.addon_handle, "artists")
xbmcplugin.setProperty(self.addon_handle, 'FolderName', self.addon.getLocalizedString(11012))
cachestr = "spotify.relatedartists.%s" % self.artistid
checksum = self.cache_checksum()
artists = self.cache.get(cachestr, checksum=checksum)
if not artists:
artists = self.sp.artist_related_artists(self.artistid)
artists = self.prepare_artist_listitems(artists['artists'])
self.cache.set(cachestr, artists, checksum=checksum)
self.add_artist_listitems(artists)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_UNSORTED)
xbmcplugin.endOfDirectory(handle=self.addon_handle)
if self.defaultview_artists:
xbmc.executebuiltin('Container.SetViewMode(%s)' % self.defaultview_artists)
示例16
def browse_category(self):
xbmcplugin.setContent(self.addon_handle, "files")
playlists = self.get_category(self.filter)
self.add_playlist_listitems(playlists['playlists']['items'])
xbmcplugin.setProperty(self.addon_handle, 'FolderName', playlists['category'])
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_UNSORTED)
xbmcplugin.endOfDirectory(handle=self.addon_handle)
if self.defaultview_category:
xbmc.executebuiltin('Container.SetViewMode(%s)' % self.defaultview_category)
示例17
def browse_playlists(self):
xbmcplugin.setContent(self.addon_handle, "files")
if self.filter == "featured":
playlists = self.get_featured_playlists()
xbmcplugin.setProperty(self.addon_handle, 'FolderName', playlists['message'])
playlists = playlists['playlists']['items']
else:
xbmcplugin.setProperty(self.addon_handle, 'FolderName', xbmc.getLocalizedString(136))
playlists = self.get_user_playlists(self.ownerid)
self.add_playlist_listitems(playlists)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_UNSORTED)
xbmcplugin.endOfDirectory(handle=self.addon_handle)
if self.defaultview_playlists:
xbmc.executebuiltin('Container.SetViewMode(%s)' % self.defaultview_playlists)
示例18
def browse_newreleases(self):
xbmcplugin.setContent(self.addon_handle, "albums")
xbmcplugin.setProperty(self.addon_handle, 'FolderName', self.addon.getLocalizedString(11005))
albums = self.get_newreleases()
self.add_album_listitems(albums)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_UNSORTED)
xbmcplugin.endOfDirectory(handle=self.addon_handle)
if self.defaultview_albums:
xbmc.executebuiltin('Container.SetViewMode(%s)' % self.defaultview_albums)
示例19
def add_album_listitems(self, albums, append_artist_to_label=False):
# process listing
for item in albums:
if append_artist_to_label:
label = "%s - %s" % (item["artist"], item['name'])
else:
label = item['name']
if KODI_VERSION > 17:
li = xbmcgui.ListItem(label, path=item['url'], offscreen=True)
else:
li = xbmcgui.ListItem(label, path=item['url'])
infolabels = {
"title": item['name'],
"genre": item["genre"],
"year": item["year"],
"album": item["name"],
"artist": item["artist"],
"rating": item["rating"]
}
li.setInfo(type="Music", infoLabels=infolabels)
li.setArt({"thumb": item['thumb']})
li.setProperty('do_not_analyze', 'true')
li.setProperty('IsPlayable', 'false')
li.addContextMenuItems(item["contextitems"], True)
xbmcplugin.addDirectoryItem(handle=self.addon_handle, url=item["url"], listitem=li, isFolder=True)
示例20
def add_playlist_listitems(self, playlists):
for item in playlists:
if KODI_VERSION > 17:
li = xbmcgui.ListItem(item["name"], path=item['url'], offscreen=True)
else:
li = xbmcgui.ListItem(item["name"], path=item['url'])
li.setProperty('do_not_analyze', 'true')
li.setProperty('IsPlayable', 'false')
li.addContextMenuItems(item["contextitems"], True)
li.setArt({"fanart": "special://home/addons/plugin.audio.spotify/fanart.jpg", "thumb": item['thumb']})
xbmcplugin.addDirectoryItem(handle=self.addon_handle, url=item["url"], listitem=li, isFolder=True)
示例21
def browse_artistalbums(self):
xbmcplugin.setContent(self.addon_handle, "albums")
xbmcplugin.setProperty(self.addon_handle, 'FolderName', xbmc.getLocalizedString(132))
artist = self.sp.artist(self.artistid)
artistalbums = self.sp.artist_albums(
self.artistid,
limit=50,
offset=0,
market=self.usercountry,
album_type='album,single,compilation')
count = len(artistalbums['items'])
albumids = []
while artistalbums['total'] > count:
artistalbums['items'] += self.sp.artist_albums(self.artistid,
limit=50,
offset=count,
market=self.usercountry,
album_type='album,single,compilation')['items']
count += 50
for album in artistalbums['items']:
albumids.append(album["id"])
albums = self.prepare_album_listitems(albumids)
self.add_album_listitems(albums)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_VIDEO_YEAR)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_ALBUM_IGNORE_THE)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_SONG_RATING)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_UNSORTED)
xbmcplugin.endOfDirectory(handle=self.addon_handle)
if self.defaultview_albums:
xbmc.executebuiltin('Container.SetViewMode(%s)' % self.defaultview_albums)
示例22
def browse_savedalbums(self):
xbmcplugin.setContent(self.addon_handle, "albums")
xbmcplugin.setProperty(self.addon_handle, 'FolderName', xbmc.getLocalizedString(132))
albums = self.get_savedalbums()
self.add_album_listitems(albums, True)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_ALBUM_IGNORE_THE)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_VIDEO_YEAR)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_SONG_RATING)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_UNSORTED)
xbmcplugin.endOfDirectory(handle=self.addon_handle)
xbmcplugin.setContent(self.addon_handle, "albums")
if self.defaultview_albums:
xbmc.executebuiltin('Container.SetViewMode(%s)' % self.defaultview_albums)
示例23
def browse_savedtracks(self):
xbmcplugin.setContent(self.addon_handle, "songs")
xbmcplugin.setProperty(self.addon_handle, 'FolderName', xbmc.getLocalizedString(134))
tracks = self.get_saved_tracks()
self.add_track_listitems(tracks, True)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_UNSORTED)
xbmcplugin.endOfDirectory(handle=self.addon_handle)
if self.defaultview_songs:
xbmc.executebuiltin('Container.SetViewMode(%s)' % self.defaultview_songs)
示例24
def browse_savedartists(self):
xbmcplugin.setContent(self.addon_handle, "artists")
xbmcplugin.setProperty(self.addon_handle, 'FolderName', xbmc.getLocalizedString(133))
artists = self.get_savedartists()
self.add_artist_listitems(artists)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_TITLE)
xbmcplugin.endOfDirectory(handle=self.addon_handle)
if self.defaultview_artists:
xbmc.executebuiltin('Container.SetViewMode(%s)' % self.defaultview_artists)
示例25
def play_islocked(self, lock=None):
for k, v in self.params.items():
lock = '{}.{}={}'.format(lock, k, v) if lock else '{}={}'.format(k, v)
cur_lock = xbmcgui.Window(10000).getProperty('TMDbHelper.Player.ResolvedUrl')
if cur_lock == lock:
utils.kodi_log(u'Container -- Play IsLocked:\n{0}'.format(self.params), 1)
return cur_lock
xbmcgui.Window(10000).setProperty('TMDbHelper.Player.ResolvedUrl', lock)
示例26
def set_property(key, value, window_id=10000):
"""Set a Window property"""
from xbmcgui import Window
return Window(window_id).setProperty(key, from_unicode(value))
示例27
def addDir(name, url, mode, iconimage, fanart, description):
Lang = lang
if mode == 6:
u = '%s?url=%s&mode=%s&name=%s&iconimage=%s&description=%s' % \
(sys.argv[0], urllib.quote_plus(url), str(mode), urllib.unquote(name),
urllib.quote_plus(iconimage), urllib.quote_plus(description.encode('utf-8', 'ignore')))
else:
u = sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)+\
"&iconimage="+urllib.quote_plus(iconimage)+"&description="+urllib.quote_plus(description)
ok = True
liz = xbmcgui.ListItem(name, iconImage="DefaultFolder.png", thumbnailImage=iconimage)
liz.setInfo(type="Video", infoLabels={"Title": name, "Plot": description})
liz.setProperty('fanart_image', fanart)
cm = []
cm.append((Lang(32020).encode('utf-8'), "RunPlugin(%s?mode=17)" % init.sysaddon))
cm.append((Lang(32021).encode('utf-8'), "RunPlugin(%s?mode=9)" % init.sysaddon))
if mode == 100:
name = re.sub('\[.+?\]', '', name)
liz.setProperty("IsPlayable", "true")
cm.append(('GRecoTM Pair Tool', 'RunAddon(script.grecotm.pair)'))
downloads = setting('downloads') == 'true' and not\
(setting('movie.download.path') == '' or setting('tv.download.path') == '')
if downloads:
_url = 'RunPlugin({0}?mode=41&name={1}&iconimage={2}&url={3})'.format(init.sysaddon,
urllib.quote_plus(name),
urllib.quote_plus(iconimage),
urllib.quote_plus(url))
cm.append((lang(32040).encode('utf-8'), _url))
liz.addContextMenuItems(cm)
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u, listitem=liz, isFolder=False)
elif mode == 9 or mode == 17 or mode == 'bug' or mode == 29:
ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u, listitem=liz, isFolder=False)
elif mode == 26:
cm.append((Lang(32039).encode('utf-8'), "RunPlugin(%s?mode=%s&url=%s)" % (init.sysaddon, 28, url)))
liz.addContextMenuItems(cm)
ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u, listitem=liz, isFolder=True)
else:
liz.addContextMenuItems(cm)
ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u, listitem=liz, isFolder=True)
return ok
示例28
def browse_main_library(self):
# library nodes
xbmcplugin.setContent(self.addon_handle, "files")
xbmcplugin.setProperty(self.addon_handle, 'FolderName', self.addon.getLocalizedString(11013))
items = []
items.append(
(xbmc.getLocalizedString(136),
"plugin://plugin.audio.spotify/?action=browse_playlists&ownerid=%s" %
(self.userid),
"DefaultMusicPlaylists.png"))
items.append(
(xbmc.getLocalizedString(132),
"plugin://plugin.audio.spotify/?action=browse_savedalbums",
"DefaultMusicAlbums.png"))
items.append(
(xbmc.getLocalizedString(134),
"plugin://plugin.audio.spotify/?action=browse_savedtracks",
"DefaultMusicSongs.png"))
items.append(
(xbmc.getLocalizedString(133),
"plugin://plugin.audio.spotify/?action=browse_savedartists",
"DefaultMusicArtists.png"))
items.append(
(self.addon.getLocalizedString(11023),
"plugin://plugin.audio.spotify/?action=browse_topartists",
"DefaultMusicArtists.png"))
items.append(
(self.addon.getLocalizedString(11024),
"plugin://plugin.audio.spotify/?action=browse_toptracks",
"DefaultMusicSongs.png"))
for item in items:
li = xbmcgui.ListItem(
item[0],
path=item[1],
iconImage=item[2]
)
li.setProperty('do_not_analyze', 'true')
li.setProperty('IsPlayable', 'false')
li.setArt({"fanart": "special://home/addons/plugin.audio.spotify/fanart.jpg"})
li.addContextMenuItems([], True)
xbmcplugin.addDirectoryItem(handle=self.addon_handle, url=item[1], listitem=li, isFolder=True)
xbmcplugin.addSortMethod(self.addon_handle, xbmcplugin.SORT_METHOD_UNSORTED)
xbmcplugin.endOfDirectory(handle=self.addon_handle)
示例29
def add_track_listitems(self, tracks, append_artist_to_label=False):
list_items = []
for count, track in enumerate(tracks):
if append_artist_to_label:
label = "%s - %s" % (track["artist"], track['name'])
else:
label = track['name']
duration = track["duration_ms"] / 1000
if KODI_VERSION > 17:
li = xbmcgui.ListItem(label, offscreen=True)
else:
li = xbmcgui.ListItem(label)
if self.local_playback and self.connect_id:
# local playback by using proxy on a remote machine
url = "http://%s:%s/track/%s/%s" % (self.connect_id, PROXY_PORT, track['id'], duration)
li.setProperty("isPlayable", "true")
elif self.local_playback:
# local playback by using proxy on this machine
url = "http://localhost:%s/track/%s/%s" % (PROXY_PORT, track['id'], duration)
li.setProperty("isPlayable", "true")
else:
# connect controlled playback
li.setProperty("isPlayable", "false")
if self.playlistid:
url = "plugin://plugin.audio.spotify/?action=connect_playback&trackid=%s&playlistid=%s&ownerid=%s&offset=%s" % (
track['id'], self.playlistid, self.ownerid, count)
elif self.albumid:
url = "plugin://plugin.audio.spotify/?action=connect_playback&trackid=%s&albumid=%s&offset=%s" % (track[
'id'], self.albumid, count)
else:
url = "plugin://plugin.audio.spotify/?action=connect_playback&trackid=%s" % (track['id'])
if self.append_artist_to_title:
title = label
else:
title = track['name']
li.setInfo('music', {
"title": title,
"genre": track["genre"],
"year": track["year"],
"tracknumber": track["track_number"],
"album": track['album']["name"],
"artist": track["artist"],
"rating": track["rating"],
"duration": duration
})
li.setArt({"thumb": track['thumb']})
li.setProperty("spotifytrackid", track['id'])
li.setContentLookup(False)
li.addContextMenuItems(track["contextitems"], True)
li.setProperty('do_not_analyze', 'true')
li.setMimeType("audio/wave")
list_items.append((url, li, False))
xbmcplugin.addDirectoryItems(self.addon_handle, list_items, totalItems=len(list_items))
示例30
def search(self):
xbmcplugin.setContent(self.addon_handle, "files")
xbmcplugin.setPluginCategory(self.addon_handle, xbmc.getLocalizedString(283))
kb = xbmc.Keyboard('', xbmc.getLocalizedString(16017))
kb.doModal()
if kb.isConfirmed():
value = kb.getText()
items = []
result = self.sp.search(
q="%s" %
value,
type='artist,album,track,playlist',
limit=1,
market=self.usercountry)
items.append(
("%s (%s)" %
(xbmc.getLocalizedString(133),
result["artists"]["total"]),
"plugin://plugin.audio.spotify/?action=search_artists&artistid=%s" %
(value)))
items.append(
("%s (%s)" %
(xbmc.getLocalizedString(136),
result["playlists"]["total"]),
"plugin://plugin.audio.spotify/?action=search_playlists&playlistid=%s" %
(value)))
items.append(
("%s (%s)" %
(xbmc.getLocalizedString(132),
result["albums"]["total"]),
"plugin://plugin.audio.spotify/?action=search_albums&albumid=%s" %
(value)))
items.append(
("%s (%s)" %
(xbmc.getLocalizedString(134),
result["tracks"]["total"]),
"plugin://plugin.audio.spotify/?action=search_tracks&trackid=%s" %
(value)))
for item in items:
li = xbmcgui.ListItem(
item[0],
path=item[1],
iconImage="DefaultMusicAlbums.png"
)
li.setProperty('do_not_analyze', 'true')
li.setProperty('IsPlayable', 'false')
li.addContextMenuItems([], True)
xbmcplugin.addDirectoryItem(handle=self.addon_handle, url=item[1], listitem=li, isFolder=True)
xbmcplugin.endOfDirectory(handle=self.addon_handle)