The branch, frodo has been updated
via d1573782062a58a52d0be7920e75b51192d5d865 (commit)
via 1f846d90a83322487d42385496c7c1835cc25d49 (commit)
via aa25bd20e994fbfcc1f1860257b4c275e61ca5ec (commit)
via c47e9d870a46c497e76b2d0c9b0c66340afed1d6 (commit)
from ff80138129fa320ca8d9873199313ec8f8e77adb (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=d1573782062a58a52d0be7920e75b51192d5d865
commit d1573782062a58a52d0be7920e75b51192d5d865
Author: beenje <[email protected]>
Date: Wed Jan 8 15:04:11 2014 +0100
[plugin.video.trakt_list_manager] updated to version 0.1.4
diff --git a/plugin.video.trakt_list_manager/addon.py
b/plugin.video.trakt_list_manager/addon.py
index eba9754..5a3e8c7 100644
--- a/plugin.video.trakt_list_manager/addon.py
+++ b/plugin.video.trakt_list_manager/addon.py
@@ -19,7 +19,7 @@
from xbmcswift2 import Plugin, xbmc, xbmcgui
from resources.lib.api import TraktListApi, AuthenticationError, \
- LIST_PRIVACY_IDS
+ LIST_PRIVACY_IDS, NONE
API_KEY = '2ce240ab6543ebd7d84abe5268a822d5'
WATCHLIST_SLUG = 'WATCHLIST' # hacky but reduces code amount...
@@ -156,8 +156,8 @@ def show_customlist(list_slug):
for item in items:
item['context_menu'] = context_menu(
list_slug=list_slug,
- imdb_id=item['info'].get('code', ''),
- tmdb_id=item.get('tmdb_id', '')
+ imdb_id=item['info'].get('code', NONE),
+ tmdb_id=item.get('tmdb_id', NONE)
)
plugin.set_content('movies')
items.append({
@@ -205,8 +205,8 @@ def show_watchlist():
items = format_movies(api.get_watchlist())
for item in items:
item['context_menu'] = context_menu(
- imdb_id=item['info'].get('code', ''),
- tmdb_id=item.get('tmdb_id', '')
+ imdb_id=item['info'].get('code', NONE),
+ tmdb_id=item.get('tmdb_id', NONE)
)
items.append({
'label': _('add_movie'),
diff --git a/plugin.video.trakt_list_manager/addon.xml
b/plugin.video.trakt_list_manager/addon.xml
index d2fc98e..06356c4 100644
--- a/plugin.video.trakt_list_manager/addon.xml
+++ b/plugin.video.trakt_list_manager/addon.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="plugin.video.trakt_list_manager" name="Trakt.tv List Manager"
version="0.1.3" provider-name="Tristan Fischer ([email protected])">
+<addon id="plugin.video.trakt_list_manager" name="Trakt.tv List Manager"
version="0.1.4" provider-name="Tristan Fischer ([email protected])">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
<import addon="script.module.xbmcswift2" version="2.4.0"/>
diff --git a/plugin.video.trakt_list_manager/changelog.txt
b/plugin.video.trakt_list_manager/changelog.txt
index d3fa5d5..44abf2b 100644
--- a/plugin.video.trakt_list_manager/changelog.txt
+++ b/plugin.video.trakt_list_manager/changelog.txt
@@ -1,3 +1,7 @@
+0.1.4 (08.01.2014)
+ - fix adding or deleting of movies with only tmdb_id or imdb_id
+ - fix urlencoding bug (e.g. on movies with colon in title
+
0.1.3 (23.06.2013)
- Added "Add to CouchPotato"-Feature
- Fix Delete Movie from List
diff --git a/plugin.video.trakt_list_manager/resources/lib/api.py
b/plugin.video.trakt_list_manager/resources/lib/api.py
index b5e67f0..b41a5d6 100644
--- a/plugin.video.trakt_list_manager/resources/lib/api.py
+++ b/plugin.video.trakt_list_manager/resources/lib/api.py
@@ -18,13 +18,14 @@
#
import json
-from urllib import quote_plus as quote
+from urllib import quote_plus as quote, urlencode
from urllib2 import urlopen, Request, HTTPError, URLError
from hashlib import sha1
API_URL = 'api.trakt.tv/'
USER_AGENT = 'XBMC Add-on Trakt.tv List Manager'
+NONE = 'NONE'
LIST_PRIVACY_IDS = (
'private',
@@ -67,23 +68,23 @@ class TraktListApi():
return self.connected
def get_watchlist(self):
- path = 'user/watchlist/movies.json/%(api_key)s/%(username)s'
+ path = 'user/watchlist/movies.json/{api_key}/{username}'
return self._api_call(path, auth=True)
def get_lists(self):
- path = 'user/lists.json/%(api_key)s/%(username)s'
+ path = 'user/lists.json/{api_key}/{username}'
return self._api_call(path, auth=True)
def search_movie(self, query):
- path = 'search/movies.json/%(api_key)s/' + quote(query)
+ path = 'search/movies.json/{api_key}/?' + urlencode({'query': query})
return self._api_call(path)
def get_list(self, list_slug):
- path = 'user/list.json/%(api_key)s/%(username)s/' + quote(list_slug)
+ path = 'user/list.json/{api_key}/{username}/' + quote(list_slug)
return self._api_call(path, auth=True)
def add_list(self, name, privacy_id=None, description=None):
- path = 'lists/add/%(api_key)s'
+ path = 'lists/add/{api_key}'
post = {
'name': name,
'description': description or '',
@@ -92,7 +93,7 @@ class TraktListApi():
return self._api_call(path, post=post, auth=True)
def del_list(self, list_slug):
- path = 'lists/delete/%(api_key)s'
+ path = 'lists/delete/{api_key}'
post = {
'slug': list_slug
}
@@ -102,11 +103,11 @@ class TraktListApi():
if not tmdb_id and not imdb_id:
raise AttributeError('Need one of tmdb_id, imdb_id')
item = {'type': 'movie'}
- if tmdb_id:
+ if tmdb_id and tmdb_id != NONE:
item['tmdb_id'] = tmdb_id
- if imdb_id:
+ if imdb_id and imdb_id != NONE:
item['imdb_id'] = imdb_id
- path = 'lists/items/add/%(api_key)s'
+ path = 'lists/items/add/{api_key}'
post = {
'slug': list_slug,
'items': [item],
@@ -117,11 +118,11 @@ class TraktListApi():
if not tmdb_id and not imdb_id:
raise AttributeError('Need one of tmdb_id, imdb_id')
item = {'type': 'movie'}
- if tmdb_id:
+ if tmdb_id and tmdb_id != NONE:
item['tmdb_id'] = tmdb_id
- if imdb_id:
+ if imdb_id and imdb_id != NONE:
item['imdb_id'] = imdb_id
- path = 'movie/watchlist/%(api_key)s'
+ path = 'movie/watchlist/{api_key}'
post = {
'movies': [item],
}
@@ -131,11 +132,11 @@ class TraktListApi():
if not tmdb_id and not imdb_id:
raise AttributeError('Need one of tmdb_id, imdb_id')
item = {'type': 'movie'}
- if tmdb_id:
+ if tmdb_id and tmdb_id != NONE:
item['tmdb_id'] = tmdb_id
- if imdb_id:
+ if imdb_id and imdb_id != NONE:
item['imdb_id'] = imdb_id
- path = 'lists/items/delete/%(api_key)s'
+ path = 'lists/items/delete/{api_key}'
post = {
'slug': list_slug,
'items': [item],
@@ -146,25 +147,25 @@ class TraktListApi():
if not tmdb_id and not imdb_id:
raise AttributeError('Need one of tmdb_id, imdb_id')
item = {'type': 'movie'}
- if tmdb_id:
+ if tmdb_id and tmdb_id != NONE:
item['tmdb_id'] = tmdb_id
- if imdb_id:
+ if imdb_id and imdb_id != NONE:
item['imdb_id'] = imdb_id
- path = 'movie/unwatchlist/%(api_key)s'
+ path = 'movie/unwatchlist/{api_key}'
post = {
'movies': [item],
}
return self._api_call(path, post=post, auth=True)
def _test_credentials(self):
- path = 'account/test/%(api_key)s'
+ path = 'account/test/{api_key}'
return self._api_call(path, auth=True).get('status') == 'success'
def _api_call(self, path, post={}, auth=False):
- url = self._api_url + path % {
- 'api_key': self._api_key,
- 'username': self._username
- }
+ url = self._api_url + path.format(
+ api_key=self._api_key,
+ username=self._username,
+ )
self.log('_api_call using url: %s' % url)
if auth:
post.update({
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=1f846d90a83322487d42385496c7c1835cc25d49
commit 1f846d90a83322487d42385496c7c1835cc25d49
Author: beenje <[email protected]>
Date: Wed Jan 8 15:04:10 2014 +0100
[plugin.video.myvideo_de] updated to version 0.9.5
diff --git a/plugin.video.myvideo_de/addon.py b/plugin.video.myvideo_de/addon.py
index c00b351..bef1d89 100644
--- a/plugin.video.myvideo_de/addon.py
+++ b/plugin.video.myvideo_de/addon.py
@@ -129,7 +129,7 @@ def __add_items(entries, next_page=None, prev_page=None):
return context_menu
def format_episode_title(title):
- if fix_show_title and ('Folge' in title or 'Staffel' in title):
+ if fix_show_title and '-' in title and ('Folge' in title or 'Staffel'
in title):
title, show = title.rsplit('-', 1)
title = title.replace('Staffel ', 'S').replace(' Folge ', 'E')
title = title.replace('Folge ', 'E').replace('Ganze Folge', '')
diff --git a/plugin.video.myvideo_de/addon.xml
b/plugin.video.myvideo_de/addon.xml
index cf26a00..15cd717 100644
--- a/plugin.video.myvideo_de/addon.xml
+++ b/plugin.video.myvideo_de/addon.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="plugin.video.myvideo_de" name="MyVideo.de" version="0.9.4"
provider-name="Tristan Fischer ([email protected])">
+<addon id="plugin.video.myvideo_de" name="MyVideo.de" version="0.9.5"
provider-name="Tristan Fischer ([email protected])">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
<import addon="script.module.xbmcswift2" version="2.4.0"/>
diff --git a/plugin.video.myvideo_de/changelog.txt
b/plugin.video.myvideo_de/changelog.txt
index 413ce15..96a6587 100644
--- a/plugin.video.myvideo_de/changelog.txt
+++ b/plugin.video.myvideo_de/changelog.txt
@@ -1,3 +1,6 @@
+0.9.5 (08.01.2014)
+ - added SpecialVideoChannelScraper (required for e.g. Spartacus,
Millionaerswahl)
+
0.9.4 (12.09.2013)
- added "ProSieben Maxx", "YEP!" and "BBC" to TV->Channels
diff --git a/plugin.video.myvideo_de/resources/lib/scraper.py
b/plugin.video.myvideo_de/resources/lib/scraper.py
index 84f71d6..50df6cf 100644
--- a/plugin.video.myvideo_de/resources/lib/scraper.py
+++ b/plugin.video.myvideo_de/resources/lib/scraper.py
@@ -360,6 +360,9 @@ class ChannelScraper(BaseScraper):
if tree.find(*MusicChannelScraper.subtree_props):
self.log('Redirecting to scraper-class: MusicChannelScraper')
return MusicChannelScraper().parse(tree)
+ if tree.find(*SpecialVideoChannelScraper.subtree_props):
+ self.log('Redirecting to scraper-class:
SpecialVideoChannelScraper')
+ return SpecialVideoChannelScraper().parse(tree)
clips_found = tree.find(*VideoChannelClipScraper.subtree_props)
full_found = tree.find(*VideoChannelFullScraper.subtree_props)
if clips_found or full_found:
@@ -382,12 +385,20 @@ class ChannelScraper(BaseScraper):
elif self.extra_arg == 'FULL':
return VideoChannelFullScraper().parse(tree)
elif self.extra_arg == 'CLIPS':
- return VideoChannelClipScraper().parse(tree)
+ return VideoChannelClipScraper().parse(tree)
elif clips_found:
return VideoChannelClipScraper().parse(tree)
elif full_found:
return VideoChannelFullScraper().parse(tree)
-
+
+
+class SpecialVideoChannelScraper(BaseScraper):
+ a_prop_re = re.compile('is-video')
+ section_re = re.compile('videolist--item')
+ subtree_props = ('div', {'class': 'layout--module is-eyecatcher'})
+ section_props = ('div', {'class': section_re})
+ a_props = ('a', {'class': a_prop_re})
+ img_props = ('img', {'class': 'thumbnail--pic'})
class VideoChannelClipScraper(BaseScraper):
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=aa25bd20e994fbfcc1f1860257b4c275e61ca5ec
commit aa25bd20e994fbfcc1f1860257b4c275e61ca5ec
Author: beenje <[email protected]>
Date: Wed Jan 8 15:04:08 2014 +0100
[plugin.video.nolife] updated to version 2.17.2
diff --git a/plugin.video.nolife/addon.xml b/plugin.video.nolife/addon.xml
index f2e2dfe..cfad4f1 100644
--- a/plugin.video.nolife/addon.xml
+++ b/plugin.video.nolife/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.nolife"
name="Nolife Online"
- version="2.17.1"
+ version="2.17.2"
provider-name="gormux">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
diff --git a/plugin.video.nolife/default.py b/plugin.video.nolife/default.py
index c81d1e0..1786e69 100644
--- a/plugin.video.nolife/default.py
+++ b/plugin.video.nolife/default.py
@@ -174,8 +174,11 @@ def getlastVideos():
Get the videos in the "last videos" menu option
"""
- showseen = settings.getSetting( "showseen" )
- showlast = int(settings.getSetting( "showlast" ).split('.')[0])
+ showseen = settings.getSetting( "showseen" )
+ showpromo = settings.getSetting( "showpromo" )
+ showannounce = settings.getSetting( "showannounce" )
+ agelimit = settings.getSetting( "agelimit" )
+ showlast = int(settings.getSetting( "showlast" ).split('.')[0])
i = 0
emissions = []
finished = False
@@ -194,13 +197,26 @@ def getlastVideos():
videoInfo = extractVideoInfo(element)
if videoInfo != None:
if (showseen == "true" or (showseen == "false" and
videoInfo.seen == False)):
- if isAvailableForUser(videoInfo.availability):
- emissions.append([videoInfo.id,
- videoInfo.name,
- videoInfo.desc,
- videoInfo.duration,
- videoInfo.seen,
- videoInfo.thumb])
+ if videoInfo.videocat == "Autopromo" and showpromo ==
"false":
+ continue
+ if videoInfo.videocat == "Annonce" and showannounce ==
"false":
+ continue
+ if ( videoInfo.agelimit == None or agelimit == "Aucun" ):
+ if isAvailableForUser(videoInfo.availability):
+ emissions.append([videoInfo.id,
+ videoInfo.name,
+ videoInfo.desc,
+ videoInfo.duration,
+ videoInfo.seen,
+ videoInfo.thumb])
+ elif int(videoInfo.agelimit) < int(agelimit):
+ if isAvailableForUser(videoInfo.availability):
+ emissions.append([videoInfo.id,
+ videoInfo.name,
+ videoInfo.desc,
+ videoInfo.duration,
+ videoInfo.seen,
+ videoInfo.thumb])
i = i + 1
for emission in emissions:
@@ -527,6 +543,13 @@ def extractVideoInfo(element):
info.desc =
remove_html_tags(re.compile(reg_desc).findall(str(element))[0][30:])
info.name =
remove_html_tags(re.compile('<h3.*').findall(str(element))[0])
+
+ info.videocat =
remove_html_tags(re.compile('<strong.*').findall(str(element))[0])
+
+ try:
+ info.agelimit =
re.compile('<img.*').findall(str(element))[1][56:][:2]
+ except:
+ info.agelimit = None
return info
diff --git a/plugin.video.nolife/resources/settings.xml
b/plugin.video.nolife/resources/settings.xml
index 7930cea..64eae2b 100644
--- a/plugin.video.nolife/resources/settings.xml
+++ b/plugin.video.nolife/resources/settings.xml
@@ -3,10 +3,10 @@
<!-- Authentication -->
<category label="30001">
- <setting id="authenticate" type="bool" label="30002" default="false" />
- <setting id="username" type="text" label="30003" enable="eq(-1,true)"
default="" />
- <setting id="password" type="text" option="hidden" label="30004"
default="" enable="eq(-2,true)"/>
- <setting id="extracts" type="bool" option="hidden" label="30005"
default="" enable="eq(-3,false)"/>
+ <setting id="authenticate" type="bool" label="30010" default="false" />
+ <setting id="username" type="text" label="30011" enable="eq(-1,true)"
default="" />
+ <setting id="password" type="text" option="hidden" label="30012"
default="" enable="eq(-2,true)"/>
+ <setting id="extracts" type="bool" option="hidden" label="30013"
default="" enable="eq(-3,false)"/>
</category>
<!-- Affichage -->
<category label="30006">
@@ -14,6 +14,9 @@
<setting id="showall" type="bool" label="30008" default="false"/>
<setting id="show_n" subsetting="true" type="slider" label="30009"
default="30" range="10,10,100" enable="!eq(-1,true)" option="int"/>
<setting id="showseen" type="bool" label="30011" default="true"/>
+ <setting id="showpromo" type="bool" label="30024" default="true"/>
+ <setting id="showannounce" type="bool" label="30025" default="true"/>
+ <setting id="agelimit" type="labelenum" label="30026"
values="Aucun|10|12|16|18" default="Aucun"/>
<setting id="showlast" subsetting="true" type="slider" label="30012"
default="30" range="5,5,60" option="int"/>
<setting id="autorefresh" type="bool" label="30013" default="true"/>
<setting id="quality" type="enum" label="30010"
values="LQ|HQ|TV|720p|1080p" default="TV"/>
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=c47e9d870a46c497e76b2d0c9b0c66340afed1d6
commit c47e9d870a46c497e76b2d0c9b0c66340afed1d6
Author: beenje <[email protected]>
Date: Wed Jan 8 15:04:01 2014 +0100
[plugin.audio.sky.fm] updated to version 3.0.3
diff --git a/plugin.audio.sky.fm/addon.xml b/plugin.audio.sky.fm/addon.xml
index d0642a6..80ced60 100644
--- a/plugin.audio.sky.fm/addon.xml
+++ b/plugin.audio.sky.fm/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.audio.sky.fm"
name="Sky.fm"
- version="3.0.2"
+ version="3.0.3"
provider-name="qualisoft.dk - Tim C. Steinmetz">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
diff --git a/plugin.audio.sky.fm/changelog.txt
b/plugin.audio.sky.fm/changelog.txt
index c9d9df6..4cfa0cc 100644
--- a/plugin.audio.sky.fm/changelog.txt
+++ b/plugin.audio.sky.fm/changelog.txt
@@ -3,6 +3,10 @@
- Removed feature
+8. January 2014 v3.0.3
+* Fixed parsing of Favorites playlist
+
+
3. January 2014 v3.0.2
* Fixed file pathing for the config file as well - DOH!
diff --git a/plugin.audio.sky.fm/default.py b/plugin.audio.sky.fm/default.py
index 3caae20..ecf6c24 100644
--- a/plugin.audio.sky.fm/default.py
+++ b/plugin.audio.sky.fm/default.py
@@ -362,7 +362,7 @@ class musicAddonXbmc:
"""
def getFavoriteChannels(self, html, allChannels):
channels = []
- re_favoriteData =
re.compile("NS\('AudioAddict.API.Config.member'\).Favorites\s*=\s*([^;]+);",
re.M | re.I)
+ re_favoriteData =
re.compile("NS\('AudioAddict.API.Config.member'\).favorites\s*=\s*([^;]+);",
re.M | re.I)
m = re_favoriteData.findall(html)
# if favorites list is empty, return empty list
@@ -371,12 +371,14 @@ class musicAddonXbmc:
else:
favorites = json.loads(re_favoriteData.findall(html)[0])
+ pprint(favorites)
+
# sort favorites after user selected positions
- favorites = sorted(favorites, key=lambda k: k['position'])
+ favorites = sorted(favorites, key=lambda k:
k['channel']['favorite_position'])
for fav in favorites:
for channel in allChannels:
- if fav['channel_id'] == channel['id']:
+ if fav['channel']['id'] == channel['id']:
channels.append(dict(channel))
return channels
diff --git a/plugin.audio.sky.fm/resources/language/English/strings.xml
b/plugin.audio.sky.fm/resources/language/English/strings.xml
index c1ff363..ce1e7b6 100644
--- a/plugin.audio.sky.fm/resources/language/English/strings.xml
+++ b/plugin.audio.sky.fm/resources/language/English/strings.xml
@@ -24,7 +24,7 @@
<string id="30009">Homepage</string>
<string id="30015">Get HQ 256kb/sec streams with Sky Premium at
http://www.sky.fm</string>
- <string id="30016">Version: 3.0.2</string>
+ <string id="30016">Version: 3.0.3</string>
<string id="30017">Author: Tim C. 'Bitcrusher' Steinmetz</string>
<string id="30018">Homepage: http://qualisoft.dk</string>
<string id="30019">E-mail: [email protected]</string>
-----------------------------------------------------------------------
Summary of changes:
plugin.audio.sky.fm/addon.xml | 2 +-
plugin.audio.sky.fm/changelog.txt | 4 ++
plugin.audio.sky.fm/default.py | 8 ++-
.../resources/language/English/strings.xml | 2 +-
plugin.video.myvideo_de/addon.py | 2 +-
plugin.video.myvideo_de/addon.xml | 2 +-
plugin.video.myvideo_de/changelog.txt | 3 +
plugin.video.myvideo_de/resources/lib/scraper.py | 15 +++++-
plugin.video.nolife/addon.xml | 2 +-
plugin.video.nolife/default.py | 41 +++++++++++++----
.../language/{english => English}/strings.xml | 3 +
.../language/{french => French}/strings.xml | 3 +
plugin.video.nolife/resources/settings.xml | 11 +++--
plugin.video.trakt_list_manager/addon.py | 10 ++--
plugin.video.trakt_list_manager/addon.xml | 2 +-
plugin.video.trakt_list_manager/changelog.txt | 4 ++
.../resources/lib/api.py | 49 ++++++++++----------
17 files changed, 110 insertions(+), 53 deletions(-)
rename plugin.video.nolife/resources/language/{english => English}/strings.xml
(90%)
rename plugin.video.nolife/resources/language/{french => French}/strings.xml
(89%)
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT
organizations don't have a clear picture of how application performance
affects their revenue. With AppDynamics, you get 100% visibility into your
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons