The branch, dharma has been updated
via a9a3039e6f99a71127e830a3752266d5cc1baf00 (commit)
via c72b56f91488802a66cdf1f344b86e1a37bb288e (commit)
from 60f64564337e5bb8d78dc92f322afa603fb13187 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=a9a3039e6f99a71127e830a3752266d5cc1baf00
commit a9a3039e6f99a71127e830a3752266d5cc1baf00
Author: spiff <[email protected]>
Date: Sat Mar 19 23:39:01 2011 +0100
[plugin.image.iphoto] updated to version 1.3.0
diff --git a/plugin.image.iphoto/addon.py b/plugin.image.iphoto/addon.py
old mode 100755
new mode 100644
index b7dd5c5..4b27437
--- a/plugin.image.iphoto/addon.py
+++ b/plugin.image.iphoto/addon.py
@@ -11,12 +11,21 @@ import sys
import time
import os
import os.path
+import shutil
import xbmc
import xbmcgui as gui
import xbmcplugin as plugin
import xbmcaddon
+#try:
+# import xbmcvfs
+#except ImportError:
+# import shutil
+# copyfile = shutil.copyfile
+#else:
+# copyfile = xbmcvfs.copy
+
addon = xbmcaddon.Addon(id="plugin.image.iphoto")
BASE_URL = "%s" % (sys.argv[0])
PLUGIN_PATH = addon.getAddonInfo("path")
@@ -31,7 +40,23 @@ db = IPhotoDB(db_file)
apple_epoch = 978307200
+# default view in Confluence
+view_mode = addon.getSetting('view_mode')
+if (view_mode == ""):
+ view_mode = "0"
+ addon.setSetting('view_mode', view_mode)
+view_mode = int(view_mode)
+
+# ignore empty albums if configured to do so
+album_ign_empty = addon.getSetting('album_ignore_empty')
+if (album_ign_empty == ""):
+ album_ign_empty = "true"
+ addon.setSetting('album_ignore_empty', album_ign_empty)
+
+
def render_media(media):
+ global view_mode
+
sort_date = False
n = 0
for (caption, mediapath, thumbpath, originalpath, rating, mediadate,
mediasize) in media:
@@ -63,6 +88,9 @@ def render_media(media):
plugin.addSortMethod(int(sys.argv[1]), plugin.SORT_METHOD_LABEL)
if sort_date == True:
plugin.addSortMethod(int(sys.argv[1]), plugin.SORT_METHOD_DATE)
+
+ if view_mode > 0:
+ xbmc.executebuiltin("Container.SetViewMode(%d)" % (view_mode + 509))
return n
def list_photos_in_album(params):
@@ -72,8 +100,8 @@ def list_photos_in_album(params):
media = db.GetMediaInAlbum(albumid)
return render_media(media)
-def list_albums(params, ign_empty):
- global db, BASE_URL
+def list_albums(params):
+ global db, BASE_URL, album_ign_empty
albumid = 0
try:
@@ -92,7 +120,7 @@ def list_albums(params, ign_empty):
if (name == "Photos"):
continue
- if (not count and ign_empty == "true"):
+ if (not count and album_ign_empty == "true"):
continue
item = gui.ListItem(name)
@@ -112,8 +140,8 @@ def list_photos_in_event(params):
media = db.GetMediaInRoll(rollid)
return render_media(media)
-def list_events(params, ign_empty):
- global db, BASE_URL
+def list_events(params):
+ global db, BASE_URL, album_ign_empty
rollid = 0
try:
@@ -130,7 +158,7 @@ def list_events(params, ign_empty):
sort_date = False
n = 0
for (rollid, name, thumbpath, rolldate, count) in rolls:
- if (not count and ign_empty == "true"):
+ if (not count and album_ign_empty == "true"):
continue
# < r34717 doesn't support unicode thumbnail paths
@@ -164,8 +192,8 @@ def list_photos_with_face(params):
media = db.GetMediaWithFace(faceid)
return render_media(media)
-def list_faces(params, ign_empty):
- global db, BASE_URL
+def list_faces(params):
+ global db, BASE_URL, album_ign_empty
faceid = 0
try:
@@ -181,7 +209,7 @@ def list_faces(params, ign_empty):
n = 0
for (faceid, name, thumbpath, count) in faces:
- if (not count and ign_empty == "true"):
+ if (not count and album_ign_empty == "true"):
continue
# < r34717 doesn't support unicode thumbnail paths
@@ -206,8 +234,8 @@ def list_photos_with_keyword(params):
media = db.GetMediaWithKeyword(keywordid)
return render_media(media)
-def list_keywords(params, ign_empty):
- global db, BASE_URL
+def list_keywords(params):
+ global db, BASE_URL, album_ign_empty
keywordid = 0
try:
@@ -228,7 +256,7 @@ def list_keywords(params, ign_empty):
if (name in hidden_keywords):
continue
- if (not count and ign_empty == "true"):
+ if (not count and album_ign_empty == "true"):
continue
item = gui.ListItem(name)
@@ -283,7 +311,7 @@ def progress_callback(progress_dialog, nphotos, ntotal):
progress_dialog.update(percent, addon.getLocalizedString(30211) %
(nphotos))
return nphotos
-def import_library(xmlfile):
+def import_library(xmlpath, xmlfile):
global db
db.ResetDB()
@@ -296,16 +324,16 @@ def import_library(xmlfile):
# ignore albums published to MobileMe if configured to do so
album_ign_publ = addon.getSetting('album_ignore_published')
if (album_ign_publ == ""):
- addon.setSetting('album_ignore_published', 'true')
album_ign_publ = "true"
+ addon.setSetting('album_ignore_published', album_ign_publ)
if (album_ign_publ == "true"):
album_ign.append("Published")
# ignore flagged albums if configured to do so
album_ign_flagged = addon.getSetting('album_ignore_flagged')
if (album_ign_flagged == ""):
- addon.setSetting('album_ignore_flagged', 'true')
album_ign_flagged = "true"
+ addon.setSetting('album_ignore_flagged', album_ign_flagged)
if (album_ign_flagged == "true"):
album_ign.append("Shelf")
@@ -315,7 +343,7 @@ def import_library(xmlfile):
except:
print traceback.print_exc()
else:
- iparser = IPhotoParser(xmlfile, db.AddAlbumNew, album_ign,
db.AddRollNew, db.AddFaceNew, db.AddKeywordNew, db.AddMediaNew,
progress_callback, progress_dialog)
+ iparser = IPhotoParser(xmlpath, xmlfile, db.AddAlbumNew, album_ign,
db.AddRollNew, db.AddFaceNew, db.AddKeywordNew, db.AddMediaNew,
progress_callback, progress_dialog)
progress_dialog.update(0, addon.getLocalizedString(30212))
try:
@@ -334,7 +362,6 @@ def hide_keyword(params):
hidden_keywords += " "
hidden_keywords += keyword
addon.setSetting('hidden_keywords', hidden_keywords)
- print "JSL: HIDDEN KEYWORDS '%s'" % (hidden_keywords)
except Exception, e:
print to_str(e)
pass
@@ -365,6 +392,11 @@ if (__name__ == "__main__"):
addon.setSetting('albumdata_xml_path', xmlfile)
except:
pass
+ xmlpath = os.path.dirname(xmlfile)
+ origxml = xmlfile
+ xmlfile = xbmc.translatePath(os.path.join(addon.getAddonInfo("Profile"),
"iphoto.xml"))
+ shutil.copyfile(origxml, xmlfile)
+ shutil.copystat(origxml, xmlfile)
try:
params = get_params(sys.argv[2])
@@ -399,8 +431,8 @@ if (__name__ == "__main__"):
hide_import_lib = addon.getSetting('hide_import_lib')
if (hide_import_lib == ""):
- addon.setSetting('hide_import_lib', 'false')
hide_import_lib = "false"
+ addon.setSetting('hide_import_lib', hide_import_lib)
if (hide_import_lib == "false"):
item = gui.ListItem(addon.getLocalizedString(30103),
thumbnailImage=PLUGIN_PATH+"/icon.png")
plugin.addDirectoryItem(int(sys.argv[1]),
BASE_URL+"?action=rescan", item, False)
@@ -413,8 +445,8 @@ if (__name__ == "__main__"):
# automatically update library if desired
auto_update_lib = addon.getSetting('auto_update_lib')
if (auto_update_lib == ""):
- addon.setSetting('auto_update_lib', 'false')
auto_update_lib = "false"
+ addon.setSetting('auto_update_lib', auto_update_lib)
if (auto_update_lib == "true"):
try:
xml_mtime = os.path.getmtime(xmlfile)
@@ -424,26 +456,20 @@ if (__name__ == "__main__"):
pass
else:
if (xml_mtime > db_mtime):
- import_library(xmlfile)
+ import_library(xmlpath, xmlfile)
else:
- # ignore empty albums if configured to do so
- album_ign_empty = addon.getSetting('album_ignore_empty')
- if (album_ign_empty == ""):
- addon.setSetting('album_ignore_empty', 'true')
- album_ign_empty = "true"
-
if (action == "events"):
- items = list_events(params, album_ign_empty)
+ items = list_events(params)
elif (action == "albums"):
- items = list_albums(params, album_ign_empty)
+ items = list_albums(params)
elif (action == "faces"):
- items = list_faces(params, album_ign_empty)
+ items = list_faces(params)
elif (action == "keywords"):
- items = list_keywords(params, album_ign_empty)
+ items = list_keywords(params)
elif (action == "ratings"):
items = list_ratings(params)
elif (action == "rescan"):
- items = import_library(xmlfile)
+ items = import_library(xmlpath, xmlfile)
elif (action == "hidekeyword"):
items = hide_keyword(params)
diff --git a/plugin.image.iphoto/addon.xml b/plugin.image.iphoto/addon.xml
index d34ddaf..0583f30 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.2.1"
provider-name="jingai">
+<addon id="plugin.image.iphoto" name="iPhoto" version="1.3.0"
provider-name="jingai">
<requires>
<import addon="xbmc.python" version="1.0"/>
<import addon="script.module.pysqlite" version="2.5.6"/>
diff --git a/plugin.image.iphoto/changelog.txt
b/plugin.image.iphoto/changelog.txt
index 9d6ed82..4833265 100644
--- a/plugin.image.iphoto/changelog.txt
+++ b/plugin.image.iphoto/changelog.txt
@@ -1,3 +1,8 @@
+1.3.0 - 20110319
+- Support for external Python 2.6 (namely for iOS devices).
+- Support for smb:// style path for AlbumData.xml.
+- Option to set default view in Confluence.
+
1.2.1 - 20101116
- Windows: Don't fail if script unconfigured.
- Disclaimer: iPhoto 9.0+ does work.
diff --git a/plugin.image.iphoto/resources/__init__.py
b/plugin.image.iphoto/resources/__init__.py
old mode 100755
new mode 100644
diff --git a/plugin.image.iphoto/resources/language/English/strings.xml
b/plugin.image.iphoto/resources/language/English/strings.xml
index 3209bd9..fea2b31 100644
--- a/plugin.image.iphoto/resources/language/English/strings.xml
+++ b/plugin.image.iphoto/resources/language/English/strings.xml
@@ -6,7 +6,7 @@
<string id="30211">Imported %d items</string>
<string id="30212">Scanning AlbumData.xml...</string>
<string id="30213">Import iPhoto Library</string>
- <string id="30214">Hide Keyword</string>
+ <string id="30214">Ignore Keyword</string>
<!-- Category strings -->
<string id="30100">Events</string>
@@ -23,5 +23,12 @@
<string id="30003">Auto update library</string>
<string id="30004">Hide Import Library item in main menu</string>
<string id="30005">Ignore empty albums</string>
- <string id="30006">Hidden keywords</string>
+ <string id="30006">Ignore keywords</string>
+ <string id="30007">View mode in Confluence</string>
+ <string id="30010">Default</string>
+ <string id="30011">Image Wrap</string>
+ <string id="30012">Pic Thumbs</string>
+ <string id="30050">General</string>
+ <string id="30051">View</string>
+ <string id="30059">Advanced</string>
</strings>
diff --git a/plugin.image.iphoto/resources/lib/__init__.py
b/plugin.image.iphoto/resources/lib/__init__.py
old mode 100755
new mode 100644
diff --git a/plugin.image.iphoto/resources/lib/iphoto_parser.py
b/plugin.image.iphoto/resources/lib/iphoto_parser.py
old mode 100755
new mode 100644
index ac75672..6329f8b
--- a/plugin.image.iphoto/resources/lib/iphoto_parser.py
+++ b/plugin.image.iphoto/resources/lib/iphoto_parser.py
@@ -8,8 +8,12 @@ __url__ = "git://github.com/jingai/plugin.image.iphoto.git"
import traceback
import xml.parsers.expat
-from pysqlite2 import dbapi2 as sqlite
from urllib import unquote
+try:
+ from sqlite3 import dbapi2 as sqlite
+except:
+ from pysqlite2 import dbapi2 as sqlite
+
import sys
import os
import os.path
@@ -512,7 +516,7 @@ class IPhotoDB:
except Exception, e:
raise e
- def AddMediaNew(self, media, archivePath, realPath):
+ def AddMediaNew(self, media, archivePath, libraryPath):
#print "AddMediaNew()", media
try:
@@ -525,10 +529,10 @@ class IPhotoDB:
# rewrite paths to image files based on configured path.
# if the iPhoto library is mounted as a share, the paths in
# AlbumData.xml probably won't be right.
- if (archivePath and realPath):
- imagepath = media['ImagePath'].replace(archivePath, realPath)
- thumbpath = media['ThumbPath'].replace(archivePath, realPath)
- originalpath = media['OriginalPath'].replace(archivePath, realPath)
+ if (archivePath and libraryPath):
+ imagepath = media['ImagePath'].replace(archivePath, libraryPath)
+ thumbpath = media['ThumbPath'].replace(archivePath, libraryPath)
+ originalpath = media['OriginalPath'].replace(archivePath,
libraryPath)
else:
imagepath = media['ImagePath']
thumbpath = media['ThumbPath']
@@ -619,9 +623,10 @@ class IPhotoParserState:
self.valueType = ""
class IPhotoParser:
- def __init__(self, xmlfile="", album_callback=None, album_ign=[],
+ def __init__(self, library_path="", xmlfile="", album_callback=None,
album_ign=[],
roll_callback=None, face_callback=None, keyword_callback=None,
photo_callback=None,
progress_callback=None, progress_dialog=None):
+ self.libraryPath = library_path
self.xmlfile = xmlfile
self.imagePath = ""
self.parser = xml.parsers.expat.ParserCreate()
@@ -704,11 +709,6 @@ class IPhotoParser:
state.nphotostotal = len(self.albumList) + len(self.rollList) +
len(self.faceList) + len(self.keywordList) + len(self.photoList)
try:
- realPath = os.path.dirname(self.xmlfile)
- except:
- pass
-
- try:
if (self.AlbumCallback and len(self.albumList) > 0):
for a in self.albumList:
self.AlbumCallback(a, self.albumIgn)
@@ -731,7 +731,7 @@ class IPhotoParser:
if (self.PhotoCallback and len(self.photoList) > 0):
for a in self.photoList:
- self.PhotoCallback(a, self.imagePath, realPath)
+ self.PhotoCallback(a, self.imagePath, self.libraryPath)
self.updateProgress()
except ParseCanceled:
raise
@@ -807,7 +807,7 @@ class IPhotoParser:
if (not state.key):
self.imagePath = state.value
print "Rewriting iPhoto archive path '%s'" %
(to_str(self.imagePath))
- print "as '%s'" % (to_str(os.path.dirname(self.xmlfile)))
+ print "as '%s'" % (to_str(self.libraryPath))
state.archivepath = False
state.inarchivepath -= 1
@@ -958,7 +958,7 @@ def main():
db = IPhotoDB("iphoto.db")
db.ResetDB()
- iparser = IPhotoParser(xmlfile, db.AddAlbumNew, "", db.AddRollNew,
db.AddFaceNew, db.AddKeywordNew, db.AddMediaNew)
+ iparser = IPhotoParser("", xmlfile, db.AddAlbumNew, "", db.AddRollNew,
db.AddFaceNew, db.AddKeywordNew, db.AddMediaNew)
try:
iparser.Parse()
except:
diff --git a/plugin.image.iphoto/resources/settings.xml
b/plugin.image.iphoto/resources/settings.xml
index 69fb62f..2a7dd03 100644
--- a/plugin.image.iphoto/resources/settings.xml
+++ b/plugin.image.iphoto/resources/settings.xml
@@ -1,11 +1,23 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
- <setting id="albumdata_xml_path" type="file" label="30000" default=""/>
- <setting id="auto_update_lib" type="bool" label="30003" default="false"/>
- <setting type="sep" />
- <setting id="hide_import_lib" type="bool" label="30004" default="false"/>
- <setting id="album_ignore_empty" type="bool" label="30005" default="true"/>
- <setting id="album_ignore_published" type="bool" label="30001"
default="true"/>
- <setting id="album_ignore_flagged" type="bool" label="30002"
default="true"/>
- <setting id="hidden_keywords" type="text" label="30006" default=""/>
+ <!-- General -->
+ <category label="30050">
+ <setting id="albumdata_xml_path" type="file" source="video"
label="30000" default=""/>
+ <setting id="auto_update_lib" type="bool" label="30003"
default="false"/>
+ </category>
+
+ <!-- View -->
+ <category label="30051">
+ <setting id="view_mode" type="enum" label="30007"
lvalues="30010|30011|30012" default="0"/>
+ <setting type="sep"/>
+ <setting id="album_ignore_empty" type="bool" label="30005"
default="true"/>
+ <setting id="album_ignore_published" type="bool" label="30001"
default="true"/>
+ <setting id="album_ignore_flagged" type="bool" label="30002"
default="true"/>
+ <setting id="hidden_keywords" type="text" label="30006" default=""/>
+ </category>
+
+ <!-- Advanced -->
+ <category label="30059">
+ <setting id="hide_import_lib" type="bool" label="30004"
default="false"/>
+ </category>
</settings>
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=c72b56f91488802a66cdf1f344b86e1a37bb288e
commit c72b56f91488802a66cdf1f344b86e1a37bb288e
Author: spiff <[email protected]>
Date: Sat Mar 19 23:34:35 2011 +0100
[plugin.video.gamestar] updated to version 0.1.0
diff --git a/plugin.video.gamestar/addon.xml b/plugin.video.gamestar/addon.xml
index 86a26d0..29fe121 100644
--- a/plugin.video.gamestar/addon.xml
+++ b/plugin.video.gamestar/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="plugin.video.gamestar"
- version="0.0.9"
+ version="0.1.0"
name="GamestarVideo"
provider-name="Raptor 2101 [[email protected]]">
<requires>
@@ -17,12 +17,12 @@
<summary lang="de">Alle Videos von Gamestar.de durchsuchen und
anschauen.</summary>
<description lang="en">This plugin gives access to the Videos from
gamestar.de and gamepor.de.
If there are problems while playing the videos (stoping - caching -
playing) this plugin offer some caching options:
- Don't Cache - don't cache at all.
- Cache if Needed - if you start a video which isn't cached, it will be
cached and then be played.
+ Don't Chache - don't cache at all.
+ Cache if Needed - if you start a video who isn't cached, it will be cached
and then be played.
Cache - all files of the given category will be cached.
- Forced caching - all files of the given category will be cached.
Additionally, if some file isn't cached it will be downloaded before playing.
+ Forced caching - all files of the given category will be cached plus, if
some file isn't cached it will be downloaded before playing.
- The last two modes need a background-script setup in Taskmanager or
(ana)cron. The script is located in the addon-dir: fetchOfflineData.py
linktotheconfig.xml BandwithLimit(in kbs)
+ The last two modes need a background-skript setuped by Taskmanager or
(ana)cron. The script is locatet in the addon-dir: fetchOfflineData.py
linktotheconfig.xml BandwithLimit(in kbs)
</description>
<description lang="de">Mit diesem Plugin kann man alle Videos auf
Gamestar.de und Gamepro.de anschauen.
SOllte es beim abspielen der Videos zu problemen kommen (precaching
mittein im Video) bietet das Plugin die möglichkeit zum lokalen cachen der
Videos:
diff --git a/plugin.video.gamestar/changelog.txt
b/plugin.video.gamestar/changelog.txt
index b27852f..527911a 100644
--- a/plugin.video.gamestar/changelog.txt
+++ b/plugin.video.gamestar/changelog.txt
@@ -1,4 +1,4 @@
-0.0.9 - change from background-config to xbmc-supported config
+0.0.9 - chang from background-config to xbmc-supported config
0.0.8 - Add support for Gamepro.de
0.0.7 - Background script supports bandwidth-limitiation. Enabeling
Reloadoding. Aborted Downloads no longer be played
0.0.6 - Minor bugfixing
diff --git a/plugin.video.gamestar/default.py b/plugin.video.gamestar/default.py
index efb2100..0926b72 100644
--- a/plugin.video.gamestar/default.py
+++ b/plugin.video.gamestar/default.py
@@ -38,7 +38,11 @@ def get_params():
__settings__ = xbmcaddon.Addon(id='plugin.video.gamestar')
rootPath = __settings__.getAddonInfo('path');
-gui = SimpleXbmcGui(__settings__.getSetting('path'));
+archivePath = __settings__.getSetting('path');
+if(archivePath == ""):
+ archivePath = None;
+
+gui = SimpleXbmcGui(archivePath);
webSite=GamestarWeb(gui);
gui.openMenuContext();
@@ -49,7 +53,7 @@ gui.log("action: "+action);
if(action == "list"):
forcedPrecaching = __settings__.getSetting(params.get("cat", 0));
- forcedPrecaching = forcedPrecaching == '1' or forcedPrecaching == '3'
+ forcedPrecaching = archivePath is not None and (forcedPrecaching == '1' or
forcedPrecaching == '3')
category = webSite.categories[cat];
webSite.builCategoryMenu(category,forcedPrecaching);
elif(action == "download"):
diff --git a/plugin.video.gamestar/resources/language/English/strings.xml
b/plugin.video.gamestar/resources/language/English/strings.xml
index f56b4d2..a65f2ab 100644
--- a/plugin.video.gamestar/resources/language/English/strings.xml
+++ b/plugin.video.gamestar/resources/language/English/strings.xml
@@ -13,7 +13,7 @@
<string id="30011">Gamestar TV</string>
<string id="30012">Gamepro videos</string>
<string id="30101">Don't cache</string>
- <string id="30102">Cache if needed</string>
+ <string id="30102">Cache if need</string>
<string id="30103">Cache</string>
<string id="30104">Force caching</string>
</strings>
diff --git a/plugin.video.gamestar/simplexbmc.py
b/plugin.video.gamestar/simplexbmc.py
index 05c5649..4f4ff16 100644
--- a/plugin.video.gamestar/simplexbmc.py
+++ b/plugin.video.gamestar/simplexbmc.py
@@ -86,14 +86,15 @@ class SimpleXbmcGui(object):
def _pbhook(self, numblocks, blocksize, filesize, url=None,dp=None):
try:
- percent = min((numblocks*blocksize*100)/filesize, 100)
- self.dp.update(percent)
+ percent = min((numblocks*blocksize*100)/filesize, 100)
+ self.dp.update(percent)
except:
- percent = 100
- self.dp.update(percent)
- if dp.iscanceled():
- self.dp.close()
-
+ percent = 100
+ self.dp.update(percent)
+ if dp.iscanceled():
+ self.dp.close()
+ sys.exit("Download aborted")
+
def refresh(self):
xbmc.executebuiltin("Container.Refresh");
-----------------------------------------------------------------------
Summary of changes:
plugin.image.iphoto/addon.py | 88 +++++++++++++-------
plugin.image.iphoto/addon.xml | 2 +-
plugin.image.iphoto/changelog.txt | 5 +
.../resources/language/English/strings.xml | 11 ++-
plugin.image.iphoto/resources/lib/iphoto_parser.py | 30 ++++----
plugin.image.iphoto/resources/settings.xml | 28 +++++--
plugin.video.gamestar/addon.xml | 10 +-
plugin.video.gamestar/changelog.txt | 2 +-
plugin.video.gamestar/default.py | 8 ++-
.../resources/language/English/strings.xml | 2 +-
plugin.video.gamestar/simplexbmc.py | 15 ++--
11 files changed, 128 insertions(+), 73 deletions(-)
mode change 100755 => 100644 plugin.image.iphoto/addon.py
mode change 100755 => 100644 plugin.image.iphoto/resources/__init__.py
mode change 100755 => 100644 plugin.image.iphoto/resources/lib/__init__.py
mode change 100755 => 100644 plugin.image.iphoto/resources/lib/iphoto_parser.py
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons