-import urllib, urllib2, re, xbmcplugin, xbmcgui, xbmc, sys, os, time, pprint, shutil, xbmcaddon, pprint
+import urllib, urllib2, re, xbmcplugin, xbmcgui, xbmc, sys, os, time, shutil, xbmcaddon
MODE_SEARCH_SONGS = 1
MODE_SEARCH_ALBUMS = 2
class GroovesharkPlaylistSelect(xbmcgui.WindowDialog):
def __init__(self, items=[]):
- w = int(self.getWidth()*0.5)
gap = int(self.getHeight()/100)
- titleH = 30
+ w = int(self.getWidth()*0.5)
h = self.getHeight()-30*gap
rw = self.getWidth()
rh = self.getHeight()
self.imgBg = xbmcgui.ControlImage(x+gap, 5*gap+y, w-2*gap, h-5*gap, listBackground)
self.addControl(self.imgBg)
-
- self.title = xbmcgui.ControlLabel(x, 5*gap+y, w, titleH, 'GROOVESHARK - PLAYLISTS', textColor='0xFFFFFFFF', alignment=2)
- self.addControl(self.title)
-
- self.playlistControl = xbmcgui.ControlList(2*gap+x, titleH+y+3*gap, w-4*gap, h-10*gap, textColor='0xFFFFFFFF', selectedColor='0xFFFF4242')
+
+ self.playlistControl = xbmcgui.ControlList(2*gap+x, y+3*gap+30, w-4*gap, h-10*gap, textColor='0xFFFFFFFF', selectedColor='0xFFFF4242', itemTextYOffset=0, itemHeight=30, alignmentY = 0)
self.addControl(self.playlistControl)
self.lastPos = 0
listitems.append(xbmcgui.ListItem('New...'))
self.playlistControl.addItems(listitems)
self.setFocus(self.playlistControl)
+ self.playlistControl.selectItem(0)
item = self.playlistControl.getListItem(self.lastPos)
item.select(True)
self.lastPos = pos
self.isSelecting = False
+ # Control
+ def onControl(self, control):
+ if control == self.playlistControl:
+ self.selected = self.playlistControl.getSelectedPosition()
+ self.close()
+
def onAction(self, action):
- try:
- if action == ACTION_MOVE_LEFT:
- self.selected = self.playlistControl.getSelectedPosition()
- self.close()
- elif action == ACTION_PREVIOUS_MENU:
- self.selected = -1
- self.close()
- elif action == ACTION_MOVE_UP or action == ACTION_MOVE_DOWN or action == ACTION_PAGE_UP or action == ACTION_PAGE_DOWN == 6:
- self.setFocus(self.playlistControl)
- self.setHighlight()
- except:
- xbmc.executebuiltin('XBMC.Notification(Grooveshark XBMC, Press left arrow to make selection, 1000, ' + thumbDef + ')')
- pass
+ if action == ACTION_PREVIOUS_MENU:
+ self.selected = -1
+ self.close()
+ elif action == ACTION_MOVE_UP or action == ACTION_MOVE_DOWN or action == ACTION_PAGE_UP or action == ACTION_PAGE_DOWN == 6:
+ self.setFocus(self.playlistControl)
+ self.setHighlight()
class Groveshark:
if (userid != 0):
xbmc.log("Unfavorite song: " + str(songid) + ', previous mode was ' + str(prevMode))
groovesharkApi.unfavoriteSong(songID = songid)
- xbmc.executebuiltin('XBMC.Notification(Grooveshark XBMC, Removed from favorites, 1000, ' + thumbDef + ')')
+ xbmc.executebuiltin('XBMC.Notification(Grooveshark XBMC, Removed from Grooveshark favorites, 1000, ' + thumbDef + ')')
if (int(prevMode) == MODE_FAVORITES):
xbmc.executebuiltin("Container.Update(" + favoritesUrl + ")")
else:
dialog = xbmcgui.Dialog()
- dialog.ok('Grooveshark XBMC', 'You must be logged in', 'to remove favorites.')
+ dialog.ok('Grooveshark XBMC', 'You must be logged in', 'to remove Grooveshark favorites.')
def frown(self, songid):
userid = self._get_login()
xbmc.executebuiltin('XBMC.Notification(Grooveshark XBMC, Frowned, 1000, ' + thumbDef + ')')
else:
dialog = xbmcgui.Dialog()
- dialog.ok('Grooveshark XBMC', 'You must be logged in', 'to frown a song.')
+ dialog.ok('Grooveshark XBMC', 'You must be logged in', 'to frown a Grooveshark song.')
def similarArtists(self, artistId):
similar = groovesharkApi.artistGetSimilar(artistId, limit = self.artistsearchlimit)
def renamePlaylist(self, playlistid, name):
userid = self._get_login()
if (userid != 0):
- newname = self._get_keyboard(default=name, heading="Playlist name")
+ newname = self._get_keyboard(default=name, heading="Grooveshark playlist name")
if newname == '':
return
elif groovesharkApi.playlistRename(playlistid, newname) == 0:
def _add_songs_directory(self, songs, playlistid=0, playlistname='', isFavorites=False):
n = len(songs)
xbmc.log("Found " + str(n) + " songs...")
+ dirItems = []
i = 0
while i < n:
song = songs[i]
menuItems.append(("Not Grooveshark favorite", "XBMC.RunPlugin("+unfav+")"))
if playlistid > 0:
rmplaylstsong=sys.argv[0]+"?playlistid="+str(playlistid)+"&id="+str(i+1)+"&mode="+str(MODE_REMOVE_PLAYLIST_SONG)+"&name="+playlistname
- menuItems.append(("Remove from playlist", "XBMC.RunPlugin("+rmplaylstsong+")"))
+ menuItems.append(("Remove from Grooveshark playlist", "XBMC.RunPlugin("+rmplaylstsong+")"))
else:
addplaylstsong=sys.argv[0]+"?id="+str(songid)+"&mode="+str(MODE_ADD_PLAYLIST_SONG)
menuItems.append(("Add to Grooveshark playlist", "XBMC.RunPlugin("+addplaylstsong+")"))
item.addContextMenuItems(menuItems, replaceItems=False)
- xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=item,isFolder=False,totalItems=n)
+ dirItem = (u, item, False)
+ dirItems.append(dirItem)
+ if i % 5 == 0:
+ xbmcplugin.addDirectoryItems(int(sys.argv[1]), dirItems ,n)
+ dirItems = []
i = i + 1
+
+ xbmcplugin.addDirectoryItems(int(sys.argv[1]), dirItems ,n)
xbmcplugin.setContent(self._handle, 'songs')
xbmcplugin.setPluginFanart(int(sys.argv[1]), self.fanImg)
menuItems.append(("Make Grooveshark playlist", "XBMC.RunPlugin("+mkplaylst+")"))
if mode == MODE_PLAYLIST:
rmplaylst=sys.argv[0]+"?mode="+str(MODE_REMOVE_PLAYLIST)+"&name="+urllib.quote_plus(name)+"&id="+str(id)
- menuItems.append(("Delete playlist", "XBMC.RunPlugin("+rmplaylst+")"))
+ menuItems.append(("Delete Grooveshark playlist", "XBMC.RunPlugin("+rmplaylst+")"))
mvplaylst=sys.argv[0]+"?mode="+str(MODE_RENAME_PLAYLIST)+"&name="+urllib.quote_plus(name)+"&id="+str(id)
- menuItems.append(("Rename playlist", "XBMC.RunPlugin("+mvplaylst+")"))
+ menuItems.append(("Rename Grooveshark playlist", "XBMC.RunPlugin("+mvplaylst+")"))
dir.addContextMenuItems(menuItems, replaceItems=False)
return xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=dir,isFolder=True, totalItems=items)