The branch, dharma has been updated
via e07fd992507bb2086b5a6c07160ef31afc6e7e8f (commit)
via f3fd2247213fc557484b980e2bf329587fb46cdd (commit)
from 34d2507df35200a5c7a036d8ff419003e41eb78e (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=e07fd992507bb2086b5a6c07160ef31afc6e7e8f
commit e07fd992507bb2086b5a6c07160ef31afc6e7e8f
Author: spiff <[email protected]>
Date: Fri Jan 27 13:33:49 2012 +0100
[plugin.video.radbox] updated to version 0.1.1
diff --git a/plugin.video.radbox/addon.xml b/plugin.video.radbox/addon.xml
index b77834d..7484eca 100644
--- a/plugin.video.radbox/addon.xml
+++ b/plugin.video.radbox/addon.xml
@@ -1,13 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="plugin.video.radbox.me"
+<addon id="plugin.video.radbox"
name="Radbox"
- version="0.0.3"
+ version="0.1.1"
provider-name="Radbox Inc.">
<requires>
<import addon="xbmc.python" version="1.0"/>
- <import addon="plugin.video.youtube" version="2.1.3"/>
- <import addon="plugin.video.vimeo" version="1.1.0" />
- <import addon="plugin.video.collegehumor" version="0.0.2" />
<import addon="script.module.beautifulsoup" version="3.0.8"/>
</requires>
<extension point="xbmc.python.pluginsource"
@@ -17,7 +14,7 @@
<extension point="xbmc.addon.metadata">
<platform>all</platform>
<summary>Radbox</summary>
- <description>Plugin that allows you to browse videos you have added to
your Radbox account. Currently only CollegeHumor, Youtube and Vimeo videos will
be shown.</description>
+ <description>Send web videos from your mobile or desktop to your TV using
Radbox (http://radbox.me). Use Radbox to watch web videos later, or subscribe
to your Twitter and Facebook video streams. This plugin plays your Radbox queue
on XBMC.</description>
<disclaimer>This addon requires CollegeHumor, Youtube and Vimeo plugin to
work as intended.</disclaimer>
</extension>
</addon>
diff --git a/plugin.video.radbox/changelog.txt
b/plugin.video.radbox/changelog.txt
index a6c4bef..b6f1144 100644
--- a/plugin.video.radbox/changelog.txt
+++ b/plugin.video.radbox/changelog.txt
@@ -1,3 +1,9 @@
+[B]Version 0.1.1[/B]
+
+- List support
+- a new setting Lazy mode to allow lazy playback
+- Settings to allow user to choose services from which video to be played
+
[B]Version 0.0.3[/B]
- Added support for CollgeHumor videos
diff --git a/plugin.video.radbox/default.py b/plugin.video.radbox/default.py
index 4f79f5c..a69fa95 100644
--- a/plugin.video.radbox/default.py
+++ b/plugin.video.radbox/default.py
@@ -3,6 +3,7 @@ import xbmc
import xbmcaddon
import xbmcgui
import xbmcplugin
+import threading
import urllib
import urllib2
from urlparse import urlparse
@@ -10,7 +11,7 @@ from BeautifulSoup import BeautifulStoneSoup
# plugin constants
plugin_handle = int(sys.argv[1])
-plugin_id = 'plugin.video.radbox.me'
+plugin_id = 'plugin.video.radbox'
plugin_settings = xbmcaddon.Addon(id=plugin_id)
#constansts for supported services
@@ -20,7 +21,12 @@ SERVICE_COLLEGEHUMOR = 'collegehumor'
PATH_BASED_SERVICES = [SERVICE_YOUTUBE, SERVICE_VIMEO]
QUERY_STRING_SERVICES = [SERVICE_COLLEGEHUMOR]
-SUPPORTED_SERVICES = [SERVICE_YOUTUBE, SERVICE_VIMEO, SERVICE_COLLEGEHUMOR]
+SUPPORTED_SERVICES = []
+
+#constants for Feed urls
+FEED_URL_VIDEO = 'http://api.radbox.me/feed/video'
+FEED_URL_LISTS = 'http://api.radbox.me/feed/lists'
+MARK_VIDEO_URL = 'http://api.radbox.me/watch/mark_video'
def show_error(msg):
"""
@@ -29,18 +35,155 @@ def show_error(msg):
dialog = xbmcgui.Dialog()
ok = dialog.ok('Radbox', msg)
-def fetch_feed(uid):
+def check_addon(addon_id):
+ """
+ checks whether given addon is installed
+ """
+ value = False
+ try:
+ addon = xbmcaddon.Addon(id=addon_id)
+ if addon:
+ value = True
+ except:
+ pass
+
+ return value
+
+def manage_settings():
+ """
+ manages whether to show addon settings to user or not
+ """
+ youtube = check_addon('plugin.video.youtube')
+ vimeo = check_addon('plugin.video.vimeo')
+ collegehumor = check_addon('plugin.video.collegehumor')
+
+ if not youtube:
+ plugin_settings.setSetting("youtube", str(youtube).lower())
+
+ if not vimeo:
+ plugin_settings.setSetting("vimeo", str(vimeo).lower())
+
+ if not collegehumor:
+ plugin_settings.setSetting("collegehumor", str(collegehumor).lower())
+
+ # set version setting, useful if settings are changed in future versions
+ # set currVersion incase there are no changes in settings
+ currVersion = plugin_settings.getSetting("currVersion")
+ addonVersion = plugin_settings.getAddonInfo('version')
+ if ( not currVersion or currVersion < addonVersion):
+ plugin_settings.openSettings()
+ plugin_settings.setSetting("currVersion", addonVersion)
+ return
+
+def get_params(param_str):
+ """
+ converts the parameter string passed to plugin into dict
+ """
+ if not param_str or str(param_str).strip() == '':
+ return {}
+
+ params = {}
+ try:
+ #try iterative way (assertive way not no work in python 2.4)
+ param_list = param_str.lstrip('?').split('&')
+ for param in param_list:
+ k,v = param.split('=')
+ params[urllib.unquote_plus(k)] = urllib.unquote_plus(v)
+ except Exception, e:
+ #print 'get_params - ', e
+ pass
+
+ return params
+
+def update_supported_services():
+ """
+ updates supported services depending upon addon settings
+ """
+ global SUPPORTED_SERVICES
+
+ if (plugin_settings.getSetting("youtube") == 'true'):
+ SUPPORTED_SERVICES.append(SERVICE_YOUTUBE)
+
+ if (plugin_settings.getSetting("vimeo") == 'true'):
+ SUPPORTED_SERVICES.append(SERVICE_VIMEO)
+
+ if (plugin_settings.getSetting("collegehumor") == 'true'):
+ SUPPORTED_SERVICES.append(SERVICE_COLLEGEHUMOR)
+
+ return
+
+def get_list_item(title='', thumbnail='', plot='', url='', is_folder=False,
is_video=False, vid=-1):
+ """
+ creates a new listitem
+ """
+ icon_image="DefaultFolder.png"
+ if is_video:
+ icon_imgae = "DefaultVideo.png"
+ #params = {'action': 'play_video', 'vid': vid, 'vidurl' : url}
+ liurl = url
+ else:
+ params = {'action': 'play_list', 'plist': title}
+ liurl = sys.argv[0] + '?' + urllib.urlencode(params)
+
+ try:
+ listitem = xbmcgui.ListItem(label=title, iconImage=icon_image,
thumbnailImage=thumbnail)
+ listitem.setInfo(type="video", infoLabels={'Title': title, 'Plot':
plot})
+ if not is_folder:
+ listitem.setProperty("IsPlayable", "true")
+
+ return (listitem, liurl)
+ except Exception, e:
+ #print 'add item - error %s' %e
+ pass
+
+def add_item(title='', thumbnail='', plot='', url='', is_folder=False,
is_video=False, vid=-1):
+ """
+ adds a new list item to xbmc virtual directory
+ """
+ listitem, liurl = get_list_item(title=title, thumbnail=thumbnail,
plot=plot, url=url
+ ,is_folder=is_folder, is_video=is_video,
vid=vid) or (None, '')
+
+ if listitem:
+ xbmcplugin.addDirectoryItem(handle=plugin_handle, listitem=listitem,
url=liurl, isFolder=is_folder)
+
+ return
+
+def fetch_feed(uid, lists=False, listname='home'):
"""
fetches user feeds based on quick url as user identifier
feed url is of format http://radbox.me/feed/video?uid=%s' %uid
"""
if not uid:
- show_error('Invalid value for user id.')
+ show_error(plugin_settings.getLocalizedString(33001))
return
+
try:
- feed_url = 'http://radbox.me/feed/video?uid=%s' %uid
+ feed_params = dict(uid=uid)
+ if lists:
+ feed_url = FEED_URL_LISTS
+ else:
+ feed_url = FEED_URL_VIDEO
+ feed_params.update({'l': listname})
+
+ feed_url += '?' + urllib.urlencode(feed_params)
feeds = urllib2.urlopen(feed_url).read()
- return BeautifulStoneSoup(feeds)
+ feeds = BeautifulStoneSoup(feeds)
+
+ if not feeds:
+ show_error(plugin_settings.getLocalizedString(33002))
+ return
+
+ # check whether there was any error returned from feeds
+ errors = feeds.findAll('error')
+ if len(errors) > 0:
+ try:
+ show_error(errors[0].contents[0])
+ except Exception, err:
+ #print err
+ pass
+ return
+
+ return feeds
except:
xbmc.log("Unable to fetch feed - %s" %feed_url)
@@ -120,90 +263,163 @@ def get_playable_data(url):
# creating own dict for now
return dict(can_play=can_play, url=url)
-def play_user_feed(uid):
+def mark_video(uid, vid):
"""
- fetches feed from user's radbox account, creates a playlist of all
playable videos and starts playing
+ marks video as opened
"""
- if not uid:
- show_error('Invalid value for user id.')
+ if not uid or not vid:
return
- feeds = fetch_feed(uid)
+ url = MARK_VIDEO_URL
+ params = {'vid': vid, 'uid': uid}
+ url += '?' + urllib.urlencode(params)
+ urllib2.urlopen(url)
+ return
- if not feeds:
- show_error('Unable to fetch feeds.')
- return
+def play_video(uid, vid, url):
+ """
+ plays a video
+ """
+ #mark video in a separate thread
+ #threading.Thread(target=mark_video, args=(uid, vid)).start()
- # check whether there was any error returned from feeds
- errors = feeds.findAll('error')
- if len(errors) > 0:
- try:
- show_error(errors[0].contents[0])
- except Exception, err:
- #print err
- pass
- return
+ mark_video(uid, vid)
+ xbmc.executebuiltin("xbmc.PlayMedia("+url+")")
+ return
- # We have valid feed
+def play_list(uid, listname=''):
+ """
+ displays videos contained in playlist
+ """
+ autoplay = (plugin_settings.getSetting("autoplay") == 'true')
+ update_supported_services()
- #create a new playlist,
- playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
- playlist.clear()
+ if not listname or str(listname).strip() == '':
+ return
- #fetch all feed items
- items = feeds.findAll("item")
- for item in items:
- try:
- can_play = False
+ feeds = fetch_feed(uid, listname=listname)
+
+ #create a new playlist only for autoplay setting
+ if autoplay:
+ playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
+ playlist.clear()
+
+ try:
+ items = feeds.findAll('item')
+ for item in items:
try:
- title = item.title.contents[0]
- except:
- title = ""
+ can_play = False
+ try:
+ title = item.title.contents[0]
+ except:
+ title = ""
- try:
- description = item.description.contents[0]
- except:
- description = ""
+ try:
+ description = item.description.contents[0]
+ except:
+ description = ""
- try:
- url = item.find('media:content')['url']
- playable_data = get_playable_data(url)
- if playable_data:
- url = playable_data['url']
- can_play = playable_data['can_play']
- except:
- url = None
- can_play = False
+ try:
+ url = item.find('media:content')['url']
+ playable_data = get_playable_data(url)
+ #print playable_data
+ if playable_data:
+ url = playable_data['url']
+ can_play = playable_data['can_play']
+ except:
+ url = None
+ can_play = False
+
+ try:
+ thumbnail = item.find('media:thumbnail')['url']
+ except:
+ thumbnail = "DefaultFolder.png"
+
+ try:
+ vid = (item.find('guid').contents[0]).split('/')[-1]
+ except:
+ vid = -1
+ if can_play:
+ if autoplay:
+ listitem, liurl = get_list_item(title=title,
thumbnail=thumbnail, plot=description, url=url, is_video=True, vid=vid) or
(None, '')
+ if listitem:
+ playlist.add(url=liurl, listitem=listitem)
+ else:
+ add_item(title=title, thumbnail=thumbnail,
plot=description, url=url, is_video=True, vid=vid)
+
+ except Exception, err:
+ #print err
+ pass
+
+ # for autoplay, we will not display directory listing.
+ if not autoplay:
+ # we are done adding items to directory
+ xbmcplugin.endOfDirectory(handle = plugin_handle)
+ else:
+ # start playing
+ if playlist.size() > 0:
+ # try using player
+ # seems like there is a bug in xbmc 10 - on using player for
playlist of plugin urls xbmc hangs
+ # playlist works fine with player in Eden beta
+ # http://forum.xbmc.org/showthread.php?p=973023
+ #xbmc.Player().play(item=playlist)
+
+ #start playing
+ xbmc.executebuiltin('playlist.playoffset(video , 0)')
+
+ except Exception, e:
+ #print 'play_list error - %s' %e
+ pass
+
+def playlists(uid):
+ """
+ fetches and displays users playlist
+ """
+ feed = fetch_feed(uid, lists=True)
+
+ #iterate over each item in feed and create a list item
+ try:
+ items = feed.findAll("item")
+ for item in items:
try:
- thumbnail = item.find('media:thumbnail')['url']
- except:
- thumbnail = ""
-
- if can_play:
- listitem = xbmcgui.ListItem(label=title,
thumbnailImage=thumbnail)
- listitem.setInfo(type="video", infoLabels={"Title" : title,
"Plot" : description})
- playlist.add(url=url, listitem=listitem)
- except Exception, err:
- #print err
- pass
-
- if playlist.size() > 0:
- # try using player
- # seems like there is a bug in xbmc 10 - on using player for playlist
of plugin urls xbmc hangs
- # playlist works fine with player in Eden beta
- # http://forum.xbmc.org/showthread.php?p=973023
- #xbmc.Player().play(item=playlist)
-
- #start playing
- xbmc.executebuiltin('playlist.playoffset(video , 0)')
+ title = item.find('name').contents[0]
+ add_item(title=title, is_folder=True)
+ except Exception, e:
+ #print e
+ pass
+ except:
+ pass
+
+def home(uid):
+ """
+ this api is called when plugin is launched first.
+ """
+ if not uid:
+ show_error(plugin_settings.getLocalizedString(33001))
+ return
+
+ playlists(uid)
+
+ # we are done adding items to directory
+ xbmcplugin.endOfDirectory(handle = plugin_handle)
- return
-
if (__name__ == "__main__"):
- if ( not plugin_settings.getSetting("firstrun")):
- plugin_settings.openSettings()
- plugin_settings.setSetting("firstrun", '1')
+
+ uid = plugin_settings.getSetting("uid")
+ manage_settings()
if (not sys.argv[2]):
- uid = plugin_settings.getSetting("uid")
- play_user_feed(uid)
+ home(uid)
+ else:
+ # initiate params dict with default values, update it with params
received from request
+ # this will make sure KeyError is not raised
+ params = {'action': None, 'plist': None, 'vidurl': None, 'vid': None}
+ params.update(get_params(sys.argv[2]))
+
+ action = params['action']
+ if action == 'play_list':
+ play_list(uid, listname=params['plist'])
+ elif action == 'play_video':
+ play_video(uid, url=params['vidurl'], vid=params['vid'])
+ else:
+ home(uid)
diff --git a/plugin.video.radbox/resources/language/English/strings.xml
b/plugin.video.radbox/resources/language/English/strings.xml
index 3864027..5ad0545 100644
--- a/plugin.video.radbox/resources/language/English/strings.xml
+++ b/plugin.video.radbox/resources/language/English/strings.xml
@@ -1,7 +1,22 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<strings>
+ <!-- categories -->
+ <string id="32001">General</string>
+ <string id="32002">Plugins</string>
+
<!-- Plugin settings strings -->
<string id="30001">Enter the last part of your Radbox Quick URL.</string>
<string id="30002">You can find it in your Radbox account
settings.</string>
<string id="30003">Quick url: http://rdbx.me/</string>
+ <string id="30004">Lazy mode</string>
+
+ <string id="31001">Select services to watch videos.</string>
+ <string id="31002">YouTube</string>
+ <string id="31003">Vimeo</string>
+ <string id="31004">CollegeHumor</string>
+
+ <!-- Error messages -->
+ <string id="33001">Invalid value for user id.</string>
+ <string id="33002">Unable to fetch feeds.</string>
+
</strings>
diff --git a/plugin.video.radbox/resources/settings.xml
b/plugin.video.radbox/resources/settings.xml
index 0cc32d0..f05ed4f 100644
--- a/plugin.video.radbox/resources/settings.xml
+++ b/plugin.video.radbox/resources/settings.xml
@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
- <!-- General -->
- <setting id="info" type="text" label="30001" default="" enable="false"/>
- <setting id="info2" type="text" label="30002" default="" enable="false"/>
- <setting id="uid" type="text" label="30003" default="" />
+ <!-- General -->
+ <category label="32001">
+ <setting id="info" type="text" label="30001" default=""
enable="false"/>
+ <setting id="info2" type="text" label="30002" default=""
enable="false"/>
+ <setting id="uid" type="text" label="30003" default="" />
+
+ <setting id="autoplay" type="bool" default="false" label="30004" />
+ </category>
+ <category label="32002">
+ <!-- Plugin settings -->
+ <setting id="pluginfo" type="text" label="31001" default=""
enable="false"/>
+ <setting id="youtube" type="bool" default="true" label="31002"/>
+ <setting id="vimeo" type="bool" default="true" label="31003"/>
+ <setting id="collegehumor" type="bool" default="true" label="31004"/>
+ </category>
</settings>
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=f3fd2247213fc557484b980e2bf329587fb46cdd
commit f3fd2247213fc557484b980e2bf329587fb46cdd
Author: spiff <[email protected]>
Date: Fri Jan 27 13:12:54 2012 +0100
[plugin.video.youtube] updated to version 2.1.4
diff --git a/plugin.video.youtube/YouTubeNavigation.py
b/plugin.video.youtube/YouTubeNavigation.py
index b6ab225..b5492a1 100644
--- a/plugin.video.youtube/YouTubeNavigation.py
+++ b/plugin.video.youtube/YouTubeNavigation.py
@@ -78,8 +78,6 @@ class YouTubeNavigation:
{'Title':__language__( 30041 )
,'path':"/root/explore/categories" , 'thumbnail':"explore"
, 'login':"false" , 'scraper':'categories'},
{'Title':__language__( 30037 )
,'path':"/root/explore/disco" , 'thumbnail':"discoball"
, 'login':"false" , 'store':"disco_searches" },
{'Title':__language__( 30040 )
,'path':"/root/explore/disco/search" , 'thumbnail':"search"
, 'login':"false" , 'action':"search_disco"},
-# {'Title':__language__( 30038 )
,'path':"/root/explore/disco/top_25" , 'thumbnail':"discoball"
, 'login':"false" , 'scraper':"disco_top_25"},
-# {'Title':__language__( 30039 )
,'path':"/root/explore/disco/popular" , 'thumbnail':"discoball"
, 'login':"false" , 'scraper':"disco_top_artist"},
{'Title':__language__( 30001 )
,'path':"/root/explore/feeds" , 'thumbnail':"feeds"
, 'login':"false" },
{'Title':__language__( 30009 )
,'path':"/root/explore/feeds/discussed" , 'thumbnail':"most"
, 'login':"false" , 'feed':"feed_discussed" },
{'Title':__language__( 30010 )
,'path':"/root/explore/feeds/linked" , 'thumbnail':"most"
, 'login':"false" , 'feed':"feed_linked" },
@@ -89,13 +87,6 @@ class YouTubeNavigation:
{'Title':__language__( 30014 )
,'path':"/root/explore/feeds/featured" , 'thumbnail':"featured"
, 'login':"false" , 'feed':"feed_featured" },
{'Title':__language__( 30015 )
,'path':"/root/explore/feeds/favorites" , 'thumbnail':"top"
, 'login':"false" , 'feed':"feed_favorites" },
{'Title':__language__( 30016 )
,'path':"/root/explore/feeds/rated" , 'thumbnail':"top"
, 'login':"false" , 'feed':"feed_rated" },
-# {'Title':__language__( 30043 )
,'path':"/root/explore/movies" , 'thumbnail':"movies"
, 'login':"false" , 'scraper':'movies'},
-# {'Title':__language__( 30042 )
,'path':"/root/explore/shows" , 'thumbnail':"shows"
, 'login':"false" , 'scraper':'shows'},
-# {'Title':__language__( 30032 )
,'path':"/root/explore/trailers" , 'thumbnail':"trailers"
, 'login':"false" },
-# {'Title':__language__( 30035 )
,'path':"/root/explore/trailers/latest" , 'thumbnail':"trailers"
, 'login':"false" , 'scraper':"latest_trailers" },
-# {'Title':__language__( 30034 )
,'path':"/root/explore/trailers/current" , 'thumbnail':"trailers"
, 'login':"false" , 'scraper':"current_trailers" },
-# {'Title':__language__( 30036 )
,'path':"/root/explore/trailers/upcoming" , 'thumbnail':"trailers"
, 'login':"false" , 'scraper':"upcoming_trailers" },
-# {'Title':__language__( 30033 )
,'path':"/root/explore/trailers/popular" , 'thumbnail':"trailers"
, 'login':"false" , 'scraper':"popular_trailers" },
{'Title':__language__( 30019 )
,'path':"/root/recommended" ,
'thumbnail':"recommended" , 'login':"true" ,
'scraper':"recommended" },
{'Title':__language__( 30018 )
,'path':"/root/contacts" ,
'thumbnail':"contacts" , 'login':"true" ,
'feed':"contacts" },
{'Title':__language__( 30002 )
,'path':"/root/favorites" ,
'thumbnail':"favorites" , 'login':"true" ,
'feed':"favorites" },
diff --git a/plugin.video.youtube/YouTubePlayer.py
b/plugin.video.youtube/YouTubePlayer.py
index feb1766..3c56032 100755
--- a/plugin.video.youtube/YouTubePlayer.py
+++ b/plugin.video.youtube/YouTubePlayer.py
@@ -290,17 +290,20 @@ class YouTubePlayer:
(result, status) = core._fetchPage(link =
self.urls["video_stream"] % get("videoid"))
if status == 200:
- data = result.find("PLAYER_CONFIG")
- if data > -1:
- data = result.rfind("yt.setConfig", 0, data)
- data =
re.compile('yt.setConfig\((.*?PLAYER_CONFIG.*?)\);').findall(result[data:].replace("\n",
""))
+ start = result.find("yt.playerConfig = ")
+
+ if start > -1:
+ start = start + len("yt.playerConfig = ")
+ end = result.find("};", start) + 1
+ data = result[start: end]
if len(data) > 0:
- player_object =
json.loads(data[0].replace('\'PLAYER_CONFIG\'', '"PLAYER_CONFIG"'))
+ data = data.replace("\\/", "/")
+ player_object = json.loads('{
"PLAYER_CONFIG" : ' + data + "}" )
else:
- data = result
- data =
data[data.find('flashvars'):].replace("\n", "").replace("&", "&")
- data = re.findall('="(ttsurl=.*?)"', data)
+ data =
result[result.find('flashvars'):].replace("\n",
"").replace("\u0026","&").replace("&", "&").replace('\\"','"')
+ data = re.findall('flashvars="(.*?)"', data)
if len(data) > 0:
+ print repr(data[0])
player_object =
self._convertFlashVars(data[0])
else:
@@ -365,3 +368,7 @@ class YouTubePlayer:
self.showMessage(title, result)
else :
self.showMessage(title, self.__language__(30617))
+
+ def showMessage(self, heading, message):
+ duration = ([5, 10, 15, 20, 25,
30][int(self.__settings__.getSetting( 'notification_length' ))]) * 1000
+ xbmc.executebuiltin('XBMC.Notification("%s", "%s", %s)' % (
heading, message, duration) )
diff --git a/plugin.video.youtube/addon.xml b/plugin.video.youtube/addon.xml
index f621780..2ed3b17 100644
--- a/plugin.video.youtube/addon.xml
+++ b/plugin.video.youtube/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.youtube"
name="YouTube"
- version="2.1.3"
+ version="2.1.4"
provider-name="TheCollective">
<requires>
<import addon="xbmc.python" version="1.0"/>
diff --git a/plugin.video.youtube/changelog.txt
b/plugin.video.youtube/changelog.txt
index 2023f10..614208c 100644
--- a/plugin.video.youtube/changelog.txt
+++ b/plugin.video.youtube/changelog.txt
@@ -7,6 +7,9 @@
- [YOUTUBE] Can't delete favorites (YouTube gives video id, not favorite id).
- Download of rtmpe streams not supported.
+[B]Version 2.1.4[/B]
+- Fix for broken playback
+
[B]Version 2.1.3[/B]
- Fixed login.
diff --git a/plugin.video.youtube/default.py b/plugin.video.youtube/default.py
index 5bdb8cb..8ff8f14 100644
--- a/plugin.video.youtube/default.py
+++ b/plugin.video.youtube/default.py
@@ -19,7 +19,7 @@
import sys, xbmc, xbmcaddon, cookielib, urllib2
# plugin constants
-__version__ = "2.1.3"
+__version__ = "2.1.4"
__plugin__ = "YouTube-" + __version__
__author__ = "TheCollective"
__url__ = "www.xbmc.com"
-----------------------------------------------------------------------
Summary of changes:
plugin.video.radbox/addon.xml | 9 +-
plugin.video.radbox/changelog.txt | 6 +
plugin.video.radbox/default.py | 368 ++++++++++++++++----
.../resources/language/English/strings.xml | 15 +
plugin.video.radbox/resources/settings.xml | 19 +-
plugin.video.youtube/YouTubeNavigation.py | 9 -
plugin.video.youtube/YouTubePlayer.py | 23 +-
plugin.video.youtube/addon.xml | 2 +-
plugin.video.youtube/changelog.txt | 3 +
plugin.video.youtube/default.py | 2 +-
10 files changed, 351 insertions(+), 105 deletions(-)
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons