The branch, eden has been updated
via 914487870d2136e3396e038b04b2f5cf879d49c0 (commit)
via 5cf182f3b132c4a058fcf3419b0593e46896e424 (commit)
via b245766204b62fa5edd161494becc72ce5d81545 (commit)
from 21beb68439afc6c50a11958bf2b5b3e72719d99f (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=914487870d2136e3396e038b04b2f5cf879d49c0
commit 914487870d2136e3396e038b04b2f5cf879d49c0
Author: beenje <[email protected]>
Date: Tue Dec 18 22:59:50 2012 +0100
[plugin.video.pbs] updated to version 2.0.6
diff --git a/plugin.video.pbs/addon.xml b/plugin.video.pbs/addon.xml
index 648eb12..deaa6f5 100644
--- a/plugin.video.pbs/addon.xml
+++ b/plugin.video.pbs/addon.xml
@@ -1,13 +1,14 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.pbs"
name="PBS"
- version="2.0.4"
+ version="2.0.6"
provider-name="stacked">
<requires>
<import addon="xbmc.python" version="2.0"/>
<import addon="script.module.simplejson" version="2.0.10"/>
<import addon="script.module.buggalo" version="1.1.2"/>
<import addon="script.module.parsedom" version="1.3.0"/>
+ <import addon="script.module.requests" version="0.13.2"/>
</requires>
<extension point="xbmc.python.pluginsource"
library="default.py">
diff --git a/plugin.video.pbs/changelog.txt b/plugin.video.pbs/changelog.txt
index a38304b..1446f17 100644
--- a/plugin.video.pbs/changelog.txt
+++ b/plugin.video.pbs/changelog.txt
@@ -1,3 +1,14 @@
+[B]Version 2.0.6[/B]
+
+- Fixed access_voilation error
+- Fixed 'NoneType' has no len()" error
+
+[B]Version 2.0.5[/B]
+
+- Fixed duration issue in Frodo by using addStreamInfo()
+- Fixed PBS Kids backup_url error
+- Fixed issue with retries on HTTP 404 errors
+
[B]Version 2.0.4[/B]
- Fixed HTTP 404 Error on PBS Kids videos
diff --git a/plugin.video.pbs/coveapi/connection.py
b/plugin.video.pbs/coveapi/connection.py
index 56aa9a3..b98ddf1 100644
--- a/plugin.video.pbs/coveapi/connection.py
+++ b/plugin.video.pbs/coveapi/connection.py
@@ -191,6 +191,7 @@ class Requestor(object):
if error == None:
try:
data =
json.loads(response.read())['results']
+ test_len = len(data)
if data != None:
return data
except Exception, e:
diff --git a/plugin.video.pbs/default.py b/plugin.video.pbs/default.py
index 27a2c78..642b169 100644
--- a/plugin.video.pbs/default.py
+++ b/plugin.video.pbs/default.py
@@ -5,8 +5,8 @@ from urllib2 import Request, urlopen, URLError, HTTPError
plugin = "PBS"
__author__ = 'stacked <[email protected]>'
__url__ = 'http://code.google.com/p/plugin/'
-__date__ = '11-28-2012'
-__version__ = '2.0.4'
+__date__ = '12-17-2012'
+__version__ = '2.0.6'
settings = xbmcaddon.Addon( id = 'plugin.video.pbs' )
buggalo.SUBMIT_URL = 'http://www.xbmc.byethost17.com/submit.php'
dbg = False
@@ -48,7 +48,6 @@ def build_main_directory():
except:
pass
xbmcplugin.addSortMethod( handle = int(sys.argv[1]), sortMethod =
xbmcplugin.SORT_METHOD_NONE )
- xbmcplugin.setContent(int( sys.argv[1] ), 'episodes')
setViewMode("501")
xbmcplugin.endOfDirectory( int( sys.argv[1] ) )
@@ -107,7 +106,6 @@ def build_programs_directory( name, page ):
# u = { 'mode': '1', 'page': str( int( page ) + 1 ) }
# ListItem(label = '[Next Page (' + str( int( page ) + 2 ) +
')]', image = next_thumb, url = u, isFolder = True, infoLabels = False)
xbmcplugin.addSortMethod( handle = int(sys.argv[1]), sortMethod =
xbmcplugin.SORT_METHOD_NONE )
- xbmcplugin.setContent(int( sys.argv[1] ), 'episodes')
if name == settings.getLocalizedString( 30014 ):
setViewMode("500")
else:
@@ -123,7 +121,6 @@ def build_topics_directory():
ListItem(label = results['name'], image = topics_thumb,
url = u, isFolder = True, infoLabels = False)
item = results['name']
xbmcplugin.addSortMethod( handle = int(sys.argv[1]), sortMethod =
xbmcplugin.SORT_METHOD_NONE )
- xbmcplugin.setContent(int( sys.argv[1] ), 'episodes')
setViewMode("515")
xbmcplugin.endOfDirectory( int( sys.argv[1] ) )
@@ -165,7 +162,6 @@ def build_search_directory( url, page ):
ListItem(label = '[Next Page (' + str( int( page ) + 2 ) +
')]', image = next_thumb, url = u, isFolder = True, infoLabels = False)
xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_STUDIO )
xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_LABEL )
- xbmcplugin.setContent(int( sys.argv[1] ), 'episodes')
setViewMode("503")
xbmcplugin.endOfDirectory( int( sys.argv[1] ) )
@@ -219,7 +215,7 @@ def find_videos( name, program_id, topic, page ):
else:
url =
results['mediafiles'][playable]['video_download_url']
mode = '7'
- infoLabels = { "Title":
results['title'].encode('utf-8'), "Director": "PBS", "Studio": name, "Plot":
results['long_description'].encode('utf-8'), "Duration":
str(datetime.timedelta(milliseconds=int(results['mediafiles'][0]['length_mseconds']))),
"Aired": results['airdate'].rsplit(' ')[0] }
+ infoLabels = { "Title":
results['title'].encode('utf-8'), "Director": "PBS", "Studio": name, "Plot":
results['long_description'].encode('utf-8'), "Duration":
int(results['mediafiles'][0]['length_mseconds'])/1000, "Aired":
results['airdate'].rsplit(' ')[0] }
u = { 'mode': mode, 'name': urllib.quote_plus(
results['title'].encode('utf-8') ), 'url': urllib.quote_plus( url ), 'thumb':
urllib.quote_plus( thumb ), 'plot': urllib.quote_plus(
results['long_description'].encode('utf-8') ), 'studio': urllib.quote_plus(
name ), 'backup_url': urllib.quote_plus( backup_url ) }
ListItem(label = results['title'].encode('utf-8'),
image = thumb, url = u, isFolder = False, infoLabels = infoLabels)
if topic == 'False':
@@ -237,7 +233,6 @@ def find_videos( name, program_id, topic, page ):
xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_UNSORTED )
xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_VIDEO_RUNTIME )
xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_LABEL )
- xbmcplugin.setContent(int( sys.argv[1] ), 'episodes')
setViewMode("503")
xbmcplugin.endOfDirectory( int( sys.argv[1] ) )
@@ -247,18 +242,28 @@ def play_video( name, url, thumb, plot, studio,
starttime, backup_url ):
ok = dialog.ok( plugin , settings.getLocalizedString( 30008 ) )
return
if url.find('http://urs.pbs.org/redirect/') != -1:
- print 'PBS - Using backup_url'
- if backup_url != 'None':
- play_mp4( name, backup_url, thumb, plot, studio,
starttime )
- return
- else:
- dialog = xbmcgui.Dialog()
- ok = dialog.ok( plugin , settings.getLocalizedString(
30008 ) )
- ok = dialog.ok(plugin, settings.getLocalizedString(
30051 ))
- buggalo.addExtraData('url', url)
- buggalo.addExtraData('info', studio + ' - ' + name)
- raise Exception("PBS Kids backup_url ERROR")
+ try:
+ import requests
+ headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1;
WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1'}
+ config = {'max_retries': 10}
+ r = requests.head(url , headers=headers, config=config,
allow_redirects=False)
+ new_url = r.headers['location']
+ play_mp4( name, new_url, thumb, plot, studio, starttime
)
return
+ except Exception, e:
+ print 'PBS - Using backup_url'
+ if backup_url != 'None':
+ play_mp4( name, backup_url, thumb, plot,
studio, starttime )
+ return
+ else:
+ dialog = xbmcgui.Dialog()
+ ok = dialog.ok( plugin ,
settings.getLocalizedString( 30008 ) )
+ ok = dialog.ok(plugin,
settings.getLocalizedString( 30051 ))
+ buggalo.addExtraData('url', url)
+ buggalo.addExtraData('error', str(e))
+ buggalo.addExtraData('info', studio + ' - ' +
name)
+ raise Exception("redirect_url ERROR")
+ return
data = open_url( url + '&format=SMIL' )
print 'PBS - ' + studio + ' - ' + name
try:
@@ -310,14 +315,14 @@ def play_video( name, url, thumb, plot, studio,
starttime, backup_url ):
else:
rtmp_url = base
playpath = "mp4:" + src.replace('mp4:','')
- listitem = xbmcgui.ListItem( label = name, iconImage =
"DefaultVideo.png", thumbnailImage = thumb, path = clean( rtmp_url ))
+ listitem = xbmcgui.ListItem( label = name, iconImage = thumb,
thumbnailImage = thumb, path = clean( rtmp_url ))
listitem.setInfo( type="Video", infoLabels={ "Title": name ,
"Director": "PBS", "Studio": "PBS: " + studio, "Plot": plot } )
if playpath != None:
listitem.setProperty("PlayPath", playpath)
xbmcplugin.setResolvedUrl( handle = int( sys.argv[1] ), succeeded =
True, listitem = listitem )
def play_mp4( name, url, thumb, plot, studio, starttime ):
- listitem = xbmcgui.ListItem( label = name, iconImage =
"DefaultVideo.png", thumbnailImage = thumb, path = clean( url ) )
+ listitem = xbmcgui.ListItem( label = name, iconImage = thumb,
thumbnailImage = thumb, path = clean( url ) )
listitem.setInfo( type="Video", infoLabels={ "Title": name ,
"Director": "PBS", "Studio": "PBS: " + studio, "Plot": plot } )
xbmcplugin.setResolvedUrl( handle = int( sys.argv[1] ), succeeded =
True, listitem = listitem )
@@ -326,6 +331,11 @@ def ListItem(label, image, url, isFolder, infoLabels =
False):
listitem.setProperty('fanart_image', fanart)
if infoLabels:
listitem.setInfo( type = "Video", infoLabels = infoLabels )
+ if "Duration" in infoLabels:
+ if hasattr( listitem, "addStreamInfo" ):
+ listitem.addStreamInfo('video', { 'duration':
infoLabels["Duration"] })
+ else:
+ listitem.setInfo( type="Video", infoLabels={
"Duration":
str(datetime.timedelta(milliseconds=int(infoLabels["Duration"])*1000)) } )
if not isFolder:
listitem.setProperty('IsPlayable', 'true')
u = sys.argv[0] + '?'
@@ -344,7 +354,7 @@ def open_url(url):
data = get_page(url)
if data['content'] != None and data['error'] == None:
return data['content']
- if data['error'] == 'HTTP Error 404: NOT FOUND':
+ if data['error'].find('404:') != -1:
break
except Exception, e:
data['error'] = str(e)
@@ -379,6 +389,7 @@ def get_page(url):
def setViewMode(id):
if xbmc.getSkinDir() == "skin.confluence":
+ xbmcplugin.setContent(int( sys.argv[1] ), 'episodes')
xbmc.executebuiltin("Container.SetViewMode(" + id + ")")
def getParameters(parameterString):
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=5cf182f3b132c4a058fcf3419b0593e46896e424
commit 5cf182f3b132c4a058fcf3419b0593e46896e424
Author: beenje <[email protected]>
Date: Tue Dec 18 22:59:45 2012 +0100
[plugin.video.nba.video] updated to version 1.0.2
diff --git a/plugin.video.nba.video/addon.xml b/plugin.video.nba.video/addon.xml
index 3e94819..f84e889 100644
--- a/plugin.video.nba.video/addon.xml
+++ b/plugin.video.nba.video/addon.xml
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.nba.video"
name="NBA Video"
- version="1.0.1"
+ version="1.0.2"
provider-name="stacked">
<requires>
<import addon="xbmc.python" version="2.0"/>
<import addon="script.module.buggalo" version="1.1.2"/>
<import addon="script.module.simplejson" version="2.0.10"/>
- <import addon="script.module.parsedom" version="1.2.0"/>
+ <import addon="script.module.parsedom" version="1.3.0"/>
</requires>
<extension point="xbmc.python.pluginsource"
library="default.py">
diff --git a/plugin.video.nba.video/changelog.txt
b/plugin.video.nba.video/changelog.txt
index 4354837..92d0e69 100644
--- a/plugin.video.nba.video/changelog.txt
+++ b/plugin.video.nba.video/changelog.txt
@@ -1,3 +1,11 @@
+[B]Version 1.0.2[/B]
+
+- Fixed duration issue in Frodo by using addStreamInfo()
+- Fixed 'ascii' codec can't decode error
+- Fixed 'exceptions.TypeError' error when searching for videos
+- Fixed 'Failed to import _strptime' error
+- Fixed issue with retries on HTTP 404 errors
+
[B]Version 1.0.1[/B]
- Updated addon for 2012-2013 NBA season
diff --git a/plugin.video.nba.video/default.py
b/plugin.video.nba.video/default.py
index f018266..ab15386 100644
--- a/plugin.video.nba.video/default.py
+++ b/plugin.video.nba.video/default.py
@@ -1,13 +1,12 @@
-import xbmc, xbmcaddon, xbmcvfs, xbmcgui, xbmcplugin, urllib2, urllib, re,
string, sys, os, traceback, time, buggalo
-from datetime import datetime
+import xbmc, xbmcaddon, xbmcvfs, xbmcgui, xbmcplugin, urllib2, urllib, re,
string, sys, os, traceback, time, buggalo, datetime, _strptime
import simplejson as json
plugin = 'NBA Video'
__author__ = 'stacked <[email protected]>'
__url__ = 'http://code.google.com/p/plugin/'
-__date__ = '12-02-2012'
-__version__ = '1.0.1'
+__date__ = '12-17-2012'
+__version__ = '1.0.2'
settings = xbmcaddon.Addon( id = 'plugin.video.nba.video' )
buggalo.SUBMIT_URL = 'http://www.xbmc.byethost17.com/submit.php'
dbg = False
@@ -35,38 +34,42 @@ def build_main_directory():
infoLabels = { "Title": name, "Plot": name }
ListItem(label = '[ ' + name + ' ]', image = thumbnailImage,
url = u, isFolder = True, infoLabels = infoLabels)
build_video_directory('channels%2F*%7Cgames%2F*%7Cflip_video_diaries%7Cfiba', 1)
- xbmcplugin.setContent(int( sys.argv[1] ), 'episodes')
setViewMode("503")
xbmcplugin.endOfDirectory( int( sys.argv[1] ) )
def build_video_directory( url, page ):
if url == 'search':
text = common.getUserInput(settings.getLocalizedString( 30003
), "")
+ if text == None:
+ return
url =
'channels%2F*%7Cgames%2F*%7Cflip_video_diaries%7Cfiba&text=' + urllib.quote(
text )
save_url = url
url = 'http://searchapp2.nba.com/nba-search/query.jsp?section=' + url +
'&season=1213&sort=recent&hide=true&type=advvideo&npp=15&start=' +
str(1+(15*(page-1)))
- html = open_url( url )
+ html = open_url( url ).decode('ascii', 'ignore')
textarea = common.parseDOM(html, "textarea", attrs = { "id": "jsCode"
})[0]
- data =
json.loads(textarea.decode('latin1').encode('utf8'))['results'][0]
+ query = json.loads(textarea.decode('latin1').encode('utf8'))
+ data = query['results'][0]
+ count = query['metaResults']['advvideo']
if len(data) == 0:
dialog = xbmcgui.Dialog()
ok = dialog.ok( plugin , settings.getLocalizedString( 30004 ) +
'\n' + settings.getLocalizedString( 30005 ) )
return
for results in data:
mediaDateUts = time.ctime(float(results['mediaDateUts']))
- date =
datetime.fromtimestamp(time.mktime(time.strptime(mediaDateUts, '%a %b %d
%H:%M:%S %Y'))).strftime('%d.%m.%Y')
+ date =
datetime.datetime.fromtimestamp(time.mktime(time.strptime(mediaDateUts, '%a %b
%d %H:%M:%S %Y'))).strftime('%d.%m.%Y')
title = results['title'].replace('\\','').encode('utf-8')
thumb =
results['metadata']['media']['thumbnail']['url'].replace('136x96','576x324')
- duration = results['metadata']['video']['length']
+ length = results['metadata']['video']['length'].split(':')
+ duration = int(length[0]) * 60 + int(length[1])
plot =
results['metadata']['media']['excerpt'].replace('\\','').encode('utf-8')
url = results['id'].replace('/video/',
'').replace('/index.html','')
infoLabels={ "Title": title, "Plot": plot, "Duration":
duration, "Aired": date }
u = { 'mode': '3', 'name': urllib.quote_plus( title ), 'url':
urllib.quote_plus( url ), 'thumb': urllib.quote_plus( thumb ), 'plot':
urllib.quote_plus( plot ) }
ListItem(label = title, image = thumb, url = u, isFolder =
False, infoLabels = infoLabels)
- u = { 'mode': '0', 'page': str( int( page ) + 1 ), 'url':
urllib.quote_plus( save_url ) }
- ListItem(label = '[Next Page (' + str( int( page ) + 1 ) + ')]', image
= next_thumb, url = u, isFolder = True, infoLabels = False)
+ if int(page) * 15 < int(count):
+ u = { 'mode': '0', 'page': str( int( page ) + 1 ), 'url':
urllib.quote_plus( save_url ) }
+ ListItem(label = '[Next Page (' + str( int( page ) + 1 ) +
')]', image = next_thumb, url = u, isFolder = True, infoLabels = False)
xbmcplugin.addSortMethod( handle = int(sys.argv[1]), sortMethod =
xbmcplugin.SORT_METHOD_NONE )
- xbmcplugin.setContent(int( sys.argv[1] ), 'episodes')
setViewMode("503")
xbmcplugin.endOfDirectory( int( sys.argv[1] ) )
@@ -82,7 +85,6 @@ def build_teams_directory():
ListItem(label = title, image = teams_thumb, url = u, isFolder
= True, infoLabels = False)
item_count += 1
xbmcplugin.addSortMethod( handle = int(sys.argv[1]), sortMethod =
xbmcplugin.SORT_METHOD_LABEL )
- xbmcplugin.setContent(int( sys.argv[1] ), 'episodes')
setViewMode("515")
xbmcplugin.endOfDirectory( int( sys.argv[1] ) )
@@ -90,7 +92,7 @@ def play_video( name, url, thumb, plot ):
url = 'http://www.nba.com/video/' + url + '.xml'
html = open_url( url )
url = 'http://nba.cdn.turner.com/nba/big' + common.parseDOM(html,
"file", attrs = { "type": "large" })[0]
- listitem = xbmcgui.ListItem( label = name, iconImage =
"DefaultVideo.png", thumbnailImage = thumb, path = url )
+ listitem = xbmcgui.ListItem( label = name, iconImage = thumb,
thumbnailImage = thumb, path = url )
listitem.setInfo( type="Video", infoLabels={ "Title": name , "Studio":
plugin, "Plot": plot } )
xbmcplugin.setResolvedUrl( handle = int( sys.argv[1] ), succeeded =
True, listitem = listitem )
@@ -104,7 +106,7 @@ def open_url( url ):
data = get_page(url)
if data['content'] != None and data['error'] == None:
return data['content']
- if data['error'] == 'HTTP Error 404: Not Found':
+ if data['error'].find('404:') != -1:
break
except Exception, e:
data['error'] = str(e)
@@ -142,16 +144,22 @@ def ListItem(label, image, url, isFolder, infoLabels =
False):
listitem.setProperty('fanart_image', fanart)
if infoLabels:
listitem.setInfo( type = "Video", infoLabels = infoLabels )
+ if "Duration" in infoLabels:
+ if hasattr( listitem, "addStreamInfo" ):
+ listitem.addStreamInfo('video', { 'duration':
infoLabels["Duration"] })
+ else:
+ listitem.setInfo( type="Video", infoLabels={
"Duration":
str(datetime.timedelta(milliseconds=int(infoLabels["Duration"])*1000)) } )
if not isFolder:
listitem.setProperty('IsPlayable', 'true')
u = sys.argv[0] + '?'
for key, value in url.items():
u = u + key + '=' + value + '&'
ok = xbmcplugin.addDirectoryItem(handle = int(sys.argv[1]), url = u,
listitem = listitem, isFolder = isFolder)
- return ok
+ return ok
def setViewMode(id):
if xbmc.getSkinDir() == "skin.confluence":
+ xbmcplugin.setContent(int( sys.argv[1] ), 'episodes')
xbmc.executebuiltin("Container.SetViewMode(" + id + ")")
def getParameters(parameterString):
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=b245766204b62fa5edd161494becc72ce5d81545
commit b245766204b62fa5edd161494becc72ce5d81545
Author: beenje <[email protected]>
Date: Tue Dec 18 22:59:41 2012 +0100
[plugin.video.classiccinema] updated to version 1.1.1
diff --git a/plugin.video.classiccinema/addon.xml
b/plugin.video.classiccinema/addon.xml
index 0b1b397..5cd5e64 100644
--- a/plugin.video.classiccinema/addon.xml
+++ b/plugin.video.classiccinema/addon.xml
@@ -1,9 +1,10 @@
-<addon id="plugin.video.classiccinema" name="Classic Cinema"
provider-name="Jonathan Beluch (jbel)" version="1.1.0">
+<addon id="plugin.video.classiccinema" name="Classic Cinema"
provider-name="Jonathan Beluch (jbel)" version="1.1.1">
<requires>
<import addon="xbmc.python" version="2.0" />
<import addon="plugin.video.youtube" version="3.3.0" />
<import addon="script.module.beautifulsoup" version="3.2.0" />
<import addon="script.module.xbmcswift2" version="1.3.0" />
+ <import addon="script.module.requests" version="0.13.2" />
</requires>
<extension library="addon.py" point="xbmc.python.pluginsource">
<provides>video</provides>
diff --git a/plugin.video.classiccinema/changelog.txt
b/plugin.video.classiccinema/changelog.txt
index a3be2ad..9b1d60b 100644
--- a/plugin.video.classiccinema/changelog.txt
+++ b/plugin.video.classiccinema/changelog.txt
@@ -1,4 +1,7 @@
Version 1.1.1
+* Add missing dependency for requests
+
+Version 1.1.0
* Update addon due to website changes
* Add xbmcswift2 as a dependency in addon.xml.
diff --git a/plugin.video.classiccinema/requirements.txt
b/plugin.video.classiccinema/requirements.txt
index dbadf94..68c2eae 100644
--- a/plugin.video.classiccinema/requirements.txt
+++ b/plugin.video.classiccinema/requirements.txt
@@ -1,2 +1,3 @@
BeautifulSoup
+requests
xbmcswift2
-----------------------------------------------------------------------
Summary of changes:
.../.travis.yml | 3 +-
plugin.video.classiccinema/addon.xml | 3 +-
plugin.video.classiccinema/changelog.txt | 3 +
plugin.video.classiccinema/requirements.txt | 1 +
plugin.video.nba.video/addon.xml | 4 +-
plugin.video.nba.video/changelog.txt | 8 +++
plugin.video.nba.video/default.py | 40 +++++++++------
plugin.video.pbs/addon.xml | 3 +-
plugin.video.pbs/changelog.txt | 11 ++++
plugin.video.pbs/coveapi/connection.py | 1 +
plugin.video.pbs/default.py | 55 ++++++++++++--------
11 files changed, 88 insertions(+), 44 deletions(-)
copy {plugin.video.vimcasts => plugin.video.classiccinema}/.travis.yml (75%)
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons