The branch, eden-pre has been updated
       via  1f6990dd9a2c42d465a71557e6c7525fae06eb01 (commit)
      from  b78542eec4253b3e9f6db7a9386253bed0b28a6c (commit)

- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=1f6990dd9a2c42d465a71557e6c7525fae06eb01

commit 1f6990dd9a2c42d465a71557e6c7525fae06eb01
Author: ronie <[email protected]>
Date:   Sat Nov 5 23:00:30 2011 +0100

    [script.randomitems] -v3.0.4
    
    add support for musicvideos

diff --git a/script.randomitems/README.txt b/script.randomitems/README.txt
index 39b5f56..8d47f8b 100644
--- a/script.randomitems/README.txt
+++ b/script.randomitems/README.txt
@@ -18,6 +18,7 @@ Labels:
 "RandomMovie.%d.Title"
 "RandomMovie.%d.Rating"
 "RandomMovie.%d.Year"
+"RandomMovie.%d.Plot"
 "RandomMovie.%d.RunningTime"
 "RandomMovie.%d.Path"
 "RandomMovie.%d.Trailer"
@@ -30,12 +31,23 @@ Labels:
 "RandomEpisode.%d.EpisodeNo"
 "RandomEpisode.%d.EpisodeSeason"
 "RandomEpisode.%d.EpisodeNumber"
+"RandomEpisode.%d.Plot"
 "RandomEpisode.%d.Rating"
 "RandomEpisode.%d.Path"
 "RandomEpisode.%d.Fanart"
 "RandomEpisode.%d.Thumb"
 "RandomEpisode.Count"
 
+"RandomMusicVideo.%d.Title"
+"RandomMusicVideo.%d.Year"
+"RandomMusicVideo.%d.Plot"
+"RandomMusicVideo.%d.RunningTime"
+"RandomMusicVideo.%d.Path"
+"RandomMusicVideo.%d.Artist"
+"RandomMusicVideo.%d.Fanart"
+"RandomMusicVideo.%d.Thumb"
+"RandomMusicVideo.Count"
+
 "RandomAlbum.%d.Title"
 "RandomAlbum.%d.Year"
 "RandomAlbum.%d.Artist"
@@ -60,6 +72,7 @@ Labels:
 "RandomAddon.%d.Summary"
 "RandomAddon.%d.Version"
 "RandomAddon.%d.Path"
+"RandomAddon.%d.Type"
 "RandomAddon.%d.Fanart"
 "RandomAddon.%d.Thumb"
 "RandomAddon.Count"
diff --git a/script.randomitems/RandomItems.py 
b/script.randomitems/RandomItems.py
index cc136b5..77d407a 100644
--- a/script.randomitems/RandomItems.py
+++ b/script.randomitems/RandomItems.py
@@ -6,7 +6,7 @@
 
 import xbmc, xbmcgui, xbmcaddon
 import re, sys, os, random
-import xml.dom.minidom
+from elementtree import ElementTree as xmltree
 
 __addon__    = xbmcaddon.Addon()
 __addonid__ = __addon__.getAddonInfo('id')
@@ -24,16 +24,18 @@ class Main:
         # reset totals property for visible condition
         self.WINDOW.clearProperty( "RandomMovie.Count" )
         self.WINDOW.clearProperty( "RandomEpisode.Count" )
+        self.WINDOW.clearProperty( "RandomMusicVideo.Count" )
         self.WINDOW.clearProperty( "RandomSong.Count" )
         self.WINDOW.clearProperty( "RandomAlbum.Count" )
         self.WINDOW.clearProperty( "RandomAddon.Count" )
         # we clear title for visible condition
         for count in range( self.LIMIT ):
-            self.WINDOW.clearProperty( "RandomMovie.%d.Title" % ( count ) )
-            self.WINDOW.clearProperty( "RandomEpisode.%d.Title" % ( count ) )
-            self.WINDOW.clearProperty( "RandomSong.%d.Title" % ( count ) )
-            self.WINDOW.clearProperty( "RandomAlbum.%d.Title" % ( count ) )
-            self.WINDOW.clearProperty( "RandomAddon.%d.Name" % ( count ) )
+            self.WINDOW.clearProperty( "RandomMovie.%d.Title" % ( count + 1 ) )
+            self.WINDOW.clearProperty( "RandomEpisode.%d.Title" % ( count + 1 
) )
+            self.WINDOW.clearProperty( "RandomMusicVideo.%d.Title" % ( count + 
1 ) )
+            self.WINDOW.clearProperty( "RandomSong.%d.Title" % ( count + 1 ) )
+            self.WINDOW.clearProperty( "RandomAlbum.%d.Title" % ( count + 1 ) )
+            self.WINDOW.clearProperty( "RandomAddon.%d.Name" % ( count + 1 ) )
 
     def _parse_argv( self ):
         try:
@@ -70,6 +72,7 @@ class Main:
             # fetch media info
             self._fetch_movie_info()
             self._fetch_episode_info()
+            self._fetch_musicvideo_info()
             self._fetch_album_info()
             self._fetch_song_info()
             self._fetch_addon_info()
@@ -200,12 +203,12 @@ class Main:
                 showtitle = ''
             findseason = re.search( '"season": ?(.*?),"', item )
             if findseason:
-                season = findseason.group(1)
+                season = "%.2d" % float( findseason.group(1) )
             else:
                 season = ''
             findepisode = re.search( '"episode": ?(.*?),"', item )
             if findepisode:
-                episode = findepisode.group(1)
+                episode = "%.2d" % float( findepisode.group(1) )
             else:
                 episode = ''
             findrating = re.search( '"rating": ?(.*?),"', item )
@@ -247,6 +250,84 @@ class Main:
             self.WINDOW.setProperty( "RandomEpisode.%d.Thumb" % ( count ), 
thumb )
             self.WINDOW.setProperty( "RandomEpisode.Count", total )
 
+    def _fetch_musicvideo_info( self ):
+        # query the database
+        json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetMusicVideos", "params": {"properties": ["artist", "playcount", 
"year", "plot", "runtime", "fanart", "thumbnail", "file"] }, "id": 1}')
+        # separate the records
+        json_response = re.compile( "{(.*?)}", re.DOTALL ).findall(json_query)
+        json_response.pop(0)
+        # get total value
+        total = str( len( json_response ) )
+        # enumerate thru our records
+        count = 0
+        while count < self.LIMIT:
+            count += 1
+            # check if we don't run out of items before LIMIT is reached
+            if len( json_response ) == 0:
+                return
+            # select a random item
+            item = random.choice( json_response )
+            # remove the item from our list
+            json_response.remove( item )
+            # find values
+            if self.UNPLAYED == "True":
+                findplaycount = re.search( '"playcount": ?(.*?),"', item )
+                if findplaycount:
+                    playcount = findplaycount.group(1)
+                    if int( playcount ) > 0:
+                        count = count - 1
+                        continue
+            findtitle = re.search( '"label": ?"(.*?)",["\n]', item )
+            if findtitle:
+                title = findtitle.group(1)
+            else:
+                title = ''
+            findyear = re.search( '"year": ?(.*)', item )
+            if findyear:
+                year = findyear.group(1)
+            else:
+                year = ''
+            findplot = re.search( '"plot": ?"(.*?)",["\n]', item )
+            if findplot:
+                plot = findplot.group(1)
+            else:
+                plot = ''
+            findrunningtime = re.search( '"runtime": ?"(.*?)",["\n]', item )
+            if findrunningtime:
+                runningtime = findrunningtime.group(1)
+            else:
+                runningtime = ''
+            findpath = re.search( '"file": ?"(.*?)",["\n]', item )
+            if findpath:
+                path = findpath.group(1)
+            else:
+                path = ''
+            findartist = re.search( '"artist": ?"(.*?)",["\n]', item )
+            if findartist:
+                artist = findartist.group(1)
+            else:
+                artist = ''
+            findfanart = re.search( '"fanart": ?"(.*?)",["\n]', item )
+            if findfanart:
+                fanart = findfanart.group(1)
+            else:
+                fanart = ''
+            findthumb = re.search( '"thumbnail": ?"(.*?)",["\n]', item )
+            if findthumb:
+                thumb = findthumb.group(1)
+            else:
+                thumb = ''
+            # set our properties
+            self.WINDOW.setProperty( "RandomMusicVideo.%d.Title" % ( count ), 
title )
+            self.WINDOW.setProperty( "RandomMusicVideo.%d.Year" % ( count ), 
year)
+            self.WINDOW.setProperty( "RandomMusicVideo.%d.Plot" % ( count ), 
plot )
+            self.WINDOW.setProperty( "RandomMusicVideo.%d.RunningTime" % ( 
count ), runningtime )
+            self.WINDOW.setProperty( "RandomMusicVideo.%d.Path" % ( count ), 
path )
+            self.WINDOW.setProperty( "RandomMusicVideo.%d.Fanart" % ( count ), 
fanart )
+            self.WINDOW.setProperty( "RandomMusicVideo.%d.Artist" % ( count ), 
artist )
+            self.WINDOW.setProperty( "RandomMusicVideo.%d.Thumb" % ( count ), 
thumb )
+            self.WINDOW.setProperty( "RandomMusicVideo.Count", total )
+
     def _fetch_album_info( self ):
         # query the database
         json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"AudioLibrary.GetAlbums", "params": {"properties": ["artist", "year", 
"thumbnail", "fanart", "rating"] }, "id": 1}')
@@ -412,17 +493,19 @@ class Main:
                 addonfile = os.path.join(addonpath, item, 'addon.xml')
                 if os.path.exists(addonfile):
                     # find addon id
-                    addonfilecontents = xml.dom.minidom.parse(addonfile)
-                    for addonentry in 
addonfilecontents.getElementsByTagName("addon"): 
-                        addonid = addonentry.getAttribute("id")
+                    addonfilecontents = xmltree.parse(addonfile).getroot()
+                    for element in addonfilecontents.getiterator():
+                       if element.tag == "addon":
+                           addonid = element.attrib.get('id')
+                       elif element.tag == "provides":
+                           addonprovides = element.text
                     # find plugins and scripts
                     try:
                         addontype = 
xbmcaddon.Addon(id=addonid).getAddonInfo('type')
                         if (addontype == 'xbmc.python.script') or (addontype 
== 'xbmc.python.pluginsource'):
-                            addonlist.append(addonid)
+                            addonlist.append( (addonid, addonprovides) )
                     except:
                         pass
-                    addonfilecontents.unlink()
         # get total value
         total = str( len( addonlist ) )
         # count thru our addons
@@ -437,13 +520,14 @@ class Main:
             # remove the item from our list
             addonlist.remove(addonid)
             # set properties
-            self.WINDOW.setProperty( "RandomAddon.%d.Name" % ( count ), 
xbmcaddon.Addon(id=addonid).getAddonInfo('name') )
-            self.WINDOW.setProperty( "RandomAddon.%d.Author" % ( count ), 
xbmcaddon.Addon(id=addonid).getAddonInfo('author') )
-            self.WINDOW.setProperty( "RandomAddon.%d.Summary" % ( count ), 
xbmcaddon.Addon(id=addonid).getAddonInfo('summary') )
-            self.WINDOW.setProperty( "RandomAddon.%d.Version" % ( count ), 
xbmcaddon.Addon(id=addonid).getAddonInfo('version') )
-            self.WINDOW.setProperty( "RandomAddon.%d.Path" % ( count ), 
xbmcaddon.Addon(id=addonid).getAddonInfo('id') )
-            self.WINDOW.setProperty( "RandomAddon.%d.Fanart" % ( count ), 
xbmcaddon.Addon(id=addonid).getAddonInfo('fanart') )
-            self.WINDOW.setProperty( "RandomAddon.%d.Thumb" % ( count ), 
xbmcaddon.Addon(id=addonid).getAddonInfo('icon') )
+            self.WINDOW.setProperty( "RandomAddon.%d.Name" % ( count ), 
xbmcaddon.Addon(id=addonid[0]).getAddonInfo('name') )
+            self.WINDOW.setProperty( "RandomAddon.%d.Author" % ( count ), 
xbmcaddon.Addon(id=addonid[0]).getAddonInfo('author') )
+            self.WINDOW.setProperty( "RandomAddon.%d.Summary" % ( count ), 
xbmcaddon.Addon(id=addonid[0]).getAddonInfo('summary') )
+            self.WINDOW.setProperty( "RandomAddon.%d.Version" % ( count ), 
xbmcaddon.Addon(id=addonid[0]).getAddonInfo('version') )
+            self.WINDOW.setProperty( "RandomAddon.%d.Path" % ( count ), 
xbmcaddon.Addon(id=addonid[0]).getAddonInfo('id') )
+            self.WINDOW.setProperty( "RandomAddon.%d.Fanart" % ( count ), 
xbmcaddon.Addon(id=addonid[0]).getAddonInfo('fanart') )
+            self.WINDOW.setProperty( "RandomAddon.%d.Thumb" % ( count ), 
xbmcaddon.Addon(id=addonid[0]).getAddonInfo('icon') )
+            self.WINDOW.setProperty( "RandomAddon.%d.Type" % ( count ), 
addonid[1] )
             self.WINDOW.setProperty( "RandomAddon.Count", total )
 
     def _Play_Album( self, ID ):
diff --git a/script.randomitems/addon.xml b/script.randomitems/addon.xml
index bfd6e4c..4f8562e 100644
--- a/script.randomitems/addon.xml
+++ b/script.randomitems/addon.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

-<addon id="script.randomitems" name="Random Items script" version="3.0.3" 
provider-name="Hitcher, ronie">

+<addon id="script.randomitems" name="Random Items script" version="3.0.4" 
provider-name="Hitcher, ronie">

        <requires>

                <import addon="xbmc.python" version="2.0"/>

+               <import addon="script.module.elementtree" version="1.2.7"/>

        </requires>

        <extension point="xbmc.python.library" library="RandomItems.py" />

        <extension point="xbmc.addon.metadata">

diff --git a/script.randomitems/changelog.txt b/script.randomitems/changelog.txt
index 2790e39..7103623 100644
--- a/script.randomitems/changelog.txt
+++ b/script.randomitems/changelog.txt
@@ -1,3 +1,8 @@
+v 3.0.4:
+- add support for music videos
+- added addon type property
+- return two digit values for episode and season numbers
+
 v 3.0.3:
 - adjusted to latest json-rpc changes
 - fixed json query when compactoutput was set to false

-----------------------------------------------------------------------

Summary of changes:
 script.randomitems/README.txt     |   13 ++++
 script.randomitems/RandomItems.py |  124 +++++++++++++++++++++++++++++++------
 script.randomitems/addon.xml      |    3 +-
 script.randomitems/changelog.txt  |    5 ++
 4 files changed, 124 insertions(+), 21 deletions(-)


hooks/post-receive
-- 
Scripts

------------------------------------------------------------------------------
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to