The branch, eden-pre has been updated
via 04458e0bf65590f3226f5894ea22b1286b8b0cf8 (commit)
from abcdfd13775e93fc2fd8156e71e79c0f00d625b1 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=04458e0bf65590f3226f5894ea22b1286b8b0cf8
commit 04458e0bf65590f3226f5894ea22b1286b8b0cf8
Author: ronie <[email protected]>
Date: Sun Oct 9 15:04:58 2011 +0200
[script.tv.show.next.aired] -v4.0.1
added tv guide
diff --git a/script.tv.show.next.aired/addon.xml
b/script.tv.show.next.aired/addon.xml
index 31e638a..d734186 100644
--- a/script.tv.show.next.aired/addon.xml
+++ b/script.tv.show.next.aired/addon.xml
@@ -1,21 +1,21 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="script.tv.show.next.aired"
name="TV Show - Next Aired"
- version="3.0.3"
- provider-name="Ppic, Frost, ronie">
+ version="4.0.1"
+ provider-name="Ppic, Frost, ronie, `Black">
<requires>
<import addon="xbmc.python" version="2.0"/>
</requires>
<extension point="xbmc.python.script"
library="default.py">
- <provides>video</provides>
+ <provides>executable</provides>
</extension>
<extension point="xbmc.addon.metadata">
<platform>all</platform>
- <summary lang="en">Grab infos of next TV Shows Aired.</summary>
+ <summary lang="en">Get info for TV Shows Next Aired.</summary>
<summary lang="fr">Récupère les dates de diffusions de vos
séries</summary>
- <description lang="en">Grab infos of next TV Shows Aired. You'll never
miss them</description>
+ <description lang="en">Get info for TV Shows Next Aired. You'll never miss
one again.</description>
<description lang="fr">Ce script interroge votre médiathèque puis vas
récupérer les infos sur les prochaines diffusions de vos séries.
- vous n'en manquerez plus aucune </description>
+ vous n'en manquerez plus aucune.</description>
</extension>
</addon>
diff --git a/script.tv.show.next.aired/changelog.txt
b/script.tv.show.next.aired/changelog.txt
index 580801e..d0fa7fe 100644
--- a/script.tv.show.next.aired/changelog.txt
+++ b/script.tv.show.next.aired/changelog.txt
@@ -1,3 +1,10 @@
+v4.0.1
+- added readme for skinners
+
+v4.0.0
+- changed script gui into a tv guide
+- provide infolabels for focussed item in tv-show library
+
v3.0.3
- adjusted to latest json-rpc changes
- fixed tv show title in info dialog
diff --git a/script.tv.show.next.aired/default.py
b/script.tv.show.next.aired/default.py
index 95ecbdd..3c7dce2 100644
--- a/script.tv.show.next.aired/default.py
+++ b/script.tv.show.next.aired/default.py
@@ -1,14 +1,7 @@
-import urllib
-import os
-import sys
+import os, sys, re, time, socket, urllib
from traceback import print_exc
-import re
-import socket
-import xbmc
-import xbmcgui
-import xbmcaddon
-import xbmcvfs
-import time
+from datetime import date
+import xbmc, xbmcgui, xbmcaddon, xbmcvfs
__addon__ = xbmcaddon.Addon()
__addonid__ = __addon__.getAddonInfo('id')
@@ -22,7 +15,9 @@ __useragent__ = "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr;
rv:1.9.0.1) Gecko/
DATA_PATH = os.path.join( xbmc.translatePath( "special://profile/addon_data/"
), __addonid__ )
RESOURCES_PATH = xbmc.translatePath( os.path.join( __cwd__, 'resources' ) )
sys.path.append( os.path.join( RESOURCES_PATH, "lib" ) )
-if not xbmcvfs.exists(DATA_PATH): xbmcvfs.mkdir(DATA_PATH)
+
+if not xbmcvfs.exists(DATA_PATH):
+ xbmcvfs.mkdir(DATA_PATH)
def log(msg):
xbmc.log( str( msg ),level=xbmc.LOGDEBUG )
@@ -32,8 +27,7 @@ def footprints():
log( "### author: %s" % __author__ )
log( "### version: %s" % __version__ )
-def get_html_source( url , save=False):
- """ fetch the html source """
+def get_html_source(url , save=False):
class AppURLopener(urllib.FancyURLopener):
version = __useragent__
urllib._urlopener = AppURLopener()
@@ -41,7 +35,7 @@ def get_html_source( url , save=False):
while succeed < 5:
try:
urllib.urlcleanup()
- sock = urllib.urlopen( url )
+ sock = urllib.urlopen(url)
htmlsource = sock.read()
if save: file( os.path.join( CACHE_PATH , save ) , "w" ).write(
htmlsource )
sock.close()
@@ -55,183 +49,155 @@ def get_html_source( url , save=False):
class NextAired:
def __init__(self):
+ footprints()
+ self.WINDOW = xbmcgui.Window( 10000 )
+ self.date = date.today()
self._parse_argv()
+ if self.BACKEND:
+ self.run_daemon()
+ else:
+ self.update_data()
+ if self.SILENT == "True":
+ self._set_alarm()
+ else:
+ self.show_gui()
+
+ def _parse_argv( self ):
+ try:
+ params = dict( arg.split( "=" ) for arg in sys.argv[ 1 ].split(
"&" ) )
+ except:
+ params = {}
+ log( "### params: %s" % params )
+ self.SILENT = params.get( "silent", "" )
+ self.BACKEND = params.get("backend", False )
+
+ def update_data(self):
self.nextlist = []
- testtime = os.path.join( DATA_PATH , "next_aired.db" )
- if xbmcvfs.exists(testtime):
- if time.time() - os.path.getmtime(testtime) > 21600: # time in
second for file peremption 43200=1/2day
- log( "###db old more than 24h, rescanning..." )
+ dbfile = os.path.join( DATA_PATH , "next_aired.db" )
+ if xbmcvfs.exists(dbfile):
+ if time.time() - os.path.getmtime(dbfile) > 86400:
+ log( "### db old more than 24h, rescanning..." )
self.scan_info()
else :
- log( "###db less than 24, fetch local data..." )
+ log( "### db less than 24, fetch local data..." )
self.current_show_data = self.get_list("next_aired.db")
- if self.current_show_data == "[]": self.scan_info()
- else:
- log( "###db doesn't exist, scanning for data..." )
+ if self.current_show_data == "[]":
+ self.scan_info()
+ else:
+ log( "### db doesn't exist, scanning for data..." )
self.scan_info()
if self.current_show_data:
- log( "###data available" )
+ log( "### data available" )
for show in self.current_show_data:
if show.get("Next Episode" , False):
self.nextlist.append(show)
- # log( "######################" )
- # for i in show.keys():
- # log( "###" + i + ": " + show[i] )
log( "### next list: %s shows ### %s" % ( len(self.nextlist) ,
self.nextlist ) )
self.nextlist = sorted( self.nextlist, key=lambda item: str(
item.get( "RFC3339", "~" ) ).lower(), reverse=False )
self.check_today_show()
self.push_data()
- else: log( "### no current show data..." )
- if self.PROGRESS:
- import next_aired_dialog
- next_aired_dialog.MyDialog(self.nextlist)
- if self.ALARM: self._set_alarm()
-
- def _parse_argv( self ):
- try:
- # parse sys.argv for params
- params = dict( arg.split( "=" ) for arg in sys.argv[ 1 ].split(
"&" ) )
- except:
- # no params passed
- params = {}
- # set our preferences
- log( params )
- self.ALARM = int( params.get( "alarm", "0" ) )
- self.PROGRESS = params.get( "silent", True ) == True
-
- def _set_alarm( self ):
- # only run if user/skinner preference
- if self.ALARM == "0": return
- # set the alarms command
- log( "### Alarm enabled: %s" % self.ALARM )
- command = "XBMC.RunScript(%s,silent=True&alarm=%d)" % ( os.path.join(
__cwd__, __file__ ), self.ALARM, )
- xbmc.executebuiltin( "AlarmClock(NextAired,%s,%d,true)" % ( command,
self.ALARM, ) )
-
- def check_today_show(self):
- self.todayshow = 0
- self.todaylist = []
- today = time.strftime('%Y-%m-%d',time.localtime())
- log( today )
- #log( time.strftime("%Y") )
- for show in self.nextlist:
- log( "################" )
- log( "###%s" % show.get("localname") )
-# test = timedelta(i.get("RFC3339", "0")) -
timedelta(time.strftime(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())))
-# log( test )
- if str(show.get("RFC3339" , "" )[:10]) == str(today):
- self.todayshow = self.todayshow + 1
- self.todaylist.append(show.get("localname"))
- log( "TODAY" )
- show["Today"] = "True"
- log( "###%s" % show.get("Next Episode", "") )
- log( "###%s" % show.get("RFC3339", "no rfc") )
- log( str(show.get("RFC3339", "")[:10]) )
- log( "###today show: %s - %s" % ( self.todayshow ,
str(self.todaylist).strip("[]") ) )
-
- def push_data(self):
- # grab the home window
- self.WINDOW = xbmcgui.Window( 10000 )
- # reset Total property for visible condition
- self.WINDOW.setProperty( "NextAired.Total" , str(len(self.nextlist)) )
- self.WINDOW.setProperty( "NextAired.TodayTotal" , str(self.todayshow) )
- self.WINDOW.setProperty( "NextAired.TodayShow" ,
str(self.todaylist).strip("[]") )
- for count in range( len(self.nextlist) ):
- # we clear title for visible condition
- self.WINDOW.clearProperty( "NextAired.%d.Title" % ( count + 1, ) )
- for count, current_show in enumerate( self.nextlist ):
- #log( "###%d %s" % ( count + 1 , current_show["localname"] ) )
- self.WINDOW.setProperty( "NextAired.%d.Today" % ( count + 1, ),
current_show.get( "Today" , "False"))
- self.WINDOW.setProperty( "NextAired.%d.ShowTitle" % ( count + 1,
), current_show.get( "localname", "" ))
- try:
- next = current_show.get( "Next Episode","").split("^")
- self.WINDOW.setProperty( "NextAired.%d.NextDate" % ( count +
1, ), next[2] or "")
- self.WINDOW.setProperty( "NextAired.%d.NextTitle" % ( count +
1, ), next[1] or "")
- self.WINDOW.setProperty( "NextAired.%d.NextNumber" % ( count +
1, ), next[0] or "")
- except: print_exc()
- try:
- latest = current_show.get("Latest Episode","").split("^")
- self.WINDOW.setProperty( "NextAired.%d.LatestDate" % ( count +
1, ), latest[2] or "")
- self.WINDOW.setProperty( "NextAired.%d.LatestTitle" % ( count
+ 1, ), latest[1] or "")
- self.WINDOW.setProperty( "NextAired.%d.LatestNumber" % ( count
+ 1, ), latest[0] or "")
- except: print_exc()
- self.WINDOW.setProperty( "NextAired.%d.Airtime" % ( count + 1, ),
current_show.get("Airtime", "" ))
- self.WINDOW.setProperty( "NextAired.%d.Showpath" % ( count + 1, ),
current_show.get("path", "" ))
- self.WINDOW.setProperty( "NextAired.%d.Status" % ( count + 1, ),
current_show.get("Status", "" ))
- self.WINDOW.setProperty( "NextAired.%d.ep_img" % ( count + 1, ),
current_show.get("ep_img", "" ))
- self.WINDOW.setProperty( "NextAired.%d.Network" % ( count + 1, ),
current_show.get("Network", "" ))
- self.WINDOW.setProperty( "NextAired.%d.Started" % ( count + 1, ),
current_show.get("Started", "" ))
- self.WINDOW.setProperty( "NextAired.%d.Classification" % ( count +
1, ), current_show.get("Classification", "" ))
- self.WINDOW.setProperty( "NextAired.%d.Genres" % ( count + 1, ),
current_show.get("Genres", "" ))
- self.WINDOW.setProperty( "NextAired.%d.Premiered" % ( count + 1,
), current_show.get("Premiered", "" ))
- self.WINDOW.setProperty( "NextAired.%d.Country" % ( count + 1, ),
current_show.get("Country", "" ))
- self.WINDOW.setProperty( "NextAired.%d.Runtime" % ( count + 1, ),
current_show.get("Runtime", "" ))
- try:
- airday, shortime = current_show.get("Airtime", " at "
).split(" at ")
- self.WINDOW.setProperty( "NextAired.%d.airday" % ( count + 1,
), airday)
- self.WINDOW.setProperty( "NextAired.%d.shortime" % ( count +
1, ), shortime)
- except: log( "### %s" % current_show.get("Airtime", " at " ) )
- #log( airday, shortime )
-
+ else:
+ log( "### no current show data..." )
def scan_info(self):
- if self.PROGRESS:
+ if self.SILENT == "":
DIALOG_PROGRESS = xbmcgui.DialogProgress()
DIALOG_PROGRESS.create( __language__(32101) , __language__(32102) )
socket.setdefaulttimeout(10)
- self.total_reaquest = 0
- self.total_next_found = 0
- self.total_error = 0
- self.total_canceled = 0
- self.total_current = 0
- self.total_error = 0
self.count = 0
self.current_show_data = []
self.canceled = self.get_list("canceled.db")
- if not self.listing(): self.close("error listing")
+ if not self.listing():
+ self.close("error listing")
self.total_show = len(self.TVlist)
- log( "###canceled list: %s " % self.canceled )
-
+ log( "### canceled list: %s " % self.canceled )
for show in self.TVlist:
current_show = {}
- self.count = self.count +1
- if self.PROGRESS:
+ self.count += 1
+ if self.SILENT == "":
percent = int( float( self.count * 100 ) / self.total_show )
DIALOG_PROGRESS.update( percent , __language__(32102) , "%s" %
show[0] )
if DIALOG_PROGRESS.iscanceled():
DIALOG_PROGRESS.close()
xbmcgui.Dialog().ok(__language__(32103),__language__(32104))
break
- log( "###%s" % show[0] )
+ log( "### %s" % show[0] )
current_show["localname"] = show[0]
current_show["path"] = show[1]
current_show["thumbnail"] = show[2]
- if show[0] in self.canceled: log( "### %s canceled/Ended" %
show[0] )
+ current_show["fanart"] = show[3]
+ if show[0] in self.canceled:
+ log( "### %s canceled/Ended" % show[0] )
else:
self.get_show_info( current_show )
log( current_show )
- if current_show.get("Status") == "Canceled/Ended":
self.canceled.append(current_show["localname"])
- else: self.current_show_data.append(current_show)
-
+ if current_show.get("Status") == "Canceled/Ended":
+ self.canceled.append(current_show["localname"])
+ else:
+ self.current_show_data.append(current_show)
self.save_file( self.canceled , "canceled.db")
self.save_file( self.current_show_data , "next_aired.db")
- if self.PROGRESS:DIALOG_PROGRESS.close()
-
+ if self.SILENT == "":
+ DIALOG_PROGRESS.close()
+
+ def listing(self):
+ json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetTVShows", "params": {"properties": ["file", "thumbnail",
"fanart"], "sort": { "method": "label" } }, "id": 1}')
+ json_response = re.compile( "{(.*?)}", re.DOTALL ).findall(json_query)
+ log( json_response )
+ self.TVlist = []
+ for tvshowitem in json_response:
+ log( tvshowitem )
+ findtvshowname = re.search( '"label": ?"(.*?)",["\n]', tvshowitem )
+ if findtvshowname:
+ tvshowname = ( findtvshowname.group(1) )
+ findpath = re.search( '"file": ?"(.*?)",["\n]', tvshowitem )
+ if findpath:
+ path = (findpath.group(1))
+ else:
+ path = ''
+ findthumbnail = re.search( '"thumbnail": ?"(.*?)",["\n]',
tvshowitem )
+ if findthumbnail:
+ thumbnail = (findthumbnail.group(1))
+ else:
+ thumbnail = ''
+ findfanart = re.search( '"fanart": ?"(.*?)",["\n]', tvshowitem
)
+ if findfanart:
+ fanart = (findfanart.group(1))
+ else:
+ fanart = ""
+ self.TVlist.append( ( tvshowname , path, thumbnail, fanart ) )
+ log( "### list: %s" % self.TVlist )
+ return self.TVlist
+
def get_show_info( self , current_show ):
log( "### get info %s" % current_show["localname"] )
# get info for show with exact name
log( "### searching for %s" % current_show["localname"] )
- log( "###search url:
http://services.tvrage.com/tools/quickinfo.php?show=%s" % urllib.quote_plus(
current_show["localname"] ) ) #DEBUG
+ log( "### search url:
http://services.tvrage.com/tools/quickinfo.php?show=%s" % urllib.quote_plus(
current_show["localname"] ) )
result_info = get_html_source(
"http://services.tvrage.com/tools/quickinfo.php?show=%s" % urllib.quote_plus(
current_show["localname"]))
log( "### parse informations" )
- #log( "### %s" % result_info )
result = re.findall("(?m)(.*)@(.*)", result_info)
current_show["ep_img"] = current_show["thumbnail"]
if result:
# get short tvshow info and next aired episode
for item in result:
current_show[item[0].replace("<pre>" , "")] = item[1]
- #log( "### %s : %s " % ( item[0].replace("<pre>" , "") ,
item[1] ) ) #DEBUG
+ def check_today_show(self):
+ self.todayshow = 0
+ self.todaylist = []
+ log( self.date )
+ for show in self.nextlist:
+ log( "################" )
+ log( "### %s" % show.get("localname") )
+ if show.get("RFC3339" , "" )[:10] == self.date:
+ self.todayshow = self.todayshow + 1
+ self.todaylist.append(show.get("localname"))
+ log( "TODAY" )
+ show["Today"] = "True"
+ log( "### %s" % show.get("Next Episode", "") )
+ log( "### %s" % show.get("RFC3339", "no rfc") )
+ log( str(show.get("RFC3339", "")[:10]) )
+ log( "### today show: %s - %s" % ( self.todayshow ,
str(self.todaylist).strip("[]") ) )
def get_list(self , listname ):
path = os.path.join( DATA_PATH , listname )
@@ -239,7 +205,7 @@ class NextAired:
log( "### Load list: %s" % path )
return self.load_file(path)
else:
- log( "### Load list: no file found! generating %s !" % listname )
+ log( "### Load list: %s not found!" % listname )
return []
def load_file( self , file_path ):
@@ -253,41 +219,136 @@ class NextAired:
def save_file( self , txt , filename):
path = os.path.join( DATA_PATH , filename )
try:
- if txt:file( path , "w" ).write( repr( txt ) )
+ if txt:
+ file( path , "w" ).write( repr( txt ) )
except:
print_exc()
log( "### ERROR could not save file %s" % DATA_PATH )
- def listing(self):
- # json statement for tv shows
- json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetTVShows", "params": {"properties": ["file", "thumbnail"],
"sort": { "method": "label" } }, "id": 1}')
- json_response = re.compile( "{(.*?)}", re.DOTALL ).findall(json_query)
- log( json_response )
- self.TVlist = []
- for tvshowitem in json_response:
- log( tvshowitem )
- findtvshowname = re.search( '"label": ?"(.*?)",["\n]', tvshowitem )
- if findtvshowname:
- tvshowname = ( findtvshowname.group(1) )
- findpath = re.search( '"file": ?"(.*?)",["\n]', tvshowitem )
- if findpath:
- path = (findpath.group(1))
- else:
- path = ''
- findthumbnail = re.search( '"thumbnail": ?"(.*?)",["\n]',
tvshowitem )
- if findthumbnail:
- thumbnail = (findthumbnail.group(1))
- else:
- thumbnail = ''
- self.TVlist.append( ( tvshowname , path, thumbnail ) )
- log( self.TVlist )
- return self.TVlist
+ def push_data(self):
+ self.WINDOW.setProperty("NextAired.Total" , str(len(self.nextlist)) )
+ self.WINDOW.setProperty("NextAired.TodayTotal" , str(self.todayshow) )
+ self.WINDOW.setProperty("NextAired.TodayShow" ,
str(self.todaylist).strip("[]") )
+ # DEPRECATED
+ for count in range( len(self.nextlist) ):
+ self.WINDOW.clearProperty("NextAired.%d.ShowTitle" % ( count + 1,
))
+ for count, current_show in enumerate( self.nextlist ):
+ self.WINDOW.setProperty("NextAired.%d.Today" % ( count + 1, ),
current_show.get( "Today" , "False"))
+ self.WINDOW.setProperty("NextAired.%d.ShowTitle" % ( count + 1, ),
current_show.get( "localname", ""))
+ try:
+ next = current_show.get("Next Episode","").split("^")
+ self.WINDOW.setProperty("NextAired.%d.NextDate" % ( count + 1,
), next[2] or "")
+ self.WINDOW.setProperty("NextAired.%d.NextTitle" % ( count +
1, ), next[1] or "")
+ self.WINDOW.setProperty("NextAired.%d.NextNumber" % ( count +
1, ), next[0] or "")
+ except:
+ print_exc()
+ try:
+ latest = current_show.get("Latest Episode","").split("^")
+ self.WINDOW.setProperty("NextAired.%d.LatestDate" % ( count +
1, ), latest[2] or "")
+ self.WINDOW.setProperty("NextAired.%d.LatestTitle" % ( count +
1, ), latest[1] or "")
+ self.WINDOW.setProperty("NextAired.%d.LatestNumber" % ( count
+ 1, ), latest[0] or "")
+ except:
+ print_exc()
+ self.WINDOW.setProperty("NextAired.%d.Airtime" % ( count + 1, ),
current_show.get("Airtime", ""))
+ self.WINDOW.setProperty("NextAired.%d.Showpath" % ( count + 1, ),
current_show.get("path", ""))
+ self.WINDOW.setProperty("NextAired.%d.Status" % ( count + 1, ),
current_show.get("Status", ""))
+ self.WINDOW.setProperty("NextAired.%d.ep_img" % ( count + 1, ),
current_show.get("ep_img", ""))
+ self.WINDOW.setProperty("NextAired.%d.Network" % ( count + 1, ),
current_show.get("Network", ""))
+ self.WINDOW.setProperty("NextAired.%d.Started" % ( count + 1, ),
current_show.get("Started", ""))
+ self.WINDOW.setProperty("NextAired.%d.Classification" % ( count +
1, ), current_show.get("Classification", ""))
+ self.WINDOW.setProperty("NextAired.%d.Genres" % ( count + 1, ),
current_show.get("Genres", ""))
+ self.WINDOW.setProperty("NextAired.%d.Premiered" % ( count + 1, ),
current_show.get("Premiered", ""))
+ self.WINDOW.setProperty("NextAired.%d.Country" % ( count + 1, ),
current_show.get("Country", ""))
+ self.WINDOW.setProperty("NextAired.%d.Runtime" % ( count + 1, ),
current_show.get("Runtime", ""))
+ self.WINDOW.setProperty("NextAired.%d.Fanart" % ( count + 1, ),
current_show.get("Fanart", ""))
+ try:
+ airday, shortime = current_show.get("Airtime", " at "
).split(" at ")
+ self.WINDOW.setProperty("NextAired.%d.airday" % ( count + 1,
), airday)
+ self.WINDOW.setProperty("NextAired.%d.shortime" % ( count + 1,
), shortime)
+ except:
+ log( "### %s" % current_show.get("Airtime", " at "))
+
+ def show_gui(self):
+ import next_aired_dialog
+ next_aired_dialog.MyDialog(self.nextlist, self.set_labels)
+
+ def _set_alarm( self ):
+ log( "### Alarm enabled" )
+ command = "XBMC.RunScript(%s,silent=True&alarm=1200)" % (
os.path.join( __cwd__, __file__ ) )
+ xbmc.executebuiltin( "AlarmClock(NextAired,%s,1200,true)" % command )
+
+ def run_daemon(self):
+ self._stop = False
+ self.previousitem = ''
+ self.current_show_data = self.get_list("next_aired.db")
+ if self.current_show_data == "[]":
+ self._stop = True
+ while not self._stop:
+ self.selecteditem = xbmc.getInfoLabel("ListItem.TVShowTitle")
+ if self.selecteditem != self.previousitem:
+ self.WINDOW.clearProperty("NextAired.Label")
+ self.previousitem = self.selecteditem
+ for item in self.current_show_data:
+ if self.selecteditem == item.get("localname", "") and
item.get("Next Episode" , False):
+ self.set_labels('windowproperty', item)
+ break
+ xbmc.sleep(100)
+ if not xbmc.getCondVisibility("Window.IsVisible(10025)"):
+ self.WINDOW.clearProperty("NextAired.Label")
+ self._stop = True
+
+ def set_labels(self, label, item, return_items = False ):
+ if label == "windowproperty":
+ label = xbmcgui.Window( 10000 )
+ prefix = 'NextAired.'
+ label.setProperty(prefix + "Label", item.get("localname", ""))
+ label.setProperty(prefix + "Thumb", item.get("ep_img", ""))
+ else:
+ label = xbmcgui.ListItem()
+ prefix = ''
+ label.setLabel(item.get("localname", ""))
+ label.setThumbnailImage(item.get("ep_img", ""))
+ label.setProperty(prefix + "AirTime", item.get("Airtime", ""))
+ label.setProperty(prefix + "Path", item.get("path", ""))
+ label.setProperty(prefix + "Status", item.get("Status", ""))
+ label.setProperty(prefix + "Network", item.get("Network", ""))
+ label.setProperty(prefix + "Started", item.get("Started", ""))
+ label.setProperty(prefix + "Classification",
item.get("Classification", ""))
+ label.setProperty(prefix + "Genre", item.get("Genres", ""))
+ label.setProperty(prefix + "Premiered", item.get("Premiered", ""))
+ label.setProperty(prefix + "Country", item.get("Country", ""))
+ label.setProperty(prefix + "Runtime", item.get("Runtime", ""))
+ label.setProperty(prefix + "Fanart", item.get("fanart", ""))
+ if item.get("RFC3339" , "" )[:10] == self.date:
+ label.setProperty(prefix + "Today", "True")
+ else:
+ label.setProperty(prefix + "Today", "False")
+ try:
+ next = item.get("Next Episode","").split("^")
+ label.setProperty(prefix + "NextDate", next[2] or "")
+ label.setProperty(prefix + "NextTitle", next[1] or "")
+ label.setProperty(prefix + "NextNumber", next[0] or "")
+ except:
+ print_exc()
+ try:
+ latest = item.get("Latest Episode","").split("^")
+ label.setProperty(prefix + "LatestDate", latest[2] or "")
+ label.setProperty(prefix + "LatestTitle", latest[1] or "")
+ label.setProperty(prefix + "LatestNumber", latest[0] or "")
+ except:
+ print_exc()
+ try:
+ airday, shorttime = item.get("Airtime", " at ").split(" at ")
+ label.setProperty(prefix + "AirDay", airday)
+ label.setProperty(prefix + "ShortTime", shorttime)
+ except:
+ log( "### %s" % item.get("Airtime", " at "))
+ if return_items:
+ return label, airday
def close(self , msg ):
- log( msg )
+ log( "### %s" % msg )
exit
-if ( __name__ == "__main__" ):
- footprints()
+if ( __name__ == "__main__" ):
NextAired()
-
diff --git a/script.tv.show.next.aired/resources/language/English/strings.xml
b/script.tv.show.next.aired/resources/language/English/strings.xml
index 037ecfe..b6f0360 100644
--- a/script.tv.show.next.aired/resources/language/English/strings.xml
+++ b/script.tv.show.next.aired/resources/language/English/strings.xml
@@ -1,15 +1,16 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<strings>
- <string id="450">Latest Episode</string>
- <string id="451">Next Episode</string>
- <string id="452">Airtime</string>
- <string id="453">Network</string>
- <string id="454">URL</string>
+ <string id="450">TV Guide</string>
<string id="32101">TV Show - Next Aired</string>
<string id="32102">Getting information...</string>
<string id="32103">CANCELED</string>
<string id="32104">Operation canceled by user.</string>
<string id="45000">Display</string>
- <string id="45001">View Mode</string>
+ <string id="45001">Thumbnail type</string>
+ <string id="45002">Download banners (Logo Downloader required)</string>
+ <string id="45003">Download logos (Logo Downloader required)</string>
+ <string id="45004">Enable background fanart</string>
+ <string id="45005">Enable 16:9 preview thumbs</string>
+ <string id="45006">Download 16:9 preview thumbs (Logo Downloader
required)</string>
</strings>
diff --git a/script.tv.show.next.aired/resources/language/Portuguese
(Brazil)/strings.xml b/script.tv.show.next.aired/resources/language/Portuguese
(Brazil)/strings.xml
index 3a57191..063a964 100644
--- a/script.tv.show.next.aired/resources/language/Portuguese
(Brazil)/strings.xml
+++ b/script.tv.show.next.aired/resources/language/Portuguese
(Brazil)/strings.xml
@@ -1,14 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<strings>
- <string id="450">Ãltimo Episódio</string>
- <string id="451">Próximo Episódio</string>
- <string id="452">Data Exibição</string>
- <string id="453">Network</string>
- <string id="454">URL</string>
+ <string id="450">TV Guide</string>
<string id="32101">TV Show - Next Aired</string>
<string id="32102">Pegando Informação...</string>
<string id="32103">CANCELADO</string>
<string id="32104">Operação cancelada pelo Usuário.</string>
- <string id="45000">Display</string>
- <string id="45001">View Mode</string>
</strings>
diff --git a/script.tv.show.next.aired/resources/lib/next_aired_dialog.py
b/script.tv.show.next.aired/resources/lib/next_aired_dialog.py
index 2675205..2210c19 100644
--- a/script.tv.show.next.aired/resources/lib/next_aired_dialog.py
+++ b/script.tv.show.next.aired/resources/lib/next_aired_dialog.py
@@ -1,132 +1,86 @@
-# -*- coding: utf-8 -*-
-
+from datetime import date
from traceback import print_exc
-import xbmc
-import xbmcgui
-import xbmcaddon
+import xbmc, xbmcgui, xbmcaddon
__addon__ = xbmcaddon.Addon()
__cwd__ = __addon__.getAddonInfo('path')
-
-class MainGui( xbmcgui.WindowXMLDialog ):
- # control id's
- CONTROL_MAIN_LIST_START = 50
- CONTROL_MAIN_LIST_END = 59
-
- def __init__( self, *args, **kwargs ):
- xbmcgui.WindowXMLDialog.__init__( self )
- xbmc.executebuiltin( "Skin.Reset(AnimeWindowXMLDialogClose)" )
- xbmc.executebuiltin( "Skin.SetBool(AnimeWindowXMLDialogClose)" )
- self.next_ep = kwargs.get( "listing" )
+class Gui( xbmcgui.WindowXML ):
+ def __init__(self, *args, **kwargs):
+ xbmcgui.WindowXML.__init__( self )
+ self.nextlist = kwargs['listing']
+ self.setLabels = kwargs['setLabels']
def onInit(self):
- try:
- self.set_container()
- id = 50 + int( __addon__.getSetting( "view_mode" ) )
- xbmc.executebuiltin( "Container.SetViewMode(%i)" % id )
- except:
- print_exc()
-
- def set_container(self):
- try:
- # reset all container
- self.clearList()
- for episode in self.next_ep:
- #On crée un element de liste, avec son label
- listitem = xbmcgui.ListItem( "%s" % episode["Show Name"] )
- for keys in episode:
- if keys == "Next Episode":
- listitem.setProperty("next_ep_se", "Season %s Episode
%s" % (episode[keys].split("^")[0].split("x")[0] ,
episode[keys].split("^")[0].split("x")[1]))
- listitem.setProperty("next_ep_season",
episode[keys].split("^")[0].split("x")[0])
- listitem.setProperty("next_ep_num",
episode[keys].split("^")[0].split("x")[1])
- listitem.setProperty("next_ep_name",
episode[keys].split("^")[1])
- next_ep_date = episode[keys].split("^")[2].split("/")
- if len(next_ep_date) == 3:
listitem.setProperty("next_ep_date", "%s %s %s" % ( next_ep_date[1] ,
next_ep_date[0] , next_ep_date[2] ) )
- elif len(next_ep_date) == 2:
listitem.setProperty("next_ep_date", "%s %s" % ( next_ep_date[0] ,
next_ep_date[1] ) )
- else: listitem.setProperty("next_ep_date",
next_ep_date[0] )
- #else:
- listitem.setProperty(keys.replace( "+", "" ),
episode[keys].replace( "^", ". " ).replace( "|", "/" ))
-
- #print "-"*100
- #print keys
- #print repr( episode[keys] )
- #print "-"*100
- #infos availables:
- #Status
- #ep_img
- #RFC3339
- #GMT+0 NODST
- #Network
- #Classification
- #Started
- #Show Name
- #Show path
- #Show URL
- #Genres
- #Premiered
- #Airtime
- #Ended
- #Show ID
- #Country
- #Next Episode
- #Runtime
- #dbname
- #Latest Episode
-
- #On injecte l'élément liste à la liste xml
- self.addItem( listitem )
- except:
- print_exc()
+ num = int( __addon__.getSetting( "ThumbType" ) )
+ xbmc.executebuiltin( "SetProperty(TVGuide.ThumbType,%i,Home)" % num )
+ if __addon__.getSetting( "PreviewThumbs" ) == 'true':
+ xbmc.executebuiltin( "SetProperty(TVGuide.PreviewThumbs,1,Home)" )
+ else:
+ xbmc.executebuiltin( "ClearProperty(TVGuide.PreviewThumbs,Home)" )
+ if __addon__.getSetting( "BackgroundFanart" ) == 'true':
+ xbmc.executebuiltin(
"SetProperty(TVGuide.BackgroundFanart,1,Home)" )
+ else:
+ xbmc.executebuiltin(
"ClearProperty(TVGuide.BackgroundFanart,Home)" )
+ self.settingsOpen = False
+ self.listitems =
{'Monday':[],'Tuesday':[],'Wednesday':[],'Thursday':[],'Friday':[],'Saturday':[],'Sunday':[]}
+ self.days =
['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
+ self.weekday = date.today().weekday()
+ self.dayname = self.days[self.weekday]
+ self.set_properties()
+ self.fill_containers()
+ self.set_focus()
+
+ def set_properties(self):
+ for item in self.nextlist:
+ listitem, airday = self.setLabels('listitem', item, True)
+ airdays = airday.split(', ')
+ for day in airdays:
+ self.listitems[day].append(listitem)
+
+ def fill_containers(self):
+ for count, day in enumerate (self.days):
+ self.getControl( 200 + count ).reset()
+ self.getControl( 200 + count ).addItems( self.listitems[day] )
+
+ def set_focus(self):
+ if self.listitems[self.dayname] == []:
+ dayFound = False
+ for count, day in enumerate (self.days):
+ if self.listitems[day] != []:
+ self.setFocus ( self.getControl ( 200 + count ) )
+ dayFound = True
+ break
+ if dayFound == False:
+ self.setFocus( self.getControl( 9000 ) )
+ else:
+ self.setFocus( self.getControl( 200 + self.weekday ) )
def onClick(self, controlID):
- """
- Notice: onClick not onControl
- Notice: it gives the ID of the control not the control object
- """
- try:
- if controlID == 6:
- kb = xbmc.Keyboard( "", "Enter your TV Show" )
- kb.doModal()
- if kb.isConfirmed() and kb.getText():
- user_request = kb.getText()
- from scraper import getDetails
- self.next_ep = getDetails( user_request )
- del getDetails
- self.set_container()
- elif controlID == 8:
- __addon__.openSettings()
- except:
- print_exc()
-
+ if controlID == 8:
+ self.settingsOpen = True
+ __addon__.openSettings()
def onFocus(self, controlID):
pass
- # Cette def permet de gérer les actions en fonctions de la touche du
clavier pressée
def onAction( self, action ):
- #( ACTION_PARENT_DIR, ACTION_PREVIOUS_MENU, ACTION_CONTEXT_MENU, )
- if action in ( 9, 10, 92, 216, 247, 257, 275, 61467, 61448, ):
self._close_dialog()
-
- def _close_dialog( self ):
- for id in range( self.CONTROL_MAIN_LIST_START,
self.CONTROL_MAIN_LIST_END + 1 ):
- try:
- if xbmc.getCondVisibility( "Control.IsVisible(%i)" % id ):
- __addon__.setSetting( "view_mode", str( id - 50 ) )
- break
- except:
- pass
- import time
- xbmc.executebuiltin( "Skin.Reset(AnimeWindowXMLDialogClose)" )
- time.sleep( .4 )
- self.close()
-
-def MyDialog(tv_list):
- #"MyDialog.xml", __cwd__, current_skin, force_fallback sert a ouvrir le
xml du script
- w = MainGui( "DialogNextAired.xml", __cwd__, "DefaultSkin" ,
listing=tv_list )
+ if action in ( 9, 10, 92, 216, 247, 257, 275, 61467, 61448, ):
+ self.close()
+ if action in ( 7, 10, 92, ) and self.settingsOpen:
+ num = int( __addon__.getSetting( "ThumbType" ) )
+ xbmc.executebuiltin( "SetProperty(TVGuide.ThumbType,%i,Home)" %
num )
+ if __addon__.getSetting( "PreviewThumbs" ) == 'true':
+ xbmc.executebuiltin(
"SetProperty(TVGuide.PreviewThumbs,1,Home)" )
+ else:
+ xbmc.executebuiltin(
"ClearProperty(TVGuide.PreviewThumbs,Home)" )
+ if __addon__.getSetting( "BackgroundFanart" ) == 'true':
+ xbmc.executebuiltin(
"SetProperty(TVGuide.BackgroundFanart,1,Home)" )
+ else:
+ xbmc.executebuiltin(
"ClearProperty(TVGuide.BackgroundFanart,Home)" )
+ self.settingsOpen = False
+
+def MyDialog(tv_list, setLabels):
+ w = Gui( "script-NextAired-TVGuide.xml", __cwd__, "Default" ,
listing=tv_list, setLabels=setLabels)
w.doModal()
del w
-
-def test():
- tv_list = [{'Status': 'Returning Series', 'ep_img': 'C:\\Program
Files\\XBMC\\userdata\\Thumbnails\\Video\\3\\3ae2ce22.tbn', 'RFC3339':
'2010-08-16T22:00:00-4:00', 'GMT+0 NODST': '1282003200', 'Network': 'Showtime',
'Classification': 'Scripted', 'Started': 'Aug/07/2005', 'Show Name': 'Weeds',
'Show URL': 'http://www.tvrage.com/Weeds', 'Genres': 'Comedy | Crime | Drama',
'Premiered': '2005', 'Airtime': 'Monday at 10:00 pm', 'Ended': '', 'Show ID':
'6554', 'Country': 'USA', 'Next Episode': '06x01^Season 6
Premiere^Aug/16/2010', 'Runtime': '30', 'dbname': 'Weeds', 'Latest Episode':
'05x13^All About My Mom^Aug/31/2009'}, {'Status': 'Returning Series', 'ep_img':
'C:\\Program Files\\XBMC\\userdata\\Thumbnails\\Video\\a\\af34f363.tbn',
'RFC3339': '2010-06-19T18:50:00+01:00', 'GMT+0 NODST': '1276962600', 'Network':
'BBC One (United Kingdom)', 'Classification': 'Scripted', 'Started':
'Mar/26/2005', 'Show Name': 'Doctor Who (2005)', 'Show URL':
'http://www.tvrage.com/DoctorWho_2005', 'Genres': 'Action | Adventure |
Sci-Fi', 'Premiered': '2005', 'Airtime': 'Saturday at 07:00 pm', 'Ended': '',
'Country': 'United Kingdom', 'Show ID': '3332', 'Special Airtime': '06:50 pm',
'Next Episode': '05x12^The Pandorica Opens (1)^Jun/19/2010', 'Runtime': '50',
'dbname': 'Doctor Who (2005)', 'Latest Episode': '05x11^The
Lodger^Jun/12/2010'}, {'Status': 'New Series', 'ep_img': 'C:\\Program
Files\\XBMC\\userdata\\Thumbnails\\Video\\d\\d2463954.tbn', 'Genres': 'Action |
Drama', 'GMT+0 NODST': '', 'Network': 'Starz', 'Classification': 'Scripted',
'Started': 'Jan/22/2010', 'Show Name': 'Spartacus: Blood and Sand', 'Show URL':
'http://www.tvrage.com/Spartacus-Blood_and_Sand', 'Premiered': '2010',
'Airtime': 'Friday at 10:00 pm', 'Ended': '', 'Show ID': '21885', 'Country':
'USA', 'Next Episode': '02x01^Season 2, Episode 1^Jan/2011', 'Runtime': '60',
'dbname': 'Spartacus Blood and Sand', 'Latest Episode': '01x13^Kill Them
All^Apr/16/2010'}, {'Status': 'Returning Series', 'ep_img': 'C:\\Program
Files\\XBMC\\userdata\\Thumbnails\\Video\\8\\877 c6a59.tbn', 'RFC3339':
'2010-09-26T21:00:00-4:00', 'GMT+0 NODST': '1285542000', 'Network': 'Showtime',
'Classification': 'Scripted', 'Started': 'Oct/01/2006', 'Show Name': 'Dexter',
'Show URL': 'http://www.tvrage.com/Dexter', 'Genres': 'Crime | Drama',
'Premiered': '2006', 'Airtime': 'Sunday at 09:00 pm', 'Ended': '', 'Show ID':
'7926', 'Country': 'USA', 'Next Episode': '05x01^Season 5, Episode
1^Sep/26/2010', 'Runtime': '60', 'dbname': 'Dexter', 'Latest Episode':
'04x12^The Getaway^Dec/13/2009'}, {'Status': 'Returning Series', 'ep_img':
'C:\\Program Files\\XBMC\\userdata\\Thumbnails\\Video\\1\\1b5ead11.tbn',
'Genres': 'Action | Adventure | Crime | Drama', 'GMT+0 NODST': '', 'Network':
'CBS', 'Classification': 'Scripted', 'Started': 'Sep/22/2005', 'Show Name':
'Criminal Minds', 'Show URL': 'http://www.tvrage.com/Criminal_Minds',
'Premiered': '2005', 'Airtime': 'Wednesday at 09:00 pm', 'Ended': '', 'Show
ID': '3171', 'Country': 'USA', 'Next Episode': '06x01^Season 6, Episode
1^Sep/2010', 'Runtime': '60', 'dbname': 'Esprits Criminels', 'Latest Episode':
'05x23^Our Darkest Hour^May/26/2010'}, {'Status': 'Returning Series', 'ep_img':
'C:\\Program Files\\XBMC\\userdata\\Thumbnails\\Video\\1\\160b5358.tbn',
'RFC3339': '2010-09-11T22:00:00-4:00', 'GMT+0 NODST': '1284249600', 'Network':
'Showtime', 'Classification': 'Scripted', 'Started': 'Aug/13/2007', 'Show
Name': 'Californication', 'Show URL': 'http://www.tvrage.com/Californication',
'Genres': 'Comedy | Drama', 'Premiered': '2007', 'Airtime': 'Sunday at 10:00
pm', 'Ended': '', 'Show ID': '15319', 'Country': 'USA', 'Next Episode':
'04x01^Season 4, Episode 1^Sep/11/2010', 'Runtime': '30', 'dbname':
'Californication', 'Latest Episode': '03x12^Mia Culpa^Dec/13/2009'}, {'Status':
'New Series', 'ep_img': 'C:\\Program
Files\\XBMC\\userdata\\Thumbnails\\Video\\f\\fb6829f7.tbn', 'RFC3339':
'2010-06-14T12:00:00+09:00', 'GMT+0 NODST': '1276477200', 'Network': 'TV Tokyo
(Japan)', 'Classification': 'Animation', 'Started': 'Oct/12/2009', 'Show Name':
'Fairy Tail', 'Show URL': 'http ://www.tvrage.com/shows/id-24288', 'Genres':
'Anime | Action | Adventure | Drama | Fantasy', 'Premiered': '2009', 'Airtime':
'Monday', 'Ended': '', 'Show ID': '24288', 'Country': 'Japan', 'Next Episode':
'01x34^Gerard^Jun/14/2010', 'Runtime': '30', 'dbname': 'Fairy Tail', 'Latest
Episode': '01x33^Tower of Paradise^Jun/07/2010'}, {'Status': 'Returning
Series', 'ep_img': 'C:\\Program
Files\\XBMC\\userdata\\Thumbnails\\Video\\2\\2377d88e.tbn', 'RFC3339':
'2010-06-17T19:30:00+09:00', 'GMT+0 NODST': '1276763400', 'Network': 'TV Tokyo
(Japan)', 'Classification': 'Animation', 'Started': 'Feb/15/2007', 'Show Name':
'Naruto: Shippuuden', 'Show URL': 'http://www.tvrage.com/Naruto_Shippuuden',
'Genres': 'Anime | Action | Adventure | Comedy | Drama | Fantasy | Mystery',
'Premiered': '2007', 'Airtime': 'Thursday at 07:30 pm', 'Ended': '', 'Show ID':
'14748', 'Country': 'Japan', 'Next Episode': '07x22^Nine-Tails Capture
Complete^Jun/17/2010', 'Runtime': '30', 'dbname': 'Naruto', 'Latest Episode':
'07x21^Crisis! Sage Mode Disappears^Jun/10/2010'}, {'Status': 'Returning
Series', 'ep_img': 'C:\\Program
Files\\XBMC\\userdata\\Thumbnails\\Video\\1\\1b84f8e2.tbn', 'RFC3339':
'2010-06-15T19:30:00+09:00', 'GMT+0 NODST': '1276590600', 'Network': 'TV Tokyo
(Japan)', 'Classification': 'Animation', 'Started': 'Oct/05/2004', 'Show Name':
'Bleach (JP)', 'Show URL': 'http://www.tvrage.com/Bleach_JP', 'Genres': 'Anime
| Action | Adventure | Fantasy', 'Premiered': '2004', 'Airtime': 'Wednesday at
07:30 pm', 'Ended': '', 'Show ID': '2825', 'Country': 'Japan', 'Next Episode':
'14x20^The Approaching Breath of Death, the King Who Rules Over
Death!^Jun/15/2010', 'Runtime': '30', 'dbname': 'Bleach', 'Latest Episode':
'14x19^Hitsugaya, the Suicidal Frozen Heavens Hundred Flowers
Funeral!^Jun/08/2010'}, {'Status': 'Returning Series', 'ep_img': 'C:\\Program
Files\\XBMC\\userdata\\Thumbnails\\Video\\1\\15b02f06.tbn', 'RFC3339':
'2010-06-17T19:30:00+09:00', 'GMT+0 NODST': '1276763400', 'Network': 'TV Tokyo
(Japan)', 'Classification': 'Animation', 'Starte d': 'Feb/15/2007', 'Show
Name': 'Naruto: Shippuuden', 'Show URL':
'http://www.tvrage.com/Naruto_Shippuuden', 'Genres': 'Anime | Action |
Adventure | Comedy | Drama | Fantasy | Mystery', 'Premiered': '2007',
'Airtime': 'Thursday at 07:30 pm', 'Ended': '', 'Show ID': '14748', 'Country':
'Japan', 'Next Episode': '07x22^Nine-Tails Capture Complete^Jun/17/2010',
'Runtime': '30', 'dbname': 'Naruto Shippuuden', 'Latest Episode':
'07x21^Crisis! Sage Mode Disappears^Jun/10/2010'}]
- MyDialog(tv_list)
diff --git a/script.tv.show.next.aired/resources/settings.xml
b/script.tv.show.next.aired/resources/settings.xml
index 731a2b9..3d95a29 100644
--- a/script.tv.show.next.aired/resources/settings.xml
+++ b/script.tv.show.next.aired/resources/settings.xml
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
<setting type="lsep" label="45000" />
- <setting id="view_mode" type="enum" values="Banner|Poster|Wide"
label="45001" default="0" />
+ <setting id="ThumbType" type="enum" label="45001" default="0"
values="Thumb|Banner|Logo" />
+ <setting id="DownloadBanners" type="action" subsetting="true" label="45002"
action="RunScript(script.logo-downloader,mode=bulk,clearart=False,logo=False,showthumb=False,poster=False,banner=banner.jpg)"
visible="gt(-1,0) + lt(-1,2)" />
+ <setting id="DownloadLogos" type="action" subsetting="true" label="45003"
action="RunScript(script.logo-downloader,mode=bulk,clearart=False,logo=True,showthumb=False,poster=False,banner=False)"
visible="gt(-2,1) + lt(-2,3)" />
+ <setting id="BackgroundFanart" type="bool" label="45004" default="False" />
+ <setting id="PreviewThumbs" type="bool" label="45005" default="False" />
+ <setting id="DownloadPreviewThumbs" type="action" subsetting="true"
label="45006"
action="RunScript(script.logo-downloader,mode=bulk,clearart=False,logo=False,showthumb=landscape.jpg,poster=False,banner=False)"
visible="eq(-1,true)" />
</settings>
-----------------------------------------------------------------------
Summary of changes:
script.tv.show.next.aired/README.txt | 101 +
script.tv.show.next.aired/addon.xml | 12 +-
script.tv.show.next.aired/changelog.txt | 7 +
script.tv.show.next.aired/default.py | 399 ++--
.../resources/language/English/strings.xml | 13 +-
.../resources/language/German/strings.xml | 16 +
.../language/Portuguese (Brazil)/strings.xml | 8 +-
.../resources/lib/next_aired_dialog.py | 186 +-
script.tv.show.next.aired/resources/settings.xml | 7 +-
.../Default/720p/script-NextAired-TVGuide.xml | 2304 ++++++++++++++++++++
.../skins/Default/media/TVGuide-Background.jpg | Bin 0 -> 578311 bytes
.../skins/Default/media/TVGuide-Button.png | Bin 5605 -> 5605 bytes
.../skins/Default/media/TVGuide-ContentPanel.png | Bin 0 -> 60617 bytes
.../Default/media/TVGuide-ContentPanelMirror.png | Bin 0 -> 17603 bytes
.../skins/Default/media/TVGuide-Floor.png | Bin 2904 -> 2904 bytes
.../skins/Default/media/TVGuide-GlassOverlay.png | Bin 0 -> 4562 bytes
.../skins/Default/media/TVGuide-Grid-Highlight.png | Bin 0 -> 19942 bytes
.../resources/skins/Default/media/TVGuide-Grid.png | Bin 0 -> 22135 bytes
.../skins/Default/media/TVGuide-HasSub.png | Bin 3533 -> 5191 bytes
.../media/TVGuide-Header.png} | Bin 5795 -> 5795 bytes
.../skins/Default/media/TVGuide-HomeIcon-Focus.png | Bin 3575 -> 4215 bytes
.../skins/Default/media/TVGuide-HomeIcon.png | Bin 2842 -> 3220 bytes
.../skins/Default/media/TVGuide-Icon.png} | Bin 100518 -> 100518
bytes
.../skins/Default/media/TVGuide-MediaBladeSub.png | Bin 16353 -> 16353 bytes
.../media/TVGuide-MenuItemFO.png} | Bin 24951 -> 24951 bytes
.../skins/DefaultSkin/720p/DialogNextAired.xml | 737 -------
.../media/NextAired-DialogCloseButton-focus.png | Bin 5216 -> 0 bytes
.../media/NextAired-DialogCloseButton.png | Bin 4522 -> 0 bytes
.../DefaultSkin/media/NextAired-GlassOverlay.png | Bin 6428 -> 0 bytes
.../DefaultSkin/media/NextAired-HomeBlade.png | Bin 195285 -> 0 bytes
.../DefaultSkin/media/NextAired-MediaBladeSub.png | Bin 20621 -> 0 bytes
.../DefaultSkin/media/NextAired-button-focus.png | Bin 6231 -> 0 bytes
.../DefaultSkin/media/NextAired-button-nofocus.png | Bin 2935 -> 0 bytes
.../DefaultSkin/media/NextAired-scroll-down-2.png | Bin 4804 -> 0 bytes
.../media/NextAired-scroll-down-focus-2.png | Bin 4483 -> 0 bytes
.../DefaultSkin/media/NextAired-scroll-up-2.png | Bin 4779 -> 0 bytes
.../media/NextAired-scroll-up-focus-2.png | Bin 4500 -> 0 bytes
.../DefaultSkin/media/NextAired-separator.png | Bin 2984 -> 0 bytes
.../resources/skins/DefaultSkin/skin.xml | 14 -
39 files changed, 2748 insertions(+), 1056 deletions(-)
create mode 100644 script.tv.show.next.aired/README.txt
create mode 100644
script.tv.show.next.aired/resources/language/German/strings.xml
create mode 100644
script.tv.show.next.aired/resources/skins/Default/720p/script-NextAired-TVGuide.xml
create mode 100644
script.tv.show.next.aired/resources/skins/Default/media/TVGuide-Background.jpg
copy script.globalsearch/resources/skins/Default/media/button-focus.png =>
script.tv.show.next.aired/resources/skins/Default/media/TVGuide-Button.png
(100%)
create mode 100644
script.tv.show.next.aired/resources/skins/Default/media/TVGuide-ContentPanel.png
create mode 100644
script.tv.show.next.aired/resources/skins/Default/media/TVGuide-ContentPanelMirror.png
copy
script.games.rom.collection.browser/resources/skins/Default/media/rcb-floor.png
=> script.tv.show.next.aired/resources/skins/Default/media/TVGuide-Floor.png
(100%)
create mode 100644
script.tv.show.next.aired/resources/skins/Default/media/TVGuide-GlassOverlay.png
create mode 100644
script.tv.show.next.aired/resources/skins/Default/media/TVGuide-Grid-Highlight.png
create mode 100644
script.tv.show.next.aired/resources/skins/Default/media/TVGuide-Grid.png
copy script.cdartmanager/resources/skins/Default/media/blank_artwork.png =>
script.tv.show.next.aired/resources/skins/Default/media/TVGuide-HasSub.png (51%)
rename
script.tv.show.next.aired/resources/skins/{DefaultSkin/media/NextAired-header.png
=> Default/media/TVGuide-Header.png} (100%)
copy script.cdartmanager/resources/skins/Default/media/HomeHasSub.png =>
script.tv.show.next.aired/resources/skins/Default/media/TVGuide-HomeIcon-Focus.png
(64%)
copy script.mpdc/resources/skins/Confluence/media/RecentAddedNF.png =>
script.tv.show.next.aired/resources/skins/Default/media/TVGuide-HomeIcon.png
(84%)
copy script.tv.show.next.aired/{icon.png =>
resources/skins/Default/media/TVGuide-Icon.png} (100%)
copy script.xbmc.subtitles/resources/skins/Default/media/MediaBladeSub.png =>
script.tv.show.next.aired/resources/skins/Default/media/TVGuide-MediaBladeSub.png
(100%)
rename
script.tv.show.next.aired/resources/skins/{DefaultSkin/media/NextAired-MenuItemFO.png
=> Default/media/TVGuide-MenuItemFO.png} (100%)
delete mode 100644
script.tv.show.next.aired/resources/skins/DefaultSkin/720p/DialogNextAired.xml
delete mode 100644
script.tv.show.next.aired/resources/skins/DefaultSkin/media/NextAired-DialogCloseButton-focus.png
delete mode 100644
script.tv.show.next.aired/resources/skins/DefaultSkin/media/NextAired-DialogCloseButton.png
delete mode 100644
script.tv.show.next.aired/resources/skins/DefaultSkin/media/NextAired-GlassOverlay.png
delete mode 100644
script.tv.show.next.aired/resources/skins/DefaultSkin/media/NextAired-HomeBlade.png
delete mode 100644
script.tv.show.next.aired/resources/skins/DefaultSkin/media/NextAired-MediaBladeSub.png
delete mode 100644
script.tv.show.next.aired/resources/skins/DefaultSkin/media/NextAired-button-focus.png
delete mode 100644
script.tv.show.next.aired/resources/skins/DefaultSkin/media/NextAired-button-nofocus.png
delete mode 100644
script.tv.show.next.aired/resources/skins/DefaultSkin/media/NextAired-scroll-down-2.png
delete mode 100644
script.tv.show.next.aired/resources/skins/DefaultSkin/media/NextAired-scroll-down-focus-2.png
delete mode 100644
script.tv.show.next.aired/resources/skins/DefaultSkin/media/NextAired-scroll-up-2.png
delete mode 100644
script.tv.show.next.aired/resources/skins/DefaultSkin/media/NextAired-scroll-up-focus-2.png
delete mode 100644
script.tv.show.next.aired/resources/skins/DefaultSkin/media/NextAired-separator.png
delete mode 100644
script.tv.show.next.aired/resources/skins/DefaultSkin/skin.xml
hooks/post-receive
--
Scripts
------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security
threats, fraudulent activity, and more. Splunk takes this data and makes
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2dcopy2
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons