The branch, frodo has been updated
via 990694c3c22db024c2d1afad2eb8d7614005fd69 (commit)
via b6bea7d27a85447bece13fe723871ce3ea19035b (commit)
via a84ac442fbe7b505b2df205b9ce957c9662ca1e5 (commit)
via 2a9e2653cf1eb490f6e1e05f629a5a31bdc97fcb (commit)
via ede5e6fd495ffae9c20fe6dd33df1b8ffdc49a0d (commit)
from 27dddc48e553449a9e011580b78c78b02fe9a20c (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=990694c3c22db024c2d1afad2eb8d7614005fd69
commit 990694c3c22db024c2d1afad2eb8d7614005fd69
Author: Martijn Kaijser <mcm.kaij...@gmail.com>
Date: Thu Sep 11 18:11:09 2014 +0200
[plugin.video.foodnetwork] 2.1.2
diff --git a/plugin.video.foodnetwork/README.txt
b/plugin.video.foodnetwork/README.txt
index f591292..b2dafab 100644
--- a/plugin.video.foodnetwork/README.txt
+++ b/plugin.video.foodnetwork/README.txt
@@ -3,5 +3,6 @@ plugin.video.foodnetwork================
XBMC Addon for Food Network website
+version 2.1.2 website changes
version 2.0.2 initial release
diff --git a/plugin.video.foodnetwork/addon.xml
b/plugin.video.foodnetwork/addon.xml
index 999b32a..3435348 100644
--- a/plugin.video.foodnetwork/addon.xml
+++ b/plugin.video.foodnetwork/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.foodnetwork"
name="Food Network"
- version="2.0.2"
+ version="2.1.2"
provider-name="t1m">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
diff --git a/plugin.video.foodnetwork/changelog.txt
b/plugin.video.foodnetwork/changelog.txt
index 3de11b3..7f89c10 100644
--- a/plugin.video.foodnetwork/changelog.txt
+++ b/plugin.video.foodnetwork/changelog.txt
@@ -1,3 +1,5 @@
+Version 2.1.2 website changes
+
Version 2.0.2 Initial release
diff --git a/plugin.video.foodnetwork/default.py
b/plugin.video.foodnetwork/default.py
index ccf5c03..6d0abc8 100644
--- a/plugin.video.foodnetwork/default.py
+++ b/plugin.video.foodnetwork/default.py
@@ -8,6 +8,7 @@ import urllib, urllib2, cookielib, datetime, time, re, os,
string
import xbmcplugin, xbmcgui, xbmcaddon, xbmcvfs, xbmc
import cgi, gzip
from StringIO import StringIO
+import json
USER_AGENT = 'Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26
(KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25'
@@ -66,32 +67,31 @@ def getRequest(url):
def getSources(fanart):
urlbase = FNTVBASE %
('/videos/players/food-network-full-episodes.html')
pg = getRequest(urlbase)
- caturl = re.compile("SNI\.Food\.Player\.FullSize.+?,
'(.+?)'").findall(pg)[0]
- caturl = XMLBASE % (caturl)
- pg2 = getRequest(caturl)
- catname = re.compile('<title>.+?CDATA\[(.+?)\]').findall(pg2)[0]
-
addDir(catname,caturl,'GC',icon,addonfanart,catname,GENRE_TV,'',False)
- cats = re.compile('<section
class="video-promo">.+?<h5>(.+?)<.+?<a href="(.+?)"').findall(pg)
- for catname, caturl in cats:
- catno = re.compile('/.+?\..+?\.(.+?)\.').findall(caturl)[0]
- caturl = caturl.replace('.%s.' %(catno),'.XXXXXXXX.')
+ cats = re.compile('<h6
class="channel-heading">.+?data-max="85">(.+?)<.+?href="(.+?)".+?src="(.+?)".+?</cite></a></h6>').findall(pg)
+ for catname, caturl, catimg in cats:
catname = catname.strip()
-
addDir(catname,caturl,'GC',icon,addonfanart,catname,GENRE_TV,'',False)
+
addDir(catname,caturl,'GC',catimg,addonfanart,catname,GENRE_TV,'',False)
def getCats(cat_url):
- if '.xml' in cat_url:
- pg = getRequest(cat_url)
- shows =
re.compile('<videoId>(.+?)<.+?<thumbnailUrl>.+?CDATA\[(.+?)\].+?<abstract>.+?CDATA\[(.+?)\]').findall(pg)
- else:
- urlbase = FNTVBASE %
('/videos/players/food-network-full-episodes.html')
- pg = getRequest(urlbase)
- cat_url = cat_url.replace('XXXXXXXX','(.+?)')
- catsearch = '<a href="%s".+?<div
class=.+?>(.+?)<.+?<h6>(.+?)</h6>' % (cat_url)
- shows = re.compile(catsearch).findall(pg)
- for showpath, showimg, showname in shows:
- showurl =
'rtmp://flash.scrippsnetworks.com:1935/ondemand/library?ovpfv=2.1.6
swfUrl=http://www.foodnetwork.com/etc/designs/food/clientlib/snap/snap-4.1.2.swf
playpath=Food_Network/%s app=ondemand/library?ovpfv=2.1.6
pageUrl=http://www.foodnetwork.com/videos/players/food-network-full-episodes.html'
% showpath
-
addLink(showurl.encode(UTF8),showname,showimg,addonfanart,showname,GENRE_TV,'')
-
+ pg = getRequest(FNTVBASE % cat_url)
+ jblob = re.compile('"player-player"
}},(.+?){"extras":').search(pg).group(1).rstrip(' ,')
+ a = json.loads(jblob)
+ a = a['channels'][0]['videos']
+ for vid in a:
+ showurl = "%s?url=%s&name=%s&mode=GS" %(sys.argv[0],
urllib.quote_plus(vid['releaseUrl']), urllib.quote_plus(vid['title']))
+
addLink(showurl.encode(UTF8),vid['title'],vid['thumbnailUrl'],addonfanart,vid['description'],GENRE_TV,'')
+
+
+def getShow(show_url, show_name):
+ pg = getRequest(show_url)
+ i = int(addon.getSetting('vid_res'))
+ i = i+1
+ try:
+ url = re.compile('<video src="(.+?)_6.mp4"').search(pg).group(1)
+ url = url+'_%s.mp4' % str(i)
+ except:
+ url = 'http://link.theplatform.com/s/errorFiles/Unavailable.mp4'
+ xbmcplugin.setResolvedUrl(int(sys.argv[1]), True,
xbmcgui.ListItem(path = url))
def play_playlist(name, list):
@@ -162,6 +162,8 @@ if mode== None: getSources(p('fanart'))
elif mode=='SR': xbmcplugin.setResolvedUrl(int(sys.argv[1]), True,
xbmcgui.ListItem(path=p('url')))
elif mode=='PP': play_playlist(p('name'), p('playlist'))
elif mode=='GC': getCats(p('url'))
+elif mode=='GS': getShow(p('url'), p('name'))
+
xbmcplugin.endOfDirectory(int(sys.argv[1]))
diff --git a/plugin.video.foodnetwork/resources/language/English/strings.xml
b/plugin.video.foodnetwork/resources/language/English/strings.xml
index 79c1e3b..90eb22e 100644
--- a/plugin.video.foodnetwork/resources/language/English/strings.xml
+++ b/plugin.video.foodnetwork/resources/language/English/strings.xml
@@ -1,3 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<strings>
+ <string id="30000">Video Resolution</string>
+ <string id="30001">328Kbps</string>
+ <string id="30002">548Kbps</string>
+ <string id="30003">798kbps</string>
+ <string id="30004">1,116kbps</string>
+ <string id="30005">1,372kbps</string>
+ <string id="30006">2,672kbps</string>
</strings>
+
diff --git a/plugin.video.foodnetwork/resources/settings.xml
b/plugin.video.foodnetwork/resources/settings.xml
index fb5aafd..c06f647 100644
--- a/plugin.video.foodnetwork/resources/settings.xml
+++ b/plugin.video.foodnetwork/resources/settings.xml
@@ -1,3 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
-</settings>
\ No newline at end of file
+ <setting id="vid_res" type="enum" label="30000"
lvalues="30001|30002|30003|30004|30005|30006" default="5" />
+</settings>
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=b6bea7d27a85447bece13fe723871ce3ea19035b
commit b6bea7d27a85447bece13fe723871ce3ea19035b
Author: Martijn Kaijser <mcm.kaij...@gmail.com>
Date: Thu Sep 11 18:05:39 2014 +0200
[plugin.video.raitv] 1.0.11
diff --git a/plugin.video.raitv/addon.xml b/plugin.video.raitv/addon.xml
index 882e602..29fcf3b 100644
--- a/plugin.video.raitv/addon.xml
+++ b/plugin.video.raitv/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.raitv"
name="Rai On Demand"
- version="1.0.10"
+ version="1.0.11"
provider-name="Nightflyer">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
diff --git a/plugin.video.raitv/changelog.txt b/plugin.video.raitv/changelog.txt
index 6535153..12fa543 100644
--- a/plugin.video.raitv/changelog.txt
+++ b/plugin.video.raitv/changelog.txt
@@ -1,3 +1,6 @@
+[B]1.0.11[/B]
+- Fixed #8. Now missing thumbnail in RAI Replay is handled better.
+
[B]1.0.10[/B]
- Force replay availability for Rai Gulp and Rai YoYo.
- Better stream selection in RAI Replay. Plot is now shown too.
diff --git a/plugin.video.raitv/default.py b/plugin.video.raitv/default.py
index 9fe3622..5b1fe85 100644
--- a/plugin.video.raitv/default.py
+++ b/plugin.video.raitv/default.py
@@ -202,19 +202,11 @@ def show_replay_epg(channelId, date):
for entry in timetable:
recording = programmes[entry]
-
- title = recording["t"]
- if recording["d"] != "":
- plot = recording["d"]
- else:
- plot = None
+ title = recording["t"]
+ plot = recording["d"]
+ thumbnail = recording["image"]
- if recording["image"] != "":
- thumbnail = recording["image"]
- else:
- thumbnail = None
-
if recording["urlTablet"] != "":
videoUrl = recording["urlTablet"]
elif recording["h264"] != "":
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=a84ac442fbe7b505b2df205b9ce957c9662ca1e5
commit a84ac442fbe7b505b2df205b9ce957c9662ca1e5
Author: Martijn Kaijser <mcm.kaij...@gmail.com>
Date: Thu Sep 11 18:04:36 2014 +0200
[plugin.video.guardian] 1.0.2
diff --git a/plugin.video.guardian/addon.xml b/plugin.video.guardian/addon.xml
index ef28598..336c3fb 100644
--- a/plugin.video.guardian/addon.xml
+++ b/plugin.video.guardian/addon.xml
@@ -1,11 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.guardian"
name="The Guardian"
- version="1.0.1"
+ version="1.0.2"
provider-name="Nightflyer">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
<import addon="script.module.beautifulsoup" version="3.0.8"/>
+ <import addon="plugin.video.youtube" version="4.4.0"/>
</requires>
<extension point="xbmc.python.pluginsource"
library="default.py">
diff --git a/plugin.video.guardian/changelog.txt
b/plugin.video.guardian/changelog.txt
index f3df091..f16e2a1 100644
--- a/plugin.video.guardian/changelog.txt
+++ b/plugin.video.guardian/changelog.txt
@@ -1,6 +1,9 @@
+[B]1.0.2[/B]
+- updated HTML parsing due to upstream changes.
+- youtube video are now supported through external addon.
+
[B]1.0.1[/B]
- updated required python API version to 2.1.0. This addon should now work
with both XBMC 12 (Frodo) and XBMC 13 (Gotham).
[B]1.0.0[/B]
- first release
-
diff --git a/plugin.video.guardian/default.py b/plugin.video.guardian/default.py
index db43382..b303bc6 100644
--- a/plugin.video.guardian/default.py
+++ b/plugin.video.guardian/default.py
@@ -30,19 +30,20 @@ def addDirectoryItem(parameters, li):
return xbmcplugin.addDirectoryItem(handle=handle, url=url,
listitem=li, isFolder=True)
-def addLinkItem(url, li):
+def addLinkItem(parameters, li):
+ url = sys.argv[0] + '?' + urllib.urlencode(parameters)
return xbmcplugin.addDirectoryItem(handle=handle, url=url,
listitem=li, isFolder=False)
# UI builder functions
def show_root_folder():
- options = [{"name": "Latest video", "id": "latest"},
- {"name": "More video", "id": "categories"},
- {"name": "Video series", "id": "series"},
+ options = [{"name": "Latest video", "mode": "latest"},
+ {"name": "More video", "mode": "categories"},
+ {"name": "Video series", "mode": "series"},
]
for option in options:
liStyle=xbmcgui.ListItem(option["name"])
- addDirectoryItem({"option_id": option["id"]}, liStyle)
+ addDirectoryItem({"mode": option["mode"]}, liStyle)
xbmcplugin.endOfDirectory(handle=handle, succeeded=True)
def show_categories():
@@ -51,7 +52,7 @@ def show_categories():
for item in items:
liStyle=xbmcgui.ListItem(item["title"])
- addDirectoryItem({"url": item["url"]}, liStyle)
+ addDirectoryItem({"mode": "video_files", "url": item["url"]}, liStyle)
xbmcplugin.endOfDirectory(handle=handle, succeeded=True)
def show_series():
@@ -60,37 +61,46 @@ def show_series():
for item in items:
liStyle=xbmcgui.ListItem(item["title"])
- addDirectoryItem({"url": item["url"]}, liStyle)
+ addDirectoryItem({"mode": "video_files", "url": item["url"]}, liStyle)
xbmcplugin.endOfDirectory(handle=handle, succeeded=True)
def show_video_files(url):
gtv = GuardianTV()
items = gtv.getVideoByChannel(url)
for item in items:
- if "url" in item:
- title = item["title"] + " (" + time.strftime("%d/%m/%Y %H:%M",
item["date"]) + ")"
- liStyle=xbmcgui.ListItem(title, thumbnailImage=item["thumb"])
- liStyle.setInfo(type="video",
- infoLabels={"Title": title
- })
- liStyle.setProperty("mimetype", "video/mp4")
- addLinkItem(item["url"], liStyle)
+ title = item["title"] + " (" + time.strftime("%d/%m/%Y %H:%M",
item["date"]) + ")"
+ liStyle=xbmcgui.ListItem(title, thumbnailImage=item["thumb"])
+ addLinkItem({"mode": "play", "url": item["pageUrl"]}, liStyle)
xbmcplugin.endOfDirectory(handle=handle, succeeded=True)
-
+def play(pageUrl):
+ gtv = GuardianTV()
+ video = gtv.getVideoMetadata(pageUrl)
+
+ # Check if video url is present
+ if video["url"] == None:
+ dialog = xbmcgui.Dialog()
+ dialog.ok("The Guardian", "Video URL not found.")
+ return
+
+ liStyle=xbmcgui.ListItem(video["title"], thumbnailImage=video["thumb"])
+ xbmc.Player().play(video["url"], liStyle)
+
# parameter values
params = parameters_string_to_dict(sys.argv[2])
-optionId = str(params.get("option_id", ""))
+mode = str(params.get("mode", ""))
url = str(params.get("url", ""))
-if optionId == "" and url == "":
+if mode == "" and url == "":
show_root_folder()
-elif optionId == "latest":
+elif mode == "latest":
gtv = GuardianTV()
show_video_files(gtv.getLatestVideoURL())
-elif optionId == "categories":
+elif mode == "categories":
show_categories()
-elif optionId == "series":
+elif mode == "series":
show_series()
-else:
+elif mode == "video_files":
show_video_files(url)
+else:
+ play(url)
\ No newline at end of file
diff --git a/plugin.video.guardian/resources/lib/guardian.py
b/plugin.video.guardian/resources/lib/guardian.py
index 35ab768..44ca95a 100644
--- a/plugin.video.guardian/resources/lib/guardian.py
+++ b/plugin.video.guardian/resources/lib/guardian.py
@@ -2,7 +2,6 @@ import urllib2
from xml.dom import minidom
import time
import datetime
-import re
from email.utils import parsedate_tz
from email.utils import mktime_tz
from BeautifulSoup import BeautifulSoup
@@ -30,6 +29,9 @@ class GuardianTV:
for link in links:
channel = {}
channel["title"] = link.text
+ # Katine RSS is missing
+ if channel["title"] == "Katine":
+ continue
channel["url"] = link["href"]
channel["url"] = channel["url"] + "/rss"
channels.append(channel)
@@ -60,30 +62,48 @@ class GuardianTV:
videos = []
for videoNode in dom.getElementsByTagName('item'):
video = {}
+
video["title"] =
videoNode.getElementsByTagName('title')[0].firstChild.data.strip()
try:
video["description"] =
videoNode.getElementsByTagName('description')[0].firstChild.data
except:
video["description"] = ""
+
dt = videoNode.getElementsByTagName('pubDate')[0].firstChild.data
video["date"] = time.gmtime((mktime_tz(parsedate_tz(dt))))
+ video["thumb"] = ""
for mediaContent in
videoNode.getElementsByTagName('media:content'):
mimeType = mediaContent.attributes["type"].value
- if mimeType == "video/mp4" or mimeType == "video/mpeg4":
- video["url"] = mediaContent.attributes["url"].value
if mimeType == "image/jpeg":
video["thumb"] = mediaContent.attributes["url"].value
-
- if "url" not in video:
- # Parse the HTML page to get the Video URL
- pageUrl =
videoNode.getElementsByTagName('link')[0].firstChild.data.strip()
- htmlData = urllib2.urlopen(pageUrl).read()
- match = re.compile("file\s+: '(.+?)'").findall(htmlData)
- if match:
- video["url"] = match[0]
-
+ break
+
+ video["pageUrl"] =
videoNode.getElementsByTagName('link')[0].firstChild.data.strip()
+
videos.append(video)
return videos
+
+ def getVideoMetadata(self, pageUrl):
+ # Parse the HTML page to get the Video Metadata
+ data = urllib2.urlopen(pageUrl).read()
+ tree = BeautifulSoup(data, convertEntities=BeautifulSoup.HTML_ENTITIES)
+
+ video = {}
+ video["title"] = tree.find("meta", {"property": "og:title"})["content"]
+ video["thumb"] = tree.find("meta", {"property": "og:image"})["content"]
+ video["url"] = None
+
+ videoNode = tree.find("video")
+ if videoNode is not None:
+ video["url"] = videoNode.find("source", {"type":
"video/mp4"})["src"]
+ else:
+ # Youtube
+ iframe = tree.find("iframe")
+ if iframe is not None:
+ videoId = iframe["id"].replace("ytplayer-","")
+ video["url"] =
"plugin://plugin.video.youtube/?action=play_video&videoid=%s" % videoId
+
+ return video
\ No newline at end of file
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=2a9e2653cf1eb490f6e1e05f629a5a31bdc97fcb
commit 2a9e2653cf1eb490f6e1e05f629a5a31bdc97fcb
Author: Martijn Kaijser <mcm.kaij...@gmail.com>
Date: Thu Sep 11 18:02:47 2014 +0200
[plugin.video.gameone] 2.0.6
diff --git a/plugin.video.gameone/addon.xml b/plugin.video.gameone/addon.xml
index e26a793..2bdc33d 100644
--- a/plugin.video.gameone/addon.xml
+++ b/plugin.video.gameone/addon.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<addon id="plugin.video.gameone" name="Gameone" version="2.0.3"
provider-name="liquex, membrane">
+<addon id="plugin.video.gameone" name="Gameone" version="2.0.6"
provider-name="liquex, membrane">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
</requires>
diff --git a/plugin.video.gameone/changelog.txt
b/plugin.video.gameone/changelog.txt
index 14b6ca2..eaa61db 100644
--- a/plugin.video.gameone/changelog.txt
+++ b/plugin.video.gameone/changelog.txt
@@ -1,3 +1,15 @@
+2.0.6 (22.08.2014)
+- Fixed crashes caused by the last update
+
+2.0.5 (21.08.2014)
+- Removed Playtube category for now
+- Fixed blog category thumbnails
+- Fixed blog videos not playing
+- Improved playback for some videos
+
+2.0.4 (19.08.2014)
+- Fixed TV category again
+
2.0.3 (15.08.2014)
- Fixed selection of a wrong resolution in some cases
@@ -16,7 +28,7 @@
- Fixed browsing for blog posts with multiple pages
- Added basic logging
-1.0.0 (14.02.2014)
+1.0.0 (14.02.2014)
- Code cleanup
- Browse TV episodes by year
- Fixed blog entries (now only posts with videos will be shown)
diff --git a/plugin.video.gameone/default.py b/plugin.video.gameone/default.py
index 32fb52c..ed72287 100644
--- a/plugin.video.gameone/default.py
+++ b/plugin.video.gameone/default.py
@@ -31,8 +31,7 @@ url_base = 'http://www.gameone.de'
url_year = url_base + '/tv/year/'
url_podcast = url_base + '/feed/podcast.xml'
url_episode =
'http://www.gameone.de/api/mrss/mgid%3Agameone%3Avideo%3Amtvnn.com%3Atv_show-'
-#url_swf =
'https://playermtvnn-a.akamaihd.net/g2/g2player_2.1.7.swf' # For
some reason the new player doesn't appear to work on Windows (https?)
-url_swf =
'http://media.mtvnservices.com/player/prime/mediaplayerprime.1.9.0.swf'
+url_swf =
'http://www.gameone.de/flash/g2player_2.1.9.beta3.swf'
def log(message, lvl=xbmc.LOGNOTICE):
@@ -96,14 +95,15 @@ def parse_content(string, pattern=False, dotall=False):
content = string
if (pattern != False):
+ log('Expression: ' + str(pattern), xbmc.LOGDEBUG)
if (dotall == True):
match = re.compile(pattern, re.DOTALL).findall(content)
else:
match = re.compile(pattern).findall(content)
- log('Parsing finished - ' + str(len(match)) + ' Elements',
xbmc.LOGDEBUG)
+ log(str(len(match)) + ' matches', xbmc.LOGDEBUG)
return match
else:
- log('No pattern found, returning whole content.', xbmc.LOGDEBUG)
+ log('No expression found, returning whole content.',
xbmc.LOGDEBUG)
return content
@@ -141,7 +141,6 @@ class plugin_structure():
def show_menu_root(self):
add_menu_item('ITEMTYPE_DIRECTORY', translation(30101),
url_base + '/tv', 'show_menu_tv')
add_menu_item('ITEMTYPE_DIRECTORY', translation(30102),
url_base + '/blog', 'show_menu_blog')
- add_menu_item('ITEMTYPE_DIRECTORY', translation(30103),
url_base + '/playtube', 'show_menu_playtube')
add_menu_item('ITEMTYPE_DIRECTORY', translation(30104),
url_podcast, 'show_menu_podcasts')
if addon.getSetting(id='showsettings') == 'true':
@@ -168,7 +167,7 @@ class plugin_structure():
def show_menu_tv_episodes(self):
log('Indexing TV episodes: ' + url, xbmc.LOGDEBUG)
- match_episodes = parse_content(url, '<a href="/tv/([0-9]+)"
class="image_link"><img alt=".+?" src="(.+?)" /></a>\n<h5>\n<a href=\'.+?\'
title=\'(.+?)\'', True)
+ match_episodes = parse_content(url, '<a href="/tv/([0-9]+)"
class="image_link"><img.+?/><noscript><img
src="(.+?)".+?/></noscript></a>\n<h5>\n<a href=\'.+?\' title=\'(.+?)\'', True)
for episode,thumbnail,title in match_episodes:
title = translation(30002) + ' ' + episode + ' - ' +
title
add_menu_item('ITEMTYPE_VIDEO', title, url_episode +
episode, 'play_tv_episode', thumbnail)
@@ -197,7 +196,6 @@ class plugin_structure():
video_url = video_file + ' swfurl=' + url_swf + '
swfvfy=true' + ' pageUrl=www.gameone.de app=ondemand?ovpfv=2.1.4'
item = xbmcgui.ListItem(path=video_url)
- item.setProperty('mimetype', 'video/x-flv')
return xbmcplugin.setResolvedUrl(pluginhandle, True,
item)
xbmcplugin.endOfDirectory(handle=pluginhandle)
@@ -214,7 +212,7 @@ class plugin_structure():
for teaser in match_teasers:
match_categories = parse_content(teaser, '<a
title="(.+?)" href="(.+?)">.+?<img.+?src="(.+?)"', True)
for category,url_category,thumbnail in match_categories:
- add_menu_item('ITEMTYPE_DIRECTORY', category,
url_base + url_category, 'show_menu_blog_entries', url_base + thumbnail)
+ add_menu_item('ITEMTYPE_DIRECTORY', category,
url_base + url_category, 'show_menu_blog_entries', thumbnail)
xbmcplugin.endOfDirectory(handle=pluginhandle)
@@ -253,12 +251,16 @@ class plugin_structure():
match_content = parse_content(url)
match_video = parse_content(match_content,
'video_meta-(.+?)"')
match_thumb = parse_content(match_content,
'"image", "(.+?)"', True)
- match_title = parse_content(match_content,
'<p><strong>(.+?):</strong>', True)
+ match_title = parse_content(match_content,
'<p><strong>(.+?)</strong>', True)
match_next = parse_content(match_content, '<a
class="forwards" href="(.+?)">')
i = 0
for video_id in match_video:
- add_menu_item('ITEMTYPE_VIDEO', match_title[i],
video_id, 'play_blog_video', match_thumb[i])
+ try: title = match_title[i]
+ except: title = translation(30003)
+ if title[-1:] == ':':
+ title = title[:-1]
+ add_menu_item('ITEMTYPE_VIDEO', title, video_id,
'play_blog_video', match_thumb[i])
i = i + 1
for url_next in match_next:
@@ -272,50 +274,10 @@ class plugin_structure():
url_video = self.get_video(url)
item = xbmcgui.ListItem(path=url_video)
- item.setProperty('mimetype', 'video/x-flv')
+ #item.setProperty('mimetype', 'video/x-flv')
xbmcplugin.setResolvedUrl(pluginhandle, True, item)
xbmcplugin.endOfDirectory(handle=pluginhandle)
-
-
-
- #CATEGORY: PLAYTUBE
- def show_menu_playtube(self):
- log('Indexing Playtube categories', xbmc.LOGDEBUG)
-
- match_container = parse_content(url, "<ul
class='channels'>(.+?)</ul>", True)[0]
- match_channels = parse_content(match_container, "<a
class='name' href='(.+?)' title='(.+?)'>", True)
-
- for url_channel,title in match_channels:
- if not title == 'GameTrailers':
- add_menu_item('ITEMTYPE_DIRECTORY', title,
url_channel, 'show_menu_playtube_videos')
-
- xbmcplugin.endOfDirectory(handle=pluginhandle)
-
-
- def show_menu_playtube_videos(self):
- log('Indexing Playtube videos', xbmc.LOGDEBUG)
-
- match_content = parse_content(url)
- match_video = parse_content(match_content, '<h3><a
href="(.+?)">(.+?)</a></h3>\n<p><a href=".+?">.+?</a></p>\n</div>\n<a
href=".+?" class="img_link"><img alt=".+?" src="(.+?)" /></a>', True)
- match_next = parse_content(match_content, '<a
class="next_page" rel="next" href="(.+?)"')
-
- for url_video,title,thumbnail in match_video:
- add_menu_item('ITEMTYPE_VIDEO', title, url_video,
'play_playtube_video', thumbnail)
-
- for url_next in match_next:
- add_menu_item('ITEMTYPE_DIRECTORY', translation(30001),
url_base + url_next, 'show_menu_playtube_videos')
-
- xbmcplugin.endOfDirectory(handle=pluginhandle)
-
-
- def play_playtube_video(self):
- log('Playing Playtube video: ' + url, xbmc.LOGDEBUG)
-
- match_video = parse_content(url, 'video_meta-(.+?)"')[0]
- url_video = self.get_video(match_video)
-
- self.play_media(url_video)
diff --git a/plugin.video.gameone/resources/language/English/strings.xml
b/plugin.video.gameone/resources/language/English/strings.xml
index 4ca693d..4300f59 100644
--- a/plugin.video.gameone/resources/language/English/strings.xml
+++ b/plugin.video.gameone/resources/language/English/strings.xml
@@ -3,12 +3,12 @@
<!-- general -->
<string id="30001">Next Page</string>
<string id="30002">Episode</string>
+ <string id="30003">Untitled</string>
<!-- main menu -->
<string id="30100">Settings</string>
<string id="30101">TV</string>
<string id="30102">Blog</string>
- <string id="30103">Playtube</string>
<string id="30104">Podcast</string>
<!-- blog menu -->
diff --git a/plugin.video.gameone/resources/language/German/strings.xml
b/plugin.video.gameone/resources/language/German/strings.xml
index 4a6ca64..b6364e1 100644
--- a/plugin.video.gameone/resources/language/German/strings.xml
+++ b/plugin.video.gameone/resources/language/German/strings.xml
@@ -3,12 +3,12 @@
<!-- general -->
<string id="30001">Nächste Seite</string>
<string id="30002">Folge</string>
+ <string id="30003">Ohne Titel</string>
<!-- main menu -->
<string id="30100">Einstellungen</string>
<string id="30101">TV</string>
<string id="30102">Blog</string>
- <string id="30103">Playtube</string>
<string id="30104">Podcast</string>
<!-- blog menu -->
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=ede5e6fd495ffae9c20fe6dd33df1b8ffdc49a0d
commit ede5e6fd495ffae9c20fe6dd33df1b8ffdc49a0d
Author: Martijn Kaijser <mcm.kaij...@gmail.com>
Date: Thu Sep 11 18:00:20 2014 +0200
[plugin.video.newyorktimes] 1.5.0
diff --git a/plugin.video.newyorktimes/addon.py
b/plugin.video.newyorktimes/addon.py
index 20e310d..edd50c8 100755
--- a/plugin.video.newyorktimes/addon.py
+++ b/plugin.video.newyorktimes/addon.py
@@ -52,18 +52,13 @@ def show_topic(url):
return subtopics + items
-def update_url_for_rtmp(url, XXL4HIRES):
+def update_url_for_rtmp(url):
'''Appends playpath option for an RTMP url. Other url types are
returned unchanged.
For brightcove urls, the playpath is after the '&'.
'''
- # 201408: new renditions (video resolutions) have been added... and FLVURL
is anchored to 3g resolution (?)
- # maybe in the future renditions[] should be parsed and resolution
selected by "encodingRate".
- url = re.sub(r'^(.+_wg_16x9)_.+_.+_.+\.mp4$', r'\1_xl_bb_mm.mp4', url)
- if XXL4HIRES == 'true':
- url=url.replace('_xl_bb_mm.mp4','_xxxl_hb_mm.mp4')
if url.startswith('rtmp'):
return '%s playpath=%s' % (url, url.split('&', 1)[1])
return url
@@ -74,9 +69,34 @@ def item_from_video(video, XXL4HIRES):
brightcove api Video.
'''
+ # extract the best possible resolution from renditions[] given the
XXL4HIRES option:
+ url=url_best=''
+ signal=signal_best=0
+ for p in video.renditions:
+ url=''
+ signal=0
+ for q in p:
+ if q[0] == 'url':
+ url=q[1]
+ if XXL4HIRES == 'false' and signal == 1: break
+ if q[0] == 'frameHeight':
+ if XXL4HIRES == 'false':
+ if q[1]>400 and q[1]<500:
+ signal=1
+ if url != '': break
+ else:
+ if q[1]>signal:
+ signal=q[1]
+ if XXL4HIRES == 'false' and signal == 1:
+ url_best=url
+ break
+ if XXL4HIRES == 'true' and signal > signal_best:
+ signal_best=signal
+ url_best=url
+
item = {
'label': video.name,
- 'path': update_url_for_rtmp(video.FLVURL, XXL4HIRES),
+ 'path': update_url_for_rtmp(url_best),
'info': info_from_video(video),
'is_playable': True,
}
diff --git a/plugin.video.newyorktimes/addon.xml
b/plugin.video.newyorktimes/addon.xml
index bf0694f..99a99bc 100644
--- a/plugin.video.newyorktimes/addon.xml
+++ b/plugin.video.newyorktimes/addon.xml
@@ -1,4 +1,4 @@
-<addon id="plugin.video.newyorktimes" name="New York Times"
provider-name="Jonathan Beluch (jbel), idleloop" version="1.4.3">
+<addon id="plugin.video.newyorktimes" name="New York Times"
provider-name="Jonathan Beluch (jbel), idleloop" version="1.5">
<requires>
<import addon="xbmc.python" version="2.1.0" />
<import addon="script.module.beautifulsoup" version="3.2.0" />
diff --git a/plugin.video.newyorktimes/changelog.txt
b/plugin.video.newyorktimes/changelog.txt
index c04c429..fe6d3f0 100644
--- a/plugin.video.newyorktimes/changelog.txt
+++ b/plugin.video.newyorktimes/changelog.txt
@@ -1,4 +1,7 @@
-Version 1.4.3
+Version 1.5
+* video urls are now always correctly extracted, given the resolution chosen
+
+Version 1.4.3 to 1.4.4
* changed video urls as per website changes
Version 1.4 to 1.4.2
diff --git a/plugin.video.newyorktimes/resources/settings.xml
b/plugin.video.newyorktimes/resources/settings.xml
index a1c3dec..a393be6 100644
--- a/plugin.video.newyorktimes/resources/settings.xml
+++ b/plugin.video.newyorktimes/resources/settings.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
-<setting id="xxl4hires" type="bool" label="Try to access higher resolution
videos" default="false"/>
+<setting id="xxl4hires" type="bool" label="HD videos" default="false"/>
</settings>
-----------------------------------------------------------------------
Summary of changes:
plugin.video.foodnetwork/README.txt | 1 +
plugin.video.foodnetwork/addon.xml | 2 +-
plugin.video.foodnetwork/changelog.txt | 2 +
plugin.video.foodnetwork/default.py | 48 ++++++++-------
.../resources/language/English/strings.xml | 8 +++
plugin.video.foodnetwork/resources/settings.xml | 3 +-
plugin.video.gameone/addon.xml | 2 +-
plugin.video.gameone/changelog.txt | 14 ++++-
plugin.video.gameone/default.py | 64 ++++----------------
.../resources/language/English/strings.xml | 2 +-
.../resources/language/German/strings.xml | 2 +-
plugin.video.guardian/addon.xml | 3 +-
plugin.video.guardian/changelog.txt | 5 +-
plugin.video.guardian/default.py | 54 ++++++++++-------
plugin.video.guardian/resources/lib/guardian.py | 44 ++++++++++----
plugin.video.newyorktimes/.travis.yml | 7 --
plugin.video.newyorktimes/addon.py | 34 ++++++++--
plugin.video.newyorktimes/addon.xml | 2 +-
plugin.video.newyorktimes/changelog.txt | 5 +-
plugin.video.newyorktimes/resources/settings.xml | 2 +-
plugin.video.raitv/addon.xml | 2 +-
plugin.video.raitv/changelog.txt | 3 +
plugin.video.raitv/default.py | 14 +----
23 files changed, 178 insertions(+), 145 deletions(-)
delete mode 100644 plugin.video.newyorktimes/.travis.yml
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
_______________________________________________
Xbmc-addons mailing list
Xbmc-addons@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xbmc-addons