The branch, eden has been updated
via 5aa744f5b820b73e6fa65fdf1dc9811d44aa4e85 (commit)
from 3ed0d5c18271f7c0ffc27ede6fe85321fcc083e4 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=5aa744f5b820b73e6fa65fdf1dc9811d44aa4e85
commit 5aa744f5b820b73e6fa65fdf1dc9811d44aa4e85
Author: ronie <[email protected]>
Date: Tue Mar 20 18:00:46 2012 +0100
[script.globalsearch] -v0.2.2
use title instead of label
diff --git a/script.globalsearch/README.txt b/script.globalsearch/README.txt
index 8d09331..75e5cd5 100644
--- a/script.globalsearch/README.txt
+++ b/script.globalsearch/README.txt
@@ -44,6 +44,7 @@ ListItem.Property(Year)
ListItem.Property(Trailer)
ListItem.Property(Playcount)
ListItem.Property(Rating)
+ListItem.Property(StarRating)
ListItem.Property(Mpaa)
ListItem.Property(Director)
ListItem.Property(Writer)
@@ -67,6 +68,7 @@ ListItem.Property(Plot)
ListItem.Property(Premiered)
ListItem.Property(Studio)
ListItem.Property(Rating)
+ListItem.Property(StarRating)
ListItem.Property(Playcount)
ListItem.Property(Path)
@@ -87,6 +89,7 @@ ListItem.Icon
ListItem.Property(Episode)
ListItem.Property(Plot)
ListItem.Property(Rating)
+ListItem.Property(StarRating)
ListItem.Property(Director)
ListItem.Property(Fanart_Image)
ListItem.Property(Season)
@@ -150,6 +153,7 @@ ListItem.Property(Album_Description)
ListItem.Property(Album_Theme)
ListItem.Property(Album_Style)
ListItem.Property(Album_Rating)
+ListItem.Property(StarRating)
ListItem.Property(Album_Type)
ListItem.Property(Album_Mood)
ListItem.Property(Year)
@@ -165,6 +169,7 @@ ListItem.Property(Genre)
ListItem.Property(Comment)
ListItem.Property(Track)
ListItem.Property(Rating)
+ListItem.Property(StarRating)
ListItem.Property(Playcount)
ListItem.Property(Duration)
ListItem.Property(Fanart_Image)
@@ -253,6 +258,7 @@ V. Control id's used in script-globalsearch-contextmenu.xml
1001 - First context menu button, the script will handle the visible condition
1002 - Second context menu button, the script will handle the visible condition
+1003 - Third context menu button, the script will handle the visible condition
As always, do not change or remove any of the id's mentioned above!
diff --git a/script.globalsearch/addon.xml b/script.globalsearch/addon.xml
index 410f565..d69537d 100644
--- a/script.globalsearch/addon.xml
+++ b/script.globalsearch/addon.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="script.globalsearch" name="Global Search" version="0.1.7"
provider-name="ronie">
+<addon id="script.globalsearch" name="Global Search" version="0.2.2"
provider-name="ronie">
<requires>
<import addon="xbmc.python" version="2.0"/>
<import addon="script.module.simplejson" version="2.0.10"/>
diff --git a/script.globalsearch/changelog.txt
b/script.globalsearch/changelog.txt
index 5abe2d7..d4523dc 100644
--- a/script.globalsearch/changelog.txt
+++ b/script.globalsearch/changelog.txt
@@ -1,3 +1,19 @@
+v0.2.2
+- use title instead of label
+
+v0.2.1
+- fix unicode in path issue
+
+v0.2.0
+- add seperate context menu items for find seasons and find episodes
+- add seperate context menu items for find albums and find songs
+
+v0.1.9
+- add starrating
+
+v0.1.8
+- remove unused code
+
v0.1.7
- ignore possible encoding errors
- improve videoresolution matching
diff --git a/script.globalsearch/default.py b/script.globalsearch/default.py
index 9960438..f6f7f73 100644
--- a/script.globalsearch/default.py
+++ b/script.globalsearch/default.py
@@ -6,7 +6,7 @@ __addonversion__ = __addon__.getAddonInfo('version')
__language__ = __addon__.getLocalizedString
__cwd__ = __addon__.getAddonInfo('path')
-BASE_RESOURCE_PATH = xbmc.translatePath( os.path.join( __cwd__, 'resources',
'lib' ) )
+BASE_RESOURCE_PATH = xbmc.translatePath( os.path.join( __cwd__, 'resources',
'lib' ) ).decode('utf-8')
sys.path.append (BASE_RESOURCE_PATH)
@@ -17,7 +17,6 @@ if ( __name__ == "__main__" ):
if ( keyboard.isConfirmed() ):
searchstring = keyboard.getText()
import gui
-# window = "main"
ui = gui.GUI( "script-globalsearch-main.xml", __cwd__, "Default",
searchstring=searchstring )
ui.doModal()
del ui
diff --git a/script.globalsearch/resources/language/Dutch/strings.xml
b/script.globalsearch/resources/language/Dutch/strings.xml
index 7d59309..d0fbaf3 100644
--- a/script.globalsearch/resources/language/Dutch/strings.xml
+++ b/script.globalsearch/resources/language/Dutch/strings.xml
@@ -9,11 +9,13 @@
<string id="32006">Zoek Albums</string>
<string id="32007">Zoek Nummers</string>
<string id="32101">Voer zoekterm in</string>
- <string id="32201">Vind alle seizoenen en afleveringen</string>
- <string id="32202">Vind alle albums en nummers</string>
<string id="32203">Open album</string>
<string id="32204">Seizoen informatie</string>
<string id="32205">Start trailer</string>
<string id="32206">Vind album</string>
+ <string id="32207">Vind alle seizoenen</string>
+ <string id="32208">Vind alleafleveringen</string>
+ <string id="32209">Vind alle albums</string>
+ <string id="32210">Vind alle nummers</string>
<string id="32299">ZOEK OPNIEUW</string>
</strings>
diff --git a/script.globalsearch/resources/language/English/strings.xml
b/script.globalsearch/resources/language/English/strings.xml
index 7803ee0..ff2cdd5 100644
--- a/script.globalsearch/resources/language/English/strings.xml
+++ b/script.globalsearch/resources/language/English/strings.xml
@@ -9,12 +9,14 @@
<string id="32006">Search Abums</string>
<string id="32007">Search Songs</string>
<string id="32101">Enter search string</string>
- <string id="32201">Find all seasons and episodes</string>
- <string id="32202">Find all albums and songs</string>
<string id="32203">Browse album</string>
<string id="32204">Season information</string>
<string id="32205">Play trailer</string>
<string id="32206">Find album</string>
+ <string id="32207">Find all seasons</string>
+ <string id="32208">Find all episodes</string>
+ <string id="32209">Find all albums</string>
+ <string id="32210">Find all songs</string>
<string id="32299">NEW SEARCH</string>
</strings>
diff --git a/script.globalsearch/resources/language/French/strings.xml
b/script.globalsearch/resources/language/French/strings.xml
index 374d20f..0e13ceb 100644
--- a/script.globalsearch/resources/language/French/strings.xml
+++ b/script.globalsearch/resources/language/French/strings.xml
@@ -9,11 +9,13 @@
<string id="32006">Recherche Albums</string>
<string id="32007">Recherche Chansons</string>
<string id="32101">Entrer Mot de Recherche</string>
- <string id="32201">Trouver tous les épisodes et saisons</string>
- <string id="32202">Trouver tous les albums et chansons</string>
<string id="32203">Parcourir album</string>
<string id="32204">Information saison</string>
<string id="32205">Lire bande annonce</string>
<string id="32206">Trouver album</string>
+ <string id="32207">Trouver tous les saisons</string>
+ <string id="32208">Trouver tous les épisodes</string>
+ <string id="32209">Trouver tous les albums</string>
+ <string id="32210">Trouver tous les chansons</string>
<string id="32299">NOUVELLE RECHERCHE</string>
</strings>
diff --git a/script.globalsearch/resources/language/German/strings.xml
b/script.globalsearch/resources/language/German/strings.xml
index 9b734fc..103e354 100644
--- a/script.globalsearch/resources/language/German/strings.xml
+++ b/script.globalsearch/resources/language/German/strings.xml
@@ -9,11 +9,13 @@
<string id="32006">Suche Alben</string>
<string id="32007">Suche Songs</string>
<string id="32101">Suchbegriff eingeben</string>
- <string id="32201">Finde alle Staffeln und Episoden</string>
- <string id="32202">Finde alle Alben und Songs</string>
<string id="32203">Album durchsuchen</string>
<string id="32204">Staffel-Informationen</string>
<string id="32205">Trailer abspielen</string>
<string id="32206">Finde Album</string>
+ <string id="32207">Finde alle Staffeln</string>
+ <string id="32208">Finde alle Episoden</string>
+ <string id="32209">Finde alle Alben</string>
+ <string id="32210">Finde alle Songs</string>
<string id="32299">NEUE SUCHE</string>
</strings>
diff --git a/script.globalsearch/resources/language/Italian/strings.xml
b/script.globalsearch/resources/language/Italian/strings.xml
index 4abcbac..098d29d 100644
--- a/script.globalsearch/resources/language/Italian/strings.xml
+++ b/script.globalsearch/resources/language/Italian/strings.xml
@@ -9,11 +9,13 @@
<string id="32006">Ricerca Album</string>
<string id="32007">Ricerca Canzoni</string>
<string id="32101">Enter Ricerca string</string>
- <string id="32201">Trova tutte le stagioni ed episodi</string>
- <string id="32202">Trova tutti gli album e le canzoni</string>
<string id="32203">Sfoglia album</string>
<string id="32204">Info Stagione</string>
<string id="32205">Riproduci Trailer</string>
<string id="32206">Trova album</string>
+ <string id="32207">Trova tutte le stagioni</string>
+ <string id="32208">Trova tutte le episodi</string>
+ <string id="32209">Trova tutti gli album</string>
+ <string id="32210">Trova tutti le canzoni</string>
<string id="32299">Nuova Ricerca</string>
</strings>
diff --git a/script.globalsearch/resources/language/Portuguese
(Brazil)/strings.xml b/script.globalsearch/resources/language/Portuguese
(Brazil)/strings.xml
index cdc08ed..f8ef608 100644
--- a/script.globalsearch/resources/language/Portuguese (Brazil)/strings.xml
+++ b/script.globalsearch/resources/language/Portuguese (Brazil)/strings.xml
@@ -9,12 +9,14 @@
<string id="32006">Procurar Ãlbuns</string>
<string id="32007">Procurar Músicas</string>
<string id="32101">Entre texto que deseja buscar</string>
- <string id="32201">Encontrar todas as temporadas e episódios</string>
- <string id="32202">Encontrar todos os álbuns e músicas</string>
<string id="32203">Navegar álbum</string>
<string id="32204">Informação da Temporada</string>
<string id="32205">Play trailer</string>
<string id="32206">Encontrar álbum</string>
+ <string id="32207">Encontrar todas as temporadas</string>
+ <string id="32208">Encontrar todas os episódios</string>
+ <string id="32209">Encontrar todos os álbuns</string>
+ <string id="32210">Encontrar todos as músicas</string>
<string id="32299">Nova Busca</string>
</strings>
diff --git a/script.globalsearch/resources/lib/contextmenu.py
b/script.globalsearch/resources/lib/contextmenu.py
index 7063a78..e7dc493 100644
--- a/script.globalsearch/resources/lib/contextmenu.py
+++ b/script.globalsearch/resources/lib/contextmenu.py
@@ -6,29 +6,24 @@ import xbmcgui
CANCEL_DIALOG = ( 9, 10, 92, 216, 247, 257, 275, 61467, 61448, )
ACTION_CONTEXT_MENU = ( 117, )
-
class GUI( xbmcgui.WindowXMLDialog ):
def __init__( self, *args, **kwargs ):
xbmcgui.WindowXMLDialog.__init__( self )
self.area = kwargs[ "area" ]
self.labels = kwargs[ "labels" ]
-
def onInit( self ):
self._show_context_menu()
-
def _show_context_menu( self ):
self._hide_buttons()
self._setup_menu()
self.setFocus( self.getControl( 1001 ) )
-
def _hide_buttons( self ):
- for button in range( 1001, 1003 ):
+ for button in range( 1001, 1004 ):
self.getControl( button ).setVisible( False )
-
def _setup_menu( self ):
button_height = self.getControl( 1001 ).getHeight()
button_posx, button_posy = self.getControl( 1001 ).getPosition()
@@ -44,10 +39,6 @@ class GUI( xbmcgui.WindowXMLDialog ):
dialog_middle_height = ( ( len( self.labels ) * ( button_height +
button_gap ) ) - button_gap ) - 2 * ( dialog_top_height - ( button_posy -
dialog_top_posy ) )
dialog_height = dialog_middle_height + dialog_top_height +
dialog_bottom_height
dialog_posx = int( float( self.area[ 2 ] - dialog_width ) / 2 ) +
self.area[ 0 ]
- if ( dialog_posx + dialog_width > 700 ):
- dialog_posx = 700 - dialog_width
- elif ( dialog_posx < 20 ):
- dialog_posx = 20
dialog_posy = int( float( self.area[ 3 ] - dialog_height ) / 2 ) +
self.area[ 1 ]
button_posx = dialog_posx + button_offsetx
button_posy = dialog_posy + button_offsety
@@ -61,21 +52,16 @@ class GUI( xbmcgui.WindowXMLDialog ):
self.getControl( button + 1001 ).setVisible( True )
self.getControl( button + 1001 ).setEnabled( True )
-
def _close_dialog( self, selection=None ):
self.selection = selection
self.close()
-
def onClick( self, controlId ):
self._close_dialog( controlId - 1001 )
-
def onFocus( self, controlId ):
pass
-
def onAction( self, action ):
if ( action.getId() in CANCEL_DIALOG ) or ( action.getId() in
ACTION_CONTEXT_MENU ):
self._close_dialog()
-
diff --git a/script.globalsearch/resources/lib/gui.py
b/script.globalsearch/resources/lib/gui.py
index 81183cd..14d822e 100644
--- a/script.globalsearch/resources/lib/gui.py
+++ b/script.globalsearch/resources/lib/gui.py
@@ -1,6 +1,10 @@
-import sys, re, datetime, simplejson
+import sys, re, datetime
import xbmc, xbmcgui
import contextmenu, infodialog
+if sys.version_info < (2, 7):
+ import simplejson
+else:
+ import json as simplejson
__addon__ = sys.modules[ "__main__" ].__addon__
__addonversion__ = sys.modules[ "__main__" ].__addonversion__
@@ -19,7 +23,6 @@ def log(txt):
class GUI( xbmcgui.WindowXMLDialog ):
def __init__( self, *args, **kwargs ):
-# xbmcgui.WindowXMLDialog.__init__( self )
self.searchstring = kwargs[ "searchstring" ].replace('(',
'[(]').replace(')', '[)]').replace('+', '[+]')
log('script version %s started' % __addonversion__)
self.nextsearch = False
@@ -115,12 +118,12 @@ class GUI( xbmcgui.WindowXMLDialog ):
listitems = []
self.getControl( 191 ).setLabel( '[B]' + xbmc.getLocalizedString(342)
+ '[/B]' )
count = 0
- json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetMovies", "params": {"properties": ["streamdetails", "genre",
"studio", "year", "tagline", "plot", "plotoutline", "runtime", "fanart",
"thumbnail", "file", "trailer", "playcount", "rating", "mpaa", "director",
"writer"], "sort": { "method": "label" } }, "id": 1}')
+ json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetMovies", "params": {"properties": ["title", "streamdetails",
"genre", "studio", "year", "tagline", "plot", "plotoutline", "runtime",
"fanart", "thumbnail", "file", "trailer", "playcount", "rating", "mpaa",
"director", "writer"], "sort": { "method": "title" } }, "id": 1}')
json_query = unicode(json_query, 'utf-8', errors='ignore')
json_response = simplejson.loads(json_query)
if (json_response['result'] != None) and
(json_response['result'].has_key('movies')):
for item in json_response['result']['movies']:
- movie = item['label']
+ movie = item['title']
moviematch = re.search( '.*' + self.searchstring + '.*',
movie, re.I )
if moviematch:
count = count + 1
@@ -134,6 +137,7 @@ class GUI( xbmcgui.WindowXMLDialog ):
plot = item['plot']
outline = item['plotoutline']
rating = str(round(float(item['rating']),1))
+ starrating = 'rating%.1d.png' % round(float(rating)/2)
runtime = item['runtime']
studio = item['studio']
tagline = item['tagline']
@@ -190,6 +194,7 @@ class GUI( xbmcgui.WindowXMLDialog ):
listitem.setProperty( "trailer", trailer )
listitem.setProperty( "playcount", playcount )
listitem.setProperty( "rating", rating )
+ listitem.setProperty( "starrating", starrating )
listitem.setProperty( "mpaa", mpaa )
listitem.setProperty( "writer", writer )
listitem.setProperty( "director", director )
@@ -212,12 +217,12 @@ class GUI( xbmcgui.WindowXMLDialog ):
listitems = []
self.getControl( 191 ).setLabel( '[B]' +
xbmc.getLocalizedString(20343) + '[/B]' )
count = 0
- json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetTVShows", "params": {"properties": ["genre", "studio",
"premiered", "plot", "fanart", "thumbnail", "playcount", "year", "mpaa",
"episode", "rating"], "sort": { "method": "label" } }, "id": 1}')
+ json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetTVShows", "params": {"properties": ["title", "genre",
"studio", "premiered", "plot", "fanart", "thumbnail", "playcount", "year",
"mpaa", "episode", "rating"], "sort": { "method": "title" } }, "id": 1}')
json_query = unicode(json_query, 'utf-8', errors='ignore')
json_response = simplejson.loads(json_query)
if (json_response['result'] != None) and
(json_response['result'].has_key('tvshows')):
for item in json_response['result']['tvshows']:
- tvshow = item['label']
+ tvshow = item['title']
tvshowmatch = re.search( '.*' + self.searchstring + '.*',
tvshow, re.I )
if tvshowmatch:
count = count + 1
@@ -229,6 +234,7 @@ class GUI( xbmcgui.WindowXMLDialog ):
plot = item['plot']
premiered = item['premiered']
rating = str(round(float(item['rating']),1))
+ starrating = 'rating%.1d.png' % round(float(rating)/2)
studio = item['studio']
thumb = item['thumbnail']
path = path = 'videodb://2/2/' + str(item['tvshowid']) +
'/'
@@ -244,6 +250,7 @@ class GUI( xbmcgui.WindowXMLDialog ):
listitem.setProperty( "premiered", premiered )
listitem.setProperty( "studio", studio )
listitem.setProperty( "rating", rating )
+ listitem.setProperty( "starrating", starrating )
listitem.setProperty( "playcount", playcount )
listitem.setProperty( "path", path )
listitems.append(listitem)
@@ -259,7 +266,7 @@ class GUI( xbmcgui.WindowXMLDialog ):
listitems = []
self.getControl( 191 ).setLabel( '[B]' +
xbmc.getLocalizedString(20343) + '[/B]' )
count = 0
- json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetSeasons", "params": {"properties": ["showtitle", "season",
"fanart", "thumbnail", "playcount", "episode"], "sort": { "method": "label" },
"tvshowid":%s }, "id": 1}' % self.tvshowid)
+ json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetSeasons", "params": {"properties": ["title", "showtitle",
"season", "fanart", "thumbnail", "playcount", "episode"], "sort": { "method":
"title" }, "tvshowid":%s }, "id": 1}' % self.tvshowid)
json_query = unicode(json_query, 'utf-8', errors='ignore')
json_response = simplejson.loads(json_query)
if (json_response['result'] != None) and
(json_response['result'].has_key('seasons')):
@@ -271,7 +278,7 @@ class GUI( xbmcgui.WindowXMLDialog ):
episode = str(item['episode'])
fanart = item['fanart']
path = 'videodb://2/2/' + self.tvshowid + '/' +
str(item['season']) + '/'
- season = item['label']
+ season = item['title']
playcount = str(item['playcount'])
thumb = item['thumbnail']
listitem = xbmcgui.ListItem(label=season,
iconImage='DefaultVideo.png', thumbnailImage=thumb)
@@ -296,9 +303,9 @@ class GUI( xbmcgui.WindowXMLDialog ):
self.getControl( 191 ).setLabel( '[B]' +
xbmc.getLocalizedString(20360) + '[/B]' )
count = 0
if self.fetch_seasonepisodes == 'true':
- json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetEpisodes", "params": { "properties": ["streamdetails", "plot",
"firstaired", "runtime", "season", "episode", "showtitle", "thumbnail",
"fanart", "file", "playcount", "director", "rating"], "sort": { "method":
"label" }, "tvshowid":%s }, "id": 1}' % self.tvshowid)
+ json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetEpisodes", "params": { "properties": ["title",
"streamdetails", "plot", "firstaired", "runtime", "season", "episode",
"showtitle", "thumbnail", "fanart", "file", "playcount", "director", "rating"],
"sort": { "method": "title" }, "tvshowid":%s }, "id": 1}' % self.tvshowid)
else:
- json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetEpisodes", "params": { "properties": ["streamdetails", "plot",
"firstaired", "runtime", "season", "episode", "showtitle", "thumbnail",
"fanart", "file", "playcount", "director", "rating"], "sort": { "method":
"label" } }, "id": 1}')
+ json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetEpisodes", "params": { "properties": ["title",
"streamdetails", "plot", "firstaired", "runtime", "season", "episode",
"showtitle", "thumbnail", "fanart", "file", "playcount", "director", "rating"],
"sort": { "method": "title" } }, "id": 1}')
json_query = unicode(json_query, 'utf-8', errors='ignore')
json_response = simplejson.loads(json_query)
if (json_response['result'] != None) and
(json_response['result'].has_key('episodes')):
@@ -306,13 +313,13 @@ class GUI( xbmcgui.WindowXMLDialog ):
if self.fetch_seasonepisodes == 'true':
episode = item['showtitle']
else:
- episode = item['label']
+ episode = item['title']
episodematch = re.search( '.*' + self.searchstring + '.*',
episode, re.I )
if episodematch:
count = count + 1
if self.fetch_seasonepisodes == 'true':
tvshowname = episode
- episode = item['label']
+ episode = item['title']
else:
tvshowname = item['showtitle']
director = item['director']
@@ -323,7 +330,8 @@ class GUI( xbmcgui.WindowXMLDialog ):
runtime = item['runtime']
premiered = item['firstaired']
rating = str(round(float(item['rating']),1))
- seasonnumber = "%.2d" % float(item['season'])
+ starrating = 'rating%.1d.png' % round(float(rating)/2)
+ seasonnumber = '%.2d' % float(item['season'])
playcount = str(item['playcount'])
thumb = item['thumbnail']
fanart = item['fanart']
@@ -369,6 +377,7 @@ class GUI( xbmcgui.WindowXMLDialog ):
listitem.setProperty( "episode", episodenumber )
listitem.setProperty( "plot", plot )
listitem.setProperty( "rating", rating )
+ listitem.setProperty( "starrating", starrating )
listitem.setProperty( "director", director )
listitem.setProperty( "fanart_image", fanart )
listitem.setProperty( "season", seasonnumber )
@@ -395,13 +404,12 @@ class GUI( xbmcgui.WindowXMLDialog ):
listitems = []
self.getControl( 191 ).setLabel( '[B]' +
xbmc.getLocalizedString(20389) + '[/B]' )
count = 0
- json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetMusicVideos", "params": {"properties": ["streamdetails",
"runtime", "genre", "studio", "artist", "album", "year", "plot", "fanart",
"thumbnail", "file", "playcount", "director"], "sort": { "method": "label" } },
"id": 1}')
+ json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetMusicVideos", "params": {"properties": ["title",
"streamdetails", "runtime", "genre", "studio", "artist", "album", "year",
"plot", "fanart", "thumbnail", "file", "playcount", "director"], "sort": {
"method": "title" } }, "id": 1}')
json_query = unicode(json_query, 'utf-8', errors='ignore')
json_response = simplejson.loads(json_query)
if (json_response['result'] != None) and
(json_response['result'].has_key('musicvideos')):
for item in json_response['result']['musicvideos']:
- log(item)
- musicvideo = item['label']
+ musicvideo = item['title']
musicvideomatch = re.search( '.*' + self.searchstring + '.*',
musicvideo, re.I )
if musicvideomatch:
log("match")
@@ -537,9 +545,9 @@ class GUI( xbmcgui.WindowXMLDialog ):
self.getControl( 191 ).setLabel( '[B]' + xbmc.getLocalizedString(132)
+ '[/B]' )
count = 0
if self.fetch_albumssongs == 'true':
- json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"AudioLibrary.GetAlbums", "params": {"properties": ["description",
"albumlabel", "artist", "genre", "year", "thumbnail", "fanart", "theme",
"type", "mood", "style", "rating"], "sort": { "method": "label" },
"artistid":%s }, "id": 1}' % self.artistid)
+ json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"AudioLibrary.GetAlbums", "params": {"properties": ["title", "description",
"albumlabel", "artist", "genre", "year", "thumbnail", "fanart", "theme",
"type", "mood", "style", "rating"], "sort": { "method": "title" },
"artistid":%s }, "id": 1}' % self.artistid)
else:
- json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"AudioLibrary.GetAlbums", "params": {"properties": ["description",
"albumlabel", "artist", "genre", "year", "thumbnail", "fanart", "theme",
"type", "mood", "style", "rating"], "sort": { "method": "label" } }, "id": 1}')
+ json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"AudioLibrary.GetAlbums", "params": {"properties": ["title", "description",
"albumlabel", "artist", "genre", "year", "thumbnail", "fanart", "theme",
"type", "mood", "style", "rating"], "sort": { "method": "title" } }, "id": 1}')
json_query = unicode(json_query, 'utf-8', errors='ignore')
json_response = simplejson.loads(json_query)
if (json_response['result'] != None) and
(json_response['result'].has_key('albums')):
@@ -547,13 +555,13 @@ class GUI( xbmcgui.WindowXMLDialog ):
if self.fetch_albumssongs == 'true':
album = item['artist']
else:
- album = item['label']
+ album = item['title']
albummatch = re.search( '.*' + self.searchstring + '.*',
album, re.I )
if albummatch:
count = count + 1
if self.fetch_albumssongs == 'true':
artist = album
- album = item['label']
+ album = item['title']
else:
artist = item['artist']
if self.fetch_songalbum == 'true':
@@ -568,7 +576,12 @@ class GUI( xbmcgui.WindowXMLDialog ):
mood = item['mood']
rating = str(item['rating'])
if rating == '48':
- rating = ""
+ rating = ''
+ if rating != '':
+ starrating = 'rating%.1d.png' %
round(float(int(rating))/2)
+ else:
+ starrating = 'rating0.png'
+ log('starrating: %s' % starrating)
style = item['style']
theme = item['theme']
albumtype = item['type']
@@ -584,6 +597,7 @@ class GUI( xbmcgui.WindowXMLDialog ):
listitem.setProperty( "album_theme", theme )
listitem.setProperty( "album_style", style )
listitem.setProperty( "album_rating", rating )
+ listitem.setProperty( "starrating", starrating )
listitem.setProperty( "album_type", albumtype )
listitem.setProperty( "album_mood", mood )
listitem.setProperty( "year", year )
@@ -602,9 +616,9 @@ class GUI( xbmcgui.WindowXMLDialog ):
self.getControl( 191 ).setLabel( '[B]' + xbmc.getLocalizedString(134)
+ '[/B]' )
count = 0
if self.fetch_albumssongs == 'true':
- json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"AudioLibrary.GetSongs", "params": {"properties": ["artist", "album", "genre",
"duration", "year", "file", "thumbnail", "fanart", "comment", "rating",
"track", "playcount"], "sort": { "method": "label" }, "artistid":%s }, "id":
1}' % self.artistid)
+ json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"AudioLibrary.GetSongs", "params": {"properties": ["title", "artist", "album",
"genre", "duration", "year", "file", "thumbnail", "fanart", "comment",
"rating", "track", "playcount"], "sort": { "method": "title" }, "artistid":%s
}, "id": 1}' % self.artistid)
else:
- json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"AudioLibrary.GetSongs", "params": {"properties": ["artist", "album", "genre",
"duration", "year", "file", "thumbnail", "fanart", "comment", "rating",
"track", "playcount"], "sort": { "method": "label" } }, "id": 1}')
+ json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"AudioLibrary.GetSongs", "params": {"properties": ["title", "artist", "album",
"genre", "duration", "year", "file", "thumbnail", "fanart", "comment",
"rating", "track", "playcount"], "sort": { "method": "title" } }, "id": 1}')
json_query = unicode(json_query, 'utf-8', errors='ignore')
json_response = simplejson.loads(json_query)
if (json_response['result'] != None) and
(json_response['result'].has_key('songs')):
@@ -612,7 +626,7 @@ class GUI( xbmcgui.WindowXMLDialog ):
if self.fetch_albumssongs == 'true':
song = item['artist']
else:
- song = item['label']
+ song = item['title']
songmatch = re.search( '.*' + self.searchstring + '.*', song,
re.I )
if songmatch:
count = count + 1
@@ -633,6 +647,7 @@ class GUI( xbmcgui.WindowXMLDialog ):
track = str(item['track'])
playcount = str(item['playcount'])
rating = str(int(item['rating'])-48)
+ starrating = 'rating%.1d.png' % int(rating)
year = str(item['year'])
listitem = xbmcgui.ListItem(label=song,
iconImage='DefaultAlbumCover.png', thumbnailImage=thumb)
listitem.setProperty( "icon", thumb )
@@ -642,6 +657,7 @@ class GUI( xbmcgui.WindowXMLDialog ):
listitem.setProperty( "comment", comment )
listitem.setProperty( "track", track )
listitem.setProperty( "rating", rating )
+ listitem.setProperty( "starrating", starrating )
listitem.setProperty( "playcount", playcount )
listitem.setProperty( "duration", duration )
listitem.setProperty( "fanart_image", fanart )
@@ -656,7 +672,7 @@ class GUI( xbmcgui.WindowXMLDialog ):
self.setFocus( self.getControl( 181 ) )
self.focusset = 'true'
- def _getTvshow_SeasonsEpisodes( self ):
+ def _getTvshow_Seasons( self ):
self.fetch_seasonepisodes = 'true'
listitem = self.getControl( 121 ).getSelectedItem()
self.tvshowid = listitem.getProperty('path')[14:-1]
@@ -665,11 +681,22 @@ class GUI( xbmcgui.WindowXMLDialog ):
self._hide_controls()
self._reset_controls()
self._fetch_seasons()
+ self._check_focus()
+ self.fetch_seasonepisodes = 'false'
+
+ def _getTvshow_Episodes( self ):
+ self.fetch_seasonepisodes = 'true'
+ listitem = self.getControl( 121 ).getSelectedItem()
+ self.tvshowid = listitem.getProperty('path')[14:-1]
+ self.searchstring =
listitem.getLabel().replace('(','[(]').replace(')','[)]').replace('+','[+]')
+ self._reset_variables()
+ self._hide_controls()
+ self._reset_controls()
self._fetch_episodes()
self._check_focus()
self.fetch_seasonepisodes = 'false'
- def _getArtist_AlbumsSongs( self ):
+ def _getArtist_Albums( self ):
self.fetch_albumssongs = 'true'
listitem = self.getControl( 161 ).getSelectedItem()
self.artistid = listitem.getProperty('path')[12:-1]
@@ -678,6 +705,17 @@ class GUI( xbmcgui.WindowXMLDialog ):
self._hide_controls()
self._reset_controls()
self._fetch_albums()
+ self._check_focus()
+ self.fetch_albumssongs = 'false'
+
+ def _getArtist_Songs( self ):
+ self.fetch_albumssongs = 'true'
+ listitem = self.getControl( 161 ).getSelectedItem()
+ self.artistid = listitem.getProperty('path')[12:-1]
+ self.searchstring =
listitem.getLabel().replace('(','[(]').replace(')','[)]').replace('+','[+]')
+ self._reset_variables()
+ self._hide_controls()
+ self._reset_controls()
self._fetch_songs()
self._check_focus()
self.fetch_albumssongs = 'false'
@@ -765,8 +803,8 @@ class GUI( xbmcgui.WindowXMLDialog ):
labels += ( __language__(32205), )
functions += ( self._play_trailer, )
elif controlId == 121:
- labels += ( xbmc.getLocalizedString(20351), __language__(32201), )
- functions += ( self._showInfo, self._getTvshow_SeasonsEpisodes, )
+ labels += ( xbmc.getLocalizedString(20351), __language__(32207),
__language__(32208), )
+ functions += ( self._showInfo, self._getTvshow_Seasons,
self._getTvshow_Episodes, )
elif controlId == 131:
labels += ( __language__(32204), )
functions += ( self._showInfo, )
@@ -777,15 +815,15 @@ class GUI( xbmcgui.WindowXMLDialog ):
labels += ( xbmc.getLocalizedString(20393), )
functions += ( self._showInfo, )
elif controlId == 161:
- labels += ( xbmc.getLocalizedString(21891), __language__(32202), )
- functions += ( self._showInfo, self._getArtist_AlbumsSongs, )
+ labels += ( xbmc.getLocalizedString(21891), __language__(32209),
__language__(32210), )
+ functions += ( self._showInfo, self._getArtist_Albums,
self._getArtist_Songs, )
elif controlId == 171:
labels += ( xbmc.getLocalizedString(13351), __language__(32203), )
functions += ( self._showInfo, self._browse_album, )
elif controlId == 181:
labels += ( xbmc.getLocalizedString(658), __language__(32206), )
functions += ( self._showInfo, self._getSong_Album, )
- context_menu = contextmenu.GUI( "script-globalsearch-contextmenu.xml"
, __cwd__, "Default", area=( x, y, w, h, ), labels=labels )
+ context_menu = contextmenu.GUI( "script-globalsearch-contextmenu.xml"
, __cwd__, "Default", area=( 0, 0, 1280, 720, ), labels=labels )
context_menu.doModal()
if context_menu.selection is not None:
functions[ context_menu.selection ]()
diff --git a/script.globalsearch/resources/lib/infodialog.py
b/script.globalsearch/resources/lib/infodialog.py
index 84ed620..373681f 100644
--- a/script.globalsearch/resources/lib/infodialog.py
+++ b/script.globalsearch/resources/lib/infodialog.py
@@ -6,19 +6,16 @@ __language__ = sys.modules[ "__main__" ].__language__
CANCEL_DIALOG = ( 9, 10, 92, 216, 247, 257, 275, 61467, 61448, )
ACTION_SHOW_INFO = ( 11, )
-
class GUI( xbmcgui.WindowXMLDialog ):
def __init__( self, *args, **kwargs ):
xbmcgui.WindowXMLDialog.__init__( self )
self.listitem = kwargs[ "listitem" ]
self.content = kwargs[ "content" ]
-
def onInit( self ):
self._hide_controls()
self._show_info()
-
def _hide_controls( self ):
self.getControl( 110 ).setVisible( False )
self.getControl( 120 ).setVisible( False )
@@ -32,7 +29,6 @@ class GUI( xbmcgui.WindowXMLDialog ):
self.getControl( 192 ).setVisible( False )
self.getControl( 193 ).setVisible( False )
-
def _show_info( self ):
self.getControl( 100 ).addItem( self.listitem )
if self.content == 'movies':
@@ -82,12 +78,10 @@ class GUI( xbmcgui.WindowXMLDialog ):
self.getControl( 192 ).setVisible( True )
self.setFocus( self.getControl( 191 ) )
-
def _close_dialog( self, action=None ):
self.action = action
self.close()
-
def onClick( self, controlId ):
if controlId == 191:
self._close_dialog()
@@ -114,12 +108,9 @@ class GUI( xbmcgui.WindowXMLDialog ):
if self.content == 'albums':
self._close_dialog( 'browse_album' )
-
def onFocus( self, controlId ):
pass
-
def onAction( self, action ):
if ( action.getId() in CANCEL_DIALOG ) or ( action.getId() in
ACTION_SHOW_INFO ):
self._close_dialog()
-
diff --git
a/script.globalsearch/resources/skins/Default/720p/script-globalsearch-contextmenu.xml
b/script.globalsearch/resources/skins/Default/720p/script-globalsearch-contextmenu.xml
index f7f0b03..be859d6 100644
---
a/script.globalsearch/resources/skins/Default/720p/script-globalsearch-contextmenu.xml
+++
b/script.globalsearch/resources/skins/Default/720p/script-globalsearch-contextmenu.xml
@@ -4,8 +4,8 @@
<animation effect="fade" time="300">WindowClose</animation>
<coordinates>
<system>1</system>
- <posx>110</posx>
- <posy>270</posy>
+ <posx>0</posx>
+ <posy>0</posy>
</coordinates>
<controls>
<control type="image" id="997">
@@ -40,7 +40,7 @@
<texturenofocus
border="5">button-nofocus.png</texturenofocus>
<onleft>1001</onleft>
<onright>1001</onright>
- <onup>1002</onup>
+ <onup>1003</onup>
<ondown>1002</ondown>
</control>
<control type="button" id="1002">
@@ -57,6 +57,22 @@
<onleft>1002</onleft>
<onright>1002</onright>
<onup>1001</onup>
+ <ondown>1003</ondown>
+ </control>
+ <control type="button" id="1003">
+ <posx>20</posx>
+ <posy>0</posy>
+ <width>320</width>
+ <height>38</height>
+ <font>font-20</font>
+ <align>center</align>
+ <textcolor>88FFFFFF</textcolor>
+ <focusedcolor>FFFFFFFF</focusedcolor>
+ <texturefocus border="5">button-focus.png</texturefocus>
+ <texturenofocus
border="5">button-nofocus.png</texturenofocus>
+ <onleft>1003</onleft>
+ <onright>1003</onright>
+ <onup>1002</onup>
<ondown>1001</ondown>
</control>
</controls>
diff --git
a/script.globalsearch/resources/skins/Default/720p/script-globalsearch-infodialog.xml
b/script.globalsearch/resources/skins/Default/720p/script-globalsearch-infodialog.xml
index fbb4449..8f823c7 100644
---
a/script.globalsearch/resources/skins/Default/720p/script-globalsearch-infodialog.xml
+++
b/script.globalsearch/resources/skins/Default/720p/script-globalsearch-infodialog.xml
@@ -54,7 +54,7 @@
<align>center</align>
<aligny>center</aligny>
<textcolor>FFFFFFFF</textcolor>
- <shadowcolor>00000000</shadowcolor>
+ <shadowcolor>FF000000</shadowcolor>
<label>$INFO[Container(100).ListItem.Label]</label>
</control>
<control type="image">
diff --git
a/script.globalsearch/resources/skins/Default/720p/script-globalsearch-main.xml
b/script.globalsearch/resources/skins/Default/720p/script-globalsearch-main.xml
index ef4b664..55147c3 100644
---
a/script.globalsearch/resources/skins/Default/720p/script-globalsearch-main.xml
+++
b/script.globalsearch/resources/skins/Default/720p/script-globalsearch-main.xml
@@ -645,7 +645,7 @@
<height>118</height>
<texture
border="2">blue.png</texture>
<colordiffuse>4FFFFFFF</colordiffuse>
-
<visible>Control.HasFocus(111)</visible>
+
<visible>Control.HasFocus(131)</visible>
</control>
<control type="list" id="131">
<posx>10</posx>
-----------------------------------------------------------------------
Summary of changes:
script.globalsearch/README.txt | 6 +
script.globalsearch/addon.xml | 2 +-
script.globalsearch/changelog.txt | 16 +++
script.globalsearch/default.py | 3 +-
.../resources/language/Dutch/strings.xml | 6 +-
.../resources/language/English/strings.xml | 6 +-
.../resources/language/French/strings.xml | 6 +-
.../resources/language/German/strings.xml | 6 +-
.../resources/language/Italian/strings.xml | 6 +-
.../language/Portuguese (Brazil)/strings.xml | 6 +-
script.globalsearch/resources/lib/contextmenu.py | 16 +---
script.globalsearch/resources/lib/gui.py | 100 ++++++++++++++------
script.globalsearch/resources/lib/infodialog.py | 9 --
.../720p/script-globalsearch-contextmenu.xml | 22 ++++-
.../720p/script-globalsearch-infodialog.xml | 2 +-
.../Default/720p/script-globalsearch-main.xml | 2 +-
16 files changed, 139 insertions(+), 75 deletions(-)
hooks/post-receive
--
Scripts
------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons