The branch, eden has been updated
via 2bb812f0c2f7085023b2a6380bc7b12dc363c506 (commit)
via 9b19bf1d0499343b897fa18e4914405823de51e0 (commit)
via 4085bf66b4de5e1651c506c62e4fa923ba2bcad8 (commit)
from 8744468dff280b7f5e684d925b223bdeb708fb07 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=2bb812f0c2f7085023b2a6380bc7b12dc363c506
commit 2bb812f0c2f7085023b2a6380bc7b12dc363c506
Author: spiff <[email protected]>
Date: Wed Oct 24 10:12:41 2012 +0200
[plugin.image.iphoto] updated to version 1.9.3
diff --git a/plugin.image.iphoto/addon.py b/plugin.image.iphoto/addon.py
index 0b5c471..40945d5 100644
--- a/plugin.image.iphoto/addon.py
+++ b/plugin.image.iphoto/addon.py
@@ -423,6 +423,11 @@ def list_photos_with_keyword(params):
def list_keywords(params):
global db, BASE_URL, ICONS_PATH, album_ign_empty, view_mode
+ if (db.GetIphotoVersion() >= 9.4):
+ dialog = gui.Dialog()
+ dialog.ok(addon.getLocalizedString(30262),
addon.getLocalizedString(30263))
+ return
+
keywordid = 0
try:
keywordid = params['keywordid']
diff --git a/plugin.image.iphoto/addon.xml b/plugin.image.iphoto/addon.xml
index edabc96..0a405b7 100644
--- a/plugin.image.iphoto/addon.xml
+++ b/plugin.image.iphoto/addon.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="plugin.image.iphoto" name="iPhoto" version="1.9.2"
provider-name="jingai">
+<addon id="plugin.image.iphoto" name="iPhoto" version="1.9.3"
provider-name="jingai">
<requires>
<import addon="xbmc.python" version="2.0"/>
<import addon="script.module.simplejson" version="2.0.10"/>
diff --git a/plugin.image.iphoto/changelog.txt
b/plugin.image.iphoto/changelog.txt
index 8c30d50..d3c31d4 100644
--- a/plugin.image.iphoto/changelog.txt
+++ b/plugin.image.iphoto/changelog.txt
@@ -1,3 +1,7 @@
+1.9.3 - 20121023
+- Warn user that Keywords are unsupported with iPhoto >= 9.4.
+- Work around for bogus Face entries in XML.
+
1.9.2 - 20121017
- Fixes for iPhoto 9.4.
- Ignore Albums of type "Event".
diff --git a/plugin.image.iphoto/resources/language/English/strings.xml
b/plugin.image.iphoto/resources/language/English/strings.xml
index a2f826b..3b5da40 100644
--- a/plugin.image.iphoto/resources/language/English/strings.xml
+++ b/plugin.image.iphoto/resources/language/English/strings.xml
@@ -26,6 +26,8 @@
<string id="30252">Scanning...</string>
<string id="30260">Library import in progress</string>
<string id="30261">Unable to reset database.</string>
+ <string id="30262">Currently unsupported</string>
+ <string id="30263">This function is unsupported in this version of
iPhoto.</string>
<!-- Category strings -->
diff --git a/plugin.image.iphoto/resources/lib/iphoto_parser.py
b/plugin.image.iphoto/resources/lib/iphoto_parser.py
index a98f226..5f890ff 100644
--- a/plugin.image.iphoto/resources/lib/iphoto_parser.py
+++ b/plugin.image.iphoto/resources/lib/iphoto_parser.py
@@ -562,6 +562,8 @@ class IPhotoDB:
try:
faceid = int(face['key'])
+ facekey = face['key image']
+ faceidx = face['key image face index']
except:
return
@@ -571,8 +573,8 @@ class IPhotoDB:
VALUES (?, ?, ?, ?, ?, ?)""",
(faceid,
face['name'],
- face['key image'],
- face['key image face index'],
+ facekey,
+ faceidx,
face['PhotoCount'],
face['Order']))
except sqlite.IntegrityError:
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=9b19bf1d0499343b897fa18e4914405823de51e0
commit 9b19bf1d0499343b897fa18e4914405823de51e0
Author: spiff <[email protected]>
Date: Wed Oct 24 10:11:51 2012 +0200
[plugin.video.railscasts] initial version (0.2). thanks to Pawel Lenart
diff --git a/.gitignore b/.gitignore
index c2c3287..1e5ae56 100644
--- a/.gitignore
+++ b/.gitignore
@@ -105,3 +105,5 @@ plugin.video.borsentv.dk/.idea
plugin.video.borsentv.dk/.git
plugin.video.goldpagemedia/.gitignore
plugin.video.goldpagemedia/.git
+plugin.video.railscast/.gitignore
+plugin.video.railscast/.git
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=4085bf66b4de5e1651c506c62e4fa923ba2bcad8
commit 4085bf66b4de5e1651c506c62e4fa923ba2bcad8
Author: spiff <[email protected]>
Date: Wed Oct 24 10:08:58 2012 +0200
[plugin.video.sagetv] updated to version 1.3.4
diff --git a/plugin.video.sagetv/addon.xml b/plugin.video.sagetv/addon.xml
index ca45e4a..24454e5 100644
--- a/plugin.video.sagetv/addon.xml
+++ b/plugin.video.sagetv/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.sagetv"
name="SageTV"
- version="1.3.1"
+ version="1.3.4"
provider-name="kricker,lehighbri,aaronb">
<requires>
<import addon="xbmc.python" version="2.0"/>
diff --git a/plugin.video.sagetv/changelog.txt
b/plugin.video.sagetv/changelog.txt
index f984460..51f5f4d 100644
--- a/plugin.video.sagetv/changelog.txt
+++ b/plugin.video.sagetv/changelog.txt
@@ -1,3 +1,13 @@
+[B]Version 1.3.4 (Oct 17, 2012)[/B]
+- Improved display of show titles that contain special (non-ASCII) characters
(added UTF8 support)
+
+[B]Version 1.3.3 (Oct 16, 2012)[/B]
+- Added new streaming quality setting and enhanced "Watch (Stream)" context
menu to force what quality to stream the recording back as (note that this is a
workaround to using the standard streaming URL which does not work due to a bug
in ffmpeg that we're waiting to get fixed)
+- Added "Add/Remove Favorite" show level context menu items
+
+[B]Version 1.3.2 (Oct 16, 2012)[/B]
+- Added show level context menu items to enable "Set All Watched", "Clear All
Watched", and "Delete All" which takes action on all episodes within a show
+
[B]Version 1.3.1 (Oct 13, 2012)[/B]
- Added "Watch (Streamed)" context menu item which enables playing back via
using SageTV remote services
- Fixed file/watched duration issue where "None" wasn't handled
diff --git a/plugin.video.sagetv/contextmenuactions.py
b/plugin.video.sagetv/contextmenuactions.py
index 5ca7d57..fb67e32 100644
--- a/plugin.video.sagetv/contextmenuactions.py
+++ b/plugin.video.sagetv/contextmenuactions.py
@@ -1,5 +1,6 @@
import urllib,urllib2,re,string
import xbmc,xbmcplugin,xbmcgui,xbmcaddon
+import time
from time import sleep
import simplejson as json
@@ -136,7 +137,7 @@ if(args[0] in
["cancelrecording","addfavorite","removefavorite","record","setwat
elif(args[0] == "cleararchived"):
xbmc.executebuiltin("Notification(" + __language__(21011) + "," +
__language__(21036) + ")")
xbmc.executebuiltin("Container.Refresh")
-elif(args[0][0:6] == "delete"):
+elif(args[0][0:6] == "delete" and args[0] != "deleteall"):
firstApiCall = args[1]
#Check what kind of delete command was sent
deleteCommand = args[0].replace("delete","")
@@ -150,10 +151,32 @@ elif(args[0][0:6] == "delete"):
if(args[0] == "delete"):
xbmc.executebuiltin("Notification(" + __language__(21011) + "," +
__language__(21012) + ")")
xbmc.executebuiltin("Container.Refresh")
+elif(args[0] in ["setallwatched","clearallwatched","deleteall"]):
+ strUrl = args[1]
+ showName = args[2]
+ urlToShowEpisodes = strUrl +
'/sagex/api?c=xbmc:GetMediaFilesForShowWithSubsetOfProperties&1=' +
urllib2.quote(showName) + '&size=500&encoder=json'
+ mfs = executeSagexAPIJSONCall(urlToShowEpisodes, "Result")
+ print "***Getting ready to execute action '" + args[0] + "'; # of EPISODES
for " + showName + "=" + str(len(mfs))
+ for mfSubset in mfs:
+ strMediaFileID = mfSubset.get("MediaFileID")
+ if(args[0] == "setallwatched"):
+ sageApiUrl = strUrl + '/sagex/api?command=SetWatched&1=mediafile:'
+ strMediaFileID
+ elif(args[0] == "clearallwatched"):
+ sageApiUrl = strUrl +
'/sagex/api?command=ClearWatched&1=mediafile:' + strMediaFileID
+ elif(args[0] == "deleteall"):
+ sageApiUrl = strUrl + '/sagex/api?command=DeleteFile&1=mediafile:'
+ strMediaFileID
+
+ urllib.urlopen(sageApiUrl)
+
+ xbmc.executebuiltin("Container.Refresh")
elif(args[0] == "watchstream"):
strUrl = args[1]
- mediaFileID = args[2]
- streamingUrl = strUrl + "/stream/HTTPLiveStreamingPlaylist?MediaFileId=" +
mediaFileID
+ mediaFileID = args[2]
+ #streamingUrl = strUrl + "/stream/HTTPLiveStreamingPlaylist?MediaFileId="
+ mediaFileID
+ qualitySettingArray = [150, 240, 440, 640, 840, 1240, 1840]
+ qualitySettingIndex = int(__settings__.getSetting("streaming_quality"))
+ qualitySetting = qualitySettingArray[qualitySettingIndex]
+ streamingUrl = strUrl +
"/stream/HTTPLiveStreamingPlaylist?MediaFileId=%s&ConversionId=%s&Quality=%s" %
(mediaFileID, str(int(time.time())), qualitySetting)
#First check that the media streaming services plugin is installed
validStreamingServicesPluginVersionFound = True
url = strUrl + '/sagex/api?command=GetInstalledPlugins&encoder=json'
diff --git a/plugin.video.sagetv/default.py b/plugin.video.sagetv/default.py
index c1a3c6f..1848350 100644
--- a/plugin.video.sagetv/default.py
+++ b/plugin.video.sagetv/default.py
@@ -101,21 +101,21 @@ def VIEWLISTOFRECORDEDSHOWS(url,name):
mfsForTitle = titleObjects.get(title)
for mfSubset in mfsForTitle:
strTitle = mfSubset.get("ShowTitle")
- strTitle = unicodedata.normalize('NFKD',
strTitle).encode('ascii','ignore')
+ strTitleEncoded = strTitle.encode("utf8")
strMediaFileID = mfSubset.get("MediaFileID")
strExternalID = mfSubset.get("ShowExternalID")
startTime = float(mfSubset.get("AiringStartTime") // 1000)
strAiringdateObject = date.fromtimestamp(startTime)
strAiringdate = "%02d.%02d.%s" % (strAiringdateObject.day,
strAiringdateObject.month, strAiringdateObject.year)
break
- urlToShowEpisodes = strUrl +
'/sagex/api?c=xbmc:GetMediaFilesForShowWithSubsetOfProperties&1=' +
urllib2.quote(strTitle.encode("utf8")) + '&size=500&encoder=json'
+ urlToShowEpisodes = strUrl +
'/sagex/api?c=xbmc:GetMediaFilesForShowWithSubsetOfProperties&1=' +
urllib2.quote(strTitleEncoded) + '&size=500&encoder=json'
#urlToShowEpisodes = strUrl +
'/sagex/api?command=EvaluateExpression&1=FilterByMethod(GetMediaFiles("T"),"GetMediaTitle","'
+ urllib2.quote(strTitle.encode("utf8")) + '",true)&size=500&encoder=json'
#urlToShowEpisodes = strUrl +
'/sage/Search?searchType=TVFiles&SearchString=' +
urllib2.quote(strTitle.encode("utf8")) +
'&DVD=on&sort2=airdate_asc&partials=both&TimeRange=0&pagelen=100&sort1=title_asc&filename=&Video=on&search_fields=title&xml=yes'
- print "ADDING strTitle=" + strTitle + "; urlToShowEpisodes=" +
urlToShowEpisodes
+ print "ADDING strTitleEncoded=" + strTitleEncoded + ";
urlToShowEpisodes=" + urlToShowEpisodes
imageUrl = strUrl + "/sagex/media/poster/" + strMediaFileID
fanartUrl = strUrl + "/sagex/media/background/" + strMediaFileID
#print "ADDING imageUrl=" + imageUrl
- addDir(strTitle,
urlToShowEpisodes,11,imageUrl,'',strExternalID,strAiringdate,fanartUrl)
+ addDir(strTitleEncoded,
urlToShowEpisodes,11,imageUrl,'',strExternalID,strAiringdate,fanartUrl)
def VIEWLISTOFEPISODESFORSHOW(url,name):
mfs = executeSagexAPIJSONCall(url, "Result")
@@ -127,7 +127,7 @@ def VIEWLISTOFEPISODESFORSHOW(url,name):
for mfSubset in mfs:
strTitle = mfSubset.get("ShowTitle")
- strTitle = unicodedata.normalize('NFKD',
strTitle).encode('ascii','ignore')
+ strTitleEncoded = strTitle.encode("utf8")
strMediaFileID = mfSubset.get("MediaFileID")
strEpisode = mfSubset.get("EpisodeTitle")
@@ -164,12 +164,12 @@ def VIEWLISTOFEPISODESFORSHOW(url,name):
strDisplayText = studio + " News - " + strftime('%a %b
%d', time.localtime(startTime)) + " @ " + airTime
strDescription = strGenre
elif(strGenre.find("Sports")>=0):
- strDisplayText = strTitle + " - " + strftime('%a %b
%d', time.localtime(startTime)) + " @ " + airTime
+ strDisplayText = strTitleEncoded + " - " +
strftime('%a %b %d', time.localtime(startTime)) + " @ " + airTime
strDescription = strGenre
if(name == "[All Shows]"):
- strDisplayText = strTitle + " - " + strDisplayText
+ strDisplayText = strTitleEncoded + " - " + strDisplayText
else:
- strDisplayText = strTitle
+ strDisplayText = strTitleEncoded
segs = mfSubset.get("SegmentFiles")
if(len(segs) == 1):
@@ -187,7 +187,7 @@ def VIEWLISTOFEPISODESFORSHOW(url,name):
print "************strMappedFilepath=" + str(strMappedFilepath)
imageUrl = strUrl + "/sagex/media/poster/" + strMediaFileID
fanartUrl = strUrl + "/sagex/media/background/" + strMediaFileID
-
addMediafileLink(strDisplayText,strMappedFilepath,strDescription,imageUrl,strGenre,strOriginalAirdate,strAiringdate,strTitle,strMediaFileID,strAiringID,seasonNum,episodeNum,studio,isFavorite,isWatched,watchedDuration,fileDuration,fanartUrl,isArchived)
+
addMediafileLink(strDisplayText,strMappedFilepath,strDescription,imageUrl,strGenre,strOriginalAirdate,strAiringdate,strTitleEncoded,strMediaFileID,strAiringID,seasonNum,episodeNum,studio,isFavorite,isWatched,watchedDuration,fileDuration,fanartUrl,isArchived)
xbmc.executebuiltin("Container.SetViewMode(504)")
@@ -327,8 +327,7 @@ def SEARCHFORRECORDINGS(url,name):
for mfSubset in mfs:
strTitle = mfSubset.get("ShowTitle")
- print "showtitle=" + str(strTitle)
- strTitle = unicodedata.normalize('NFKD',
strTitle).encode('ascii','ignore')
+ strTitleEncoded = strTitle.encode("utf8")
strMediaFileID = mfSubset.get("MediaFileID")
strEpisode = mfSubset.get("EpisodeTitle")
@@ -355,18 +354,18 @@ def SEARCHFORRECORDINGS(url,name):
strOriginalAirdate = "%02d.%02d.%s" %
(strOriginalAirdateObject.day, strOriginalAirdateObject.month,
strOriginalAirdateObject.year)
# if there is no episode name use the description in the title
- strDisplayText = strTitle
+ strDisplayText = strTitleEncoded
if(strGenre.find("Movie")<0 and strGenre.find("Movies")<0 and
strGenre.find("Film")<0 and strGenre.find("Shopping")<0 and
strGenre.find("Consumer")<0):
if(strEpisode != "" and strDescription != ""):
- strDisplayText = strTitle + ' - ' + strDescription
+ strDisplayText = strTitleEncoded + ' - ' + strDescription
elif(strEpisode != ""):
- strDisplayText = strTitle + ' - ' + strEpisode
+ strDisplayText = strTitleEncoded + ' - ' + strEpisode
else:
if(strGenre.find("News")>=0):
strDisplayText = studio + " News - " + strftime('%a %b
%d', time.localtime(startTime)) + " @ " + airTime
strDescription = strGenre
elif(strGenre.find("Sports")>=0):
- strDisplayText = strTitle + " - " + strftime('%a %b %d',
time.localtime(startTime)) + " @ " + airTime
+ strDisplayText = strTitleEncoded + " - " + strftime('%a %b
%d', time.localtime(startTime)) + " @ " + airTime
strDescription = strGenre
@@ -386,7 +385,7 @@ def SEARCHFORRECORDINGS(url,name):
print "************strMappedFilepath=" + str(strMappedFilepath)
imageUrl = strUrl + "/sagex/media/poster/" + strMediaFileID
fanartUrl = strUrl + "/sagex/media/background/" + strMediaFileID
-
addMediafileLink(strDisplayText,strMappedFilepath,strDescription,imageUrl,strGenre,strOriginalAirdate,strAiringdate,strTitle,strMediaFileID,strAiringID,seasonNum,episodeNum,studio,isFavorite,isWatched,watchedDuration,fileDuration,fanartUrl,isArchived)
+
addMediafileLink(strDisplayText,strMappedFilepath,strDescription,imageUrl,strGenre,strOriginalAirdate,strAiringdate,strTitleEncoded,strMediaFileID,strAiringID,seasonNum,episodeNum,studio,isFavorite,isWatched,watchedDuration,fileDuration,fanartUrl,isArchived)
xbmc.executebuiltin("Container.SetViewMode(504)")
@@ -475,6 +474,7 @@ def
addMediafileLink(name,url,plot,iconimage,genre,originalairingdate,airingdate
actionSetArchived = "setarchived|" + strUrl +
'/sagex/api?command=MoveFileToLibrary&1=mediafile:' + mediafileid
actionClearArchived = "cleararchived|" + strUrl +
'/sagex/api?command=MoveTVFileOutOfLibrary&1=mediafile:' + mediafileid
actionCancelRecording = "cancelrecording|" + strUrl +
'/sagex/api?command=CancelRecord&1=mediafile:' + mediafileid
+ actionAddFavorite = "addfavorite|" + strUrl +
'/sagex/api?command=AddFavorite&1=%s&2=true&3=true&4=&5=&6=&7=&8=&9=&10=&11=&12=&13=&14='
% showtitle
actionRemoveFavorite = "removefavorite|" + strUrl +
'/sagex/api?command=EvaluateExpression&1=RemoveFavorite(GetFavoriteForAiring(GetAiringForID('
+ airingid + ')))'
actionWatchStream = "watchstream|" + strUrl + "|" + mediafileid
@@ -486,9 +486,13 @@ def
addMediafileLink(name,url,plot,iconimage,genre,originalairingdate,airingdate
contextMenuItems.append((__language__(21017), 'XBMC.RunScript(' +
scriptToRun + ', ' + actionCancelRecording + ')'))
if(isfavorite):
contextMenuItems.append((__language__(21018),
'XBMC.RunScript(' + scriptToRun + ', ' + actionRemoveFavorite + ')'))
+ else:
+ contextMenuItems.append((__language__(21030),
'XBMC.RunScript(' + scriptToRun + ', ' + actionAddFavorite + ')'))
else:
if(isfavorite):
contextMenuItems.append((__language__(21018),
'XBMC.RunScript(' + scriptToRun + ', ' + actionRemoveFavorite + ')'))
+ else:
+ contextMenuItems.append((__language__(21030),
'XBMC.RunScript(' + scriptToRun + ', ' + actionAddFavorite + ')'))
if(iswatched):
contextMenuItems.append((__language__(21023), 'XBMC.RunScript(' +
scriptToRun + ', ' + actionClearWatched + ')'))
@@ -570,6 +574,10 @@ def isAiringRecording(airingid):
sageApiUrl = strUrl +
'/sagex/api?command=IsFileCurrentlyRecording&1=airing:' + airingid +
'&encoder=json'
return executeSagexAPIJSONCall(sageApiUrl, "Result")
+def getFavoriteIDForShowTitle(showtitle):
+ sageApiUrl = strUrl +
'/sagex/api?c=xbmc:GetFavoriteIDForShowTitle&1=%s&encoder=json' %
urllib2.quote(showtitle)
+ return executeSagexAPIJSONCall(sageApiUrl, "Result")
+
def getShowSeriesDescription(showexternalid):
sageApiUrl = strUrl +
'/sagex/api?command=EvaluateExpression&1=GetSeriesDescription(GetShowSeriesInfo(GetShowForExternalID("'
+ showexternalid + '")))&encoder=json'
return executeSagexAPIJSONCall(sageApiUrl, "Result")
@@ -634,6 +642,26 @@ def
addDir(name,url,mode,iconimage,thumbimage,showexternalid,airingdate,fanartim
else:
liz.setThumbnailImage(iconimage)
liz.setProperty("fanart_image",fanartimage)
+
+ if(name != "[All Shows]"):
+ scriptToRun =
"special://home/addons/plugin.video.sagetv/contextmenuactions.py"
+ actionSetAllWatched = "setallwatched|" + strUrl + '|' + name
+ actionClearAllWatched = "clearallwatched|" + strUrl + '|' + name
+ actionDeleteAll = "deleteall|" + strUrl + '|' + name
+ contextMenuItems = []
+ contextMenuItems.append((__language__(21042), 'XBMC.RunScript(' +
scriptToRun + ', ' + actionSetAllWatched + ')'))
+ contextMenuItems.append((__language__(21043), 'XBMC.RunScript(' +
scriptToRun + ', ' + actionClearAllWatched + ')'))
+ favID = getFavoriteIDForShowTitle(name)
+ if(favID != ""):
+ actionRemoveFavorite = "removefavorite|" + strUrl +
'/sagex/api?command=EvaluateExpression&1=RemoveFavorite(GetFavoriteForID(' +
favID + '))'
+ contextMenuItems.append((__language__(21018), 'XBMC.RunScript(' +
scriptToRun + ', ' + actionRemoveFavorite + ')'))
+ else:
+ actionAddFavorite = "addfavorite|" + strUrl +
'/sagex/api?command=AddFavorite&1=%s&2=true&3=true&4=&5=&6=&7=&8=&9=&10=&11=&12=&13=&14='
% name
+ contextMenuItems.append((__language__(21030), 'XBMC.RunScript(' +
scriptToRun + ', ' + actionAddFavorite + ')'))
+
+ contextMenuItems.append((__language__(21044), 'XBMC.RunScript(' +
scriptToRun + ', ' + actionDeleteAll + ')'))
+ liz.addContextMenuItems(contextMenuItems, True)
+
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True)
return ok
diff --git a/plugin.video.sagetv/extras/sagex/services/xbmc.js
b/plugin.video.sagetv/extras/sagex/services/xbmc.js
index d6bbdd0..82b531c 100644
--- a/plugin.video.sagetv/extras/sagex/services/xbmc.js
+++ b/plugin.video.sagetv/extras/sagex/services/xbmc.js
@@ -126,3 +126,17 @@ function
GetPlaylistOfSegmentsForMediafile(mediafileID,sage_rec,sage_unc) {
}
return ret;
}
+
+function GetFavoriteIDForShowTitle(showtitle) {
+ var favs = FavoriteAPI.GetFavorites();
+ favoriteID = "";
+ var s = favs.length;
+ for (var i=0;i<s;i++) {
+ var fav = favs[i];
+ if(showtitle == FavoriteAPI.GetFavoriteTitle(fav)) {
+ favoriteID = ""+FavoriteAPI.GetFavoriteID(fav);
+ break;
+ }
+ }
+ return favoriteID;
+}
diff --git a/plugin.video.sagetv/resources/language/English/strings.xml
b/plugin.video.sagetv/resources/language/English/strings.xml
index fa8dad1..0f6ca14 100644
--- a/plugin.video.sagetv/resources/language/English/strings.xml
+++ b/plugin.video.sagetv/resources/language/English/strings.xml
@@ -8,6 +8,7 @@
<string id="20004">SageTV Recording Folder</string>
<string id="20005">SageTV Recording Folder Network path</string>
<string id="20006">SageTV Server MAC Address (for WOL)</string>
+ <string id="20007">Streaming Bandwidth (kbps)</string>
<!-- Settings-->
<string id="21000">SageTV Server Not Found</string>
@@ -52,4 +53,7 @@
<string id="21039">You do not have the media streaming services plugin
installed</string>
<string id="21040">Please install media streaming services to enable
watching streams.</string>
<string id="21041">Please install/upgrade your media streaming services
plugin version to</string>
+ <string id="21042">Set All Watched</string>
+ <string id="21043">Clear All Watched</string>
+ <string id="21044">Delete All</string>
</strings>
diff --git a/plugin.video.sagetv/resources/settings.xml
b/plugin.video.sagetv/resources/settings.xml
index 605b013..2496885 100644
--- a/plugin.video.sagetv/resources/settings.xml
+++ b/plugin.video.sagetv/resources/settings.xml
@@ -5,6 +5,7 @@
<setting id="sage_user" type="text" label="20002" default="sage"/>
<setting id="sage_pass" type="text" option="hidden" label="20003"
default="frey"/>
<setting id="sage_mac" type="text" label="20006"
default="FF:FF:FF:FF:FF:FF"/>
+ <setting id="streaming_quality" type="enum" label="20007"
values="150|240|440|640|840|1240|1840" default="1840"/>
<setting type="sep" />
<setting id="sage_rec" type="text" label="20004" default="E:\SageTV
Recordings\" />
<setting id="sage_unc" type="folder" label="20005"
default="smb://localhost/SageTV Recordings/"/>
-----------------------------------------------------------------------
Summary of changes:
.gitignore | 2 +
plugin.image.iphoto/addon.py | 5 ++
plugin.image.iphoto/addon.xml | 2 +-
plugin.image.iphoto/changelog.txt | 4 +
.../resources/language/English/strings.xml | 2 +
plugin.image.iphoto/resources/lib/iphoto_parser.py | 6 +-
.../LICENSE.txt | 0
plugin.video.railscasts/addon.py | 69 ++++++++++++++++++++
plugin.video.railscasts/addon.xml | 15 ++++
plugin.video.railscasts/changelog.txt | 9 +++
plugin.video.railscasts/icon.png | Bin 0 -> 5333 bytes
.../resources/__init__.py | 0
.../resources/language/English/strings.xml | 5 ++
.../resources/lib}/__init__.py | 0
plugin.video.sagetv/addon.xml | 2 +-
plugin.video.sagetv/changelog.txt | 10 +++
plugin.video.sagetv/contextmenuactions.py | 29 +++++++-
plugin.video.sagetv/default.py | 60 +++++++++++++-----
plugin.video.sagetv/extras/sagex/services/xbmc.js | 14 ++++
.../resources/language/English/strings.xml | 4 +
plugin.video.sagetv/resources/settings.xml | 1 +
21 files changed, 216 insertions(+), 23 deletions(-)
copy {plugin.video.wdrrockpalast => plugin.video.railscasts}/LICENSE.txt (100%)
create mode 100755 plugin.video.railscasts/addon.py
create mode 100644 plugin.video.railscasts/addon.xml
create mode 100644 plugin.video.railscasts/changelog.txt
create mode 100644 plugin.video.railscasts/icon.png
copy {plugin.audio.radio_de => plugin.video.railscasts}/resources/__init__.py
(100%)
create mode 100644
plugin.video.railscasts/resources/language/English/strings.xml
copy {plugin.audio.radio_de/resources =>
plugin.video.railscasts/resources/lib}/__init__.py (100%)
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons