The branch, frodo has been updated
via 114909bc777c459bac5b65fa59b8cafa1fd437f8 (commit)
via a61bb1008ed747e89a8245aba9d2990ceca893c3 (commit)
from b39db2a70250e768b2fe2b3ed4a2cda50ba7d5ad (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=114909bc777c459bac5b65fa59b8cafa1fd437f8
commit 114909bc777c459bac5b65fa59b8cafa1fd437f8
Author: beenje <[email protected]>
Date: Fri Dec 20 19:08:07 2013 +0100
[plugin.video.nrk] updated to version 4.4.14
diff --git a/plugin.video.nrk/addon.xml b/plugin.video.nrk/addon.xml
index 4d84f42..85c75a6 100644
--- a/plugin.video.nrk/addon.xml
+++ b/plugin.video.nrk/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.nrk"
name="NRK Nett-TV"
- version="4.4.13"
+ version="4.4.14"
provider-name="takoi">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
diff --git a/plugin.video.nrk/changelog.txt b/plugin.video.nrk/changelog.txt
index 340ef34..d8c1a60 100644
--- a/plugin.video.nrk/changelog.txt
+++ b/plugin.video.nrk/changelog.txt
@@ -1,3 +1,9 @@
+[B]4.4.14[/B]
+- Diverse sideendringer
+- Fikset negativ starttid enkelte undertekster
+- Raskere lasting av episodelister (programinformasjon nå tilgjengelig på
samme side)
+- Fjernet «kvalitet» fra innstillinger (blir bestemt av Innstillinger ->
System -> Internettilgang -> BÃ¥ndbreddebegrensning)
+
[B]4.4.13[/B]
- Sideendringer
diff --git a/plugin.video.nrk/data.py b/plugin.video.nrk/data.py
index b127a0b..d25a250 100644
--- a/plugin.video.nrk/data.py
+++ b/plugin.video.nrk/data.py
@@ -17,11 +17,11 @@ import json
import requests
import HTMLParser
import StorageServer
-import CommonFunctions
+import CommonFunctions as common
from itertools import repeat
html_decode = HTMLParser.HTMLParser().unescape
-parseDOM = CommonFunctions.parseDOM
+parseDOM = common.parseDOM
cache = StorageServer.StorageServer('nrk.no', 336)
session = requests.session()
@@ -107,42 +107,38 @@ def get_search_results(query, page=1):
def get_seasons(arg):
- """ returns: </program/Episodes/aktuelt-tv/11998> """
url = "http://tv.nrk.no/serie/%s" % arg
html = xhrsession.get(url).text
- html = parseDOM(html, 'div', {'id':'seasons'})
- html = parseDOM(html, 'noscript')
- titles = parseDOM(html, 'a', {'class':'seasonLink'})
- titles = [ "Sesong %s" % html_decode(t) for t in titles ]
- ids = parseDOM(html, 'a', {'class':'seasonLink'}, ret='href')
+ items = parseDOM(html, 'li', {'class':'season-menu-item'})
+ titles = [ html_decode(parseDOM(li, 'a')[0]) for li in items ]
+ ids = [ parseDOM(li, 'a', ret='data-season')[0] for li in items ]
+ urls = [ "/program/Episodes/%s/%s/0" % (arg, i) for i in ids ]
thumbs = repeat(_thumb_url(arg))
fanart = repeat(_fanart_url(arg))
- return titles, ids, thumbs, fanart
+ return titles, urls, thumbs, fanart
def get_episodes(series_id, season_id):
- """ returns: </serie/aktuelt-tv/nnfa50051612/16-05-2012..> """
url = "http://tv.nrk.no/program/Episodes/%s/%s" % (series_id, season_id)
html = xhrsession.get(url).text
- trs = parseDOM(html, 'tr', {'class':'[^"\']*episode-row js-click *'})
- titles = [ parseDOM(tr, 'a', {'class':'p-link'})[0] for tr in trs ]
- titles = map(html_decode, titles)
- ids = [ parseDOM(tr, 'a', {'class':'p-link'}, ret='href')[0] for tr in trs ]
- ids = [ e.split('http://tv.nrk.no')[-1] for e in ids ]
- descr = [lambda x=x: _get_descr(x) for x in ids ]
+ ul = parseDOM(html, 'ul', {'class':'episode-list'})
+ assert len(ul) == 1
+ cls = parseDOM(ul, 'li', ret='class')
+ items = parseDOM(ul, 'li')
+ items = [ items[i] for i in range(len(items)) if "no-rights" not in cls[i] ]
+ titles = [ parseDOM(i, 'h3')[0] for i in items ]
+ titles = [ html_decode(common.stripTags(_)) for _ in titles ]
+ urls = [ parseDOM(i, 'a', ret='href')[0] for i in items ]
+ descr = [ parseDOM(i, 'p')[0] for i in items ]
+ descr = [ html_decode(common.stripTags(_)) for _ in descr ]
thumbs = repeat(_thumb_url(series_id))
fanart = repeat(_fanart_url(series_id))
- return titles, ids, thumbs, fanart, descr
+ return titles, urls, thumbs, fanart, descr
-def get_media_url(video_id, bitrate):
- bitrate = 4 if bitrate > 4 else bitrate
+def get_media_url(video_id):
url = "http://v7.psapi.nrk.no/mediaelement/%s" % video_id
- url = _get_cached_json(url, 'mediaUrl')
- url = url.replace('/z/', '/i/', 1)
- url = url.rsplit('/', 1)[0]
- url = url + '/index_%s_av.m3u8' % bitrate
- return url
+ return xhrsession.get(url).json()['mediaUrl']
def _get_cached_json(url, node):
@@ -164,7 +160,7 @@ def _fanart_url(id):
return "http://nrk.eu01.aws.af.cm/f/%s" % id.strip('/')
def _get_descr(url):
- url = "http://nrk.no/serum/api/video/%s" % url.split('/')[3]
+ url = "http://v7.psapi.nrk.no/mediaelement/%s" % url.split('/')[3]
try:
return _get_cached_json(url, 'description')
except:
diff --git a/plugin.video.nrk/default.py b/plugin.video.nrk/default.py
index c402191..5f0227b 100644
--- a/plugin.video.nrk/default.py
+++ b/plugin.video.nrk/default.py
@@ -24,7 +24,6 @@ from xbmcgui import ListItem
import plugin
plugin = plugin.Plugin()
-BITRATE = int(plugin.get_setting('bitrate')) + 1
SHOW_SUBS = int(plugin.get_setting('showsubtitles')) == 1
@plugin.route('/')
@@ -94,7 +93,7 @@ def mostrecent():
view(*data.get_most_recent())
@plugin.route('/mostpopular')
-def mostpolpular():
+def mostpopular():
import data
view(*data.get_most_popular())
@@ -166,7 +165,7 @@ def episodes(series_id, season_id):
@plugin.route('/program/<video_id>/.*')
def play(video_id, series_id=""):
import data, subs
- url = data.get_media_url(video_id, BITRATE)
+ url = data.get_media_url(video_id)
xbmcplugin.setResolvedUrl(plugin.handle, True, ListItem(path=url))
player = xbmc.Player()
subtitle = subs.get_subtitles(video_id)
diff --git a/plugin.video.nrk/resources/language/English/strings.xml
b/plugin.video.nrk/resources/language/English/strings.xml
index 037da54..83e3f9d 100644
--- a/plugin.video.nrk/resources/language/English/strings.xml
+++ b/plugin.video.nrk/resources/language/English/strings.xml
@@ -1,9 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<strings>
- <string id="30001">Quality</string>
- <string id="30002">Subtitles</string>
- <string id="30003">Off</string>
- <string id="30004">On</string>
- <string id="30005">Note: Quality on live streams are determined by the
bandwidth</string>
- <string id="30006">limitation set in Settings->System->Internet
access</string>
+ <string id="30002">Subtitles</string>
+ <string id="30003">Off</string>
+ <string id="30004">On</string>
+ <string id="30005">Bitrate can be selected in Settings->System-></string>
+ <string id="30006">Internet access->Internet connection bandwidth
limitation</string>
</strings>
diff --git a/plugin.video.nrk/resources/language/Norwegian/strings.xml
b/plugin.video.nrk/resources/language/Norwegian/strings.xml
index fca3f68..0e67659 100644
--- a/plugin.video.nrk/resources/language/Norwegian/strings.xml
+++ b/plugin.video.nrk/resources/language/Norwegian/strings.xml
@@ -1,9 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<strings>
- <string id="30001">Kvalitet</string>
- <string id="30002">Teksting</string>
- <string id="30003">Av</string>
- <string id="30004">PÃ¥</string>
- <string id="30005">Obs: Kvalitet på direktestrømmer bestemmes av
båndbreddebegrensning</string>
- <string id="30006">satt i
Innstillinger->System->Internettilgang</string>
+ <string id="30002">Teksting</string>
+ <string id="30003">Av</string>
+ <string id="30004">PÃ¥</string>
+ <string id="30005">Bitrate kan bli valgt i Innstillinger-></string>
+ <string id="30006">System->Internettilgang->BÃ¥ndbreddebegrensning</string>
</strings>
diff --git a/plugin.video.nrk/resources/settings.xml
b/plugin.video.nrk/resources/settings.xml
index e337afd..6b76e25 100644
--- a/plugin.video.nrk/resources/settings.xml
+++ b/plugin.video.nrk/resources/settings.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
- <setting id="showsubtitles" type="enum" label="30002"
lvalues="30003|30004" default="1"/>
- <setting id="bitrate" type="enum" label="30001" values="400 kbit/s|700
kbit/s|1400 kbit/s|2300 kbit/s|3500 kbit/s" default="4"/>
- <setting label="30005" type="lsep"/>
- <setting label="30006" type="lsep"/>
+ <setting id="showsubtitles" type="enum" label="30002"
lvalues="30003|30004" default="1"/>
+ <setting label="30005" type="lsep"/>
+ <setting label="30006" type="lsep"/>
</settings>
diff --git a/plugin.video.nrk/subs.py b/plugin.video.nrk/subs.py
index c8d23c7..b56e727 100644
--- a/plugin.video.nrk/subs.py
+++ b/plugin.video.nrk/subs.py
@@ -19,7 +19,7 @@ import xbmc
from data import xhrsession as requests
def get_subtitles(video_id):
- html = requests.get("http://tv.nrk.no/programsubtitles/%s" % video_id).text
+ html = requests.get("http://v7.psapi.nrk.no/programs/%s/subtitles/tt" %
video_id).text
if not html:
return None
@@ -41,7 +41,11 @@ def get_subtitles(video_id):
def _stringToTime(txt):
p = txt.split(':')
- return int(p[0])*3600+int(p[1])*60+float(p[2])
+ try:
+ ms = float(p[2])
+ except ValueError:
+ ms = 0
+ return int(p[0]) * 3600 + int(p[1]) * 60 + ms
def _timeToString(time):
return '%02d:%02d:%02d,%03d' %
(time/3600,(time%3600)/60,time%60,(time%1)*1000)
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=a61bb1008ed747e89a8245aba9d2990ceca893c3
commit a61bb1008ed747e89a8245aba9d2990ceca893c3
Author: beenje <[email protected]>
Date: Fri Dec 20 19:08:04 2013 +0100
[plugin.video.svtplay] updated to version 3.3.5
diff --git a/plugin.video.svtplay/addon.xml b/plugin.video.svtplay/addon.xml
index fc99801..9b1898e 100644
--- a/plugin.video.svtplay/addon.xml
+++ b/plugin.video.svtplay/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.svtplay"
name="SVT Play"
- version="3.3.4"
+ version="3.3.5"
provider-name="nilzen">
<requires>
<import addon="script.module.parsedom" version="1.2.0"/>
diff --git a/plugin.video.svtplay/changelog.txt
b/plugin.video.svtplay/changelog.txt
index 399027a..3041a1f 100644
--- a/plugin.video.svtplay/changelog.txt
+++ b/plugin.video.svtplay/changelog.txt
@@ -1,3 +1,7 @@
+Version 3.3.5
+-------------
+- Fix issue #89 by hiding "Oppetarkiv" in the category listing
+
Version 3.3.4
-------------
- Hide live streams on the start page and re-enable addon in repository
diff --git a/plugin.video.svtplay/default.py b/plugin.video.svtplay/default.py
index d7741f7..a683275 100644
--- a/plugin.video.svtplay/default.py
+++ b/plugin.video.svtplay/default.py
@@ -421,8 +421,8 @@ def createDirItem(article,mode):
def startVideo(url):
"""
- Starts the XBMC player if a valid video url is
- found for the given page url.
+ Starts the XBMC player if a valid video URL is
+ found for the given page URL.
"""
if not url.startswith("/"):
url = "/" + url
@@ -435,9 +435,36 @@ def startVideo(url):
jsonObj = json.loads(jsonString)
common.log(jsonString)
- subtitle = None
+ (videoUrl, errormsg) = getVideoUrl(jsonObj)
+ subtitle = getSubtitle(jsonObj)
player = xbmc.Player()
startTime = time.time()
+
+ if videoUrl:
+ xbmcplugin.setResolvedUrl(pluginHandle, True,
xbmcgui.ListItem(path=videoUrl))
+
+ if subtitle:
+ while not player.isPlaying() and time.time() - startTime < 10:
+ time.sleep(1.)
+
+ player.setSubtitles(subtitle)
+
+ if not SHOW_SUBTITLES:
+ player.showSubtitles(False)
+ else:
+ # No video URL was found
+ dialog = xbmcgui.Dialog()
+ if not errormsg:
+ dialog.ok("SVT Play", localize(30100))
+ else:
+ dialog.ok("SVT Play", errormsg)
+
+
+def getVideoUrl(jsonObj):
+ """
+ Returns a video URL from a JSON object and
+ an error message, if available.
+ """
videoUrl = None
extension = "None"
args = ""
@@ -450,6 +477,8 @@ def startVideo(url):
"""
tmpurl = video["url"]
argpos = tmpurl.rfind("?")
+ errormsg = ""
+
if argpos > 0:
args = tmpurl[argpos:]
tmpurl = tmpurl[:argpos]
@@ -472,17 +501,10 @@ def startVideo(url):
continue
videoUrl = tmpurl
- for sub in jsonObj["video"]["subtitleReferences"]:
- if sub["url"].endswith(".wsrt"):
- subtitle = sub["url"]
- else:
- if len(sub["url"]) > 0:
- common.log("Skipping unknown subtitle: " + sub["url"])
-
if extension == "HLS" and HLS_STRIP:
videoUrl = hlsStrip(videoUrl)
elif extension == "HLS" and BW_SELECT:
- videoUrl = getStream(videoUrl)
+ (videoUrl, errormsg) = getStreamForBW(videoUrl)
if extension == "F4M":
videoUrl = videoUrl.replace("/z/",
"/i/").replace("manifest.f4m","master.m3u8")
@@ -493,36 +515,37 @@ def startVideo(url):
if extension == "None" and videoUrl:
# No supported video was found
common.log("No supported video extension found for URL: " + videoUrl)
- videoUrl = None
+ return None
- if videoUrl:
-
- if args and not (HLS_STRIP or BW_SELECT):
- common.log("Appending arguments: "+args)
- videoUrl = videoUrl + args
+ if args and not (HLS_STRIP or BW_SELECT):
+ videoUrl = videoUrl + args
- if extension == "MP4" and videoUrl.startswith("rtmp://"):
- videoUrl = videoUrl + " swfUrl="+svt.SWF_URL+" swfVfy=1"
-
- xbmcplugin.setResolvedUrl(pluginHandle, True,
xbmcgui.ListItem(path=videoUrl))
+ if extension == "MP4" and videoUrl.startswith("rtmp://"):
+ videoUrl = videoUrl + " swfUrl="+svt.SWF_URL+" swfVfy=1"
- if subtitle:
+ return (videoUrl, errormsg)
- while not player.isPlaying() and time.time() - startTime < 10:
- time.sleep(1.)
- player.setSubtitles(subtitle)
+def getSubtitle(jsonObj):
+ """
+ Returns a subtitle from a JSON object
+ """
+ subtitle = None
- if not SHOW_SUBTITLES:
- player.showSubtitles(False)
- else:
- # No video URL was found
- dialog = xbmcgui.Dialog()
- dialog.ok("SVT PLAY", localize(30100))
+ for sub in jsonObj["video"]["subtitleReferences"]:
+ if sub["url"].endswith(".wsrt"):
+ subtitle = sub["url"]
+ else:
+ if len(sub["url"]) > 0:
+ common.log("Skipping unknown subtitle: " + sub["url"])
+
+ return subtitle
def mp4Handler(jsonObj):
"""
+ Returns a mp4 stream URL.
+
If there are several mp4 streams in the JSON object:
pick the one with the highest bandwidth.
@@ -552,7 +575,7 @@ def mp4Handler(jsonObj):
bitrate = video["bitrate"]
url = video["url"]
- common.log("mp4 handler info: bitrate="+str(bitrate)+" url="+url)
+ common.log("Info: bitrate="+str(bitrate)+" url="+url)
return url
@@ -596,15 +619,16 @@ def hlsStrip(videoUrl):
return hlsurl
-def getStream(url):
+def getStreamForBW(url):
"""
- Returns a stream matching the set bandwidth
+ Returns a stream URL for the set bandwidth,
+ and an error message, if applicable.
"""
f = urllib.urlopen(url)
lines = f.readlines()
- hlsurl = ''
+ hlsurl = ""
marker = "#EXT-X-STREAM-INF"
found = False
@@ -621,9 +645,15 @@ def getStream(url):
found = True
f.close()
- hlsurl = hlsurl.rstrip()
- common.log("Returned stream url: " + hlsurl)
- return hlsurl
+
+ if found:
+ hlsurl = hlsurl.rstrip()
+ common.log("Returned stream url: " + hlsurl)
+ return (hlsurl, '')
+ else:
+ errormsg = "No stream found for bandwidth setting " + str(LOW_BANDWIDTH)
+ common.log(errormsg)
+ return (None, errormsg)
def addDirectoryItem(title, params, thumbnail = None, folder = True, live =
False, info = None):
diff --git a/plugin.video.svtplay/resources/language/English/strings.xml
b/plugin.video.svtplay/resources/language/English/strings.xml
index 6caeb99..9a44bd6 100644
--- a/plugin.video.svtplay/resources/language/English/strings.xml
+++ b/plugin.video.svtplay/resources/language/English/strings.xml
@@ -26,6 +26,6 @@
<string id="30506">Show both clips and episodes for programs</string>
<string id="30507">Set bandwidth manually</string>
<string id="30508">Bandwidth</string>
- <string id="40001">General</string>
- <string id="40002">Advanced</string>
+ <string id="30601">General</string>
+ <string id="30602">Advanced</string>
</strings>
diff --git a/plugin.video.svtplay/resources/language/Swedish/strings.xml
b/plugin.video.svtplay/resources/language/Swedish/strings.xml
index c5a7906..e05365a 100644
--- a/plugin.video.svtplay/resources/language/Swedish/strings.xml
+++ b/plugin.video.svtplay/resources/language/Swedish/strings.xml
@@ -26,6 +26,6 @@
<string id="30506">Visa både klipp och avsnitt för program</string>
<string id="30507">Ställ in bandbredd manuellt</string>
<string id="30508">Bandbredd</string>
- <string id="40001">Allmänt</string>
- <string id="40002">Avancerat</string>
+ <string id="30601">Allmänt</string>
+ <string id="30602">Avancerat</string>
</strings>
diff --git a/plugin.video.svtplay/resources/lib/svt.py
b/plugin.video.svtplay/resources/lib/svt.py
index a8daefb..da5da73 100644
--- a/plugin.video.svtplay/resources/lib/svt.py
+++ b/plugin.video.svtplay/resources/lib/svt.py
@@ -12,7 +12,7 @@ SWF_URL =
"http://www.svtplay.se/public/swf/video/svtplayer-2013.05.swf"
BANDWIDTH = [300,500,900,1600,2500,5000]
URL_A_TO_O = "/program"
-URL_CATEGORIES = "/kategorier"
+URL_CATEGORIES = "/program"
URL_CHANNELS = "/kanaler"
URL_TO_LATEST = "?tab=senasteprogram&sida=1"
URL_TO_LATEST_NEWS = "?tab=senastenyhetsprogram&sida=1"
@@ -130,6 +130,11 @@ def getCategories():
category = {}
category["url"] = common.parseDOM(li, "a", ret = "href")[0]
title = common.parseDOM(li, "span")[0]
+
+ if category["url"].endswith("oppetarkiv"):
+ # Skip the "Oppetarkiv" category
+ continue
+
category["title"] = common.replaceHTMLCodes(title)
categories.append(category)
diff --git a/plugin.video.svtplay/resources/settings.xml
b/plugin.video.svtplay/resources/settings.xml
index 3e1283a..a67e754 100644
--- a/plugin.video.svtplay/resources/settings.xml
+++ b/plugin.video.svtplay/resources/settings.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
- <category label="40001">
+ <category label="30601">
<setting id="diritems" type="slider" label="30503" default="20"
range="20,10,100" option="int" />
<setting id="alpha" type="bool" label="30502" default="false" />
<setting id="fullparse" type="bool" label="30506" default="false" />
@@ -8,7 +8,7 @@
<setting id="showsubtitles" type="bool" label="30501" default="false" />
<setting id="debug" type="bool" label="30500" default="false" />
</category>
- <category label="40002">
+ <category label="30602">
<setting id="hlsstrip" type="bool" label="30505" default="false" />
<setting id="bwselect" type="bool" label="30507" default="false"
enable="eq(-1,false)" />
<setting id="bandwidth" type="select" label="30508" default="2500"
values="300|500|900|1600|2500" enable="eq(-1,true) + eq(-2,false)" />
-----------------------------------------------------------------------
Summary of changes:
plugin.video.nrk/addon.xml | 2 +-
plugin.video.nrk/changelog.txt | 6 +
plugin.video.nrk/data.py | 46 ++++-----
plugin.video.nrk/default.py | 5 +-
.../resources/language/English/strings.xml | 11 +-
.../resources/language/Norwegian/strings.xml | 11 +-
plugin.video.nrk/resources/settings.xml | 7 +-
plugin.video.nrk/subs.py | 8 +-
plugin.video.svtplay/addon.xml | 2 +-
plugin.video.svtplay/changelog.txt | 4 +
plugin.video.svtplay/default.py | 106 +++++++++++++-------
.../resources/language/English/strings.xml | 4 +-
.../resources/language/Swedish/strings.xml | 4 +-
plugin.video.svtplay/resources/lib/svt.py | 7 +-
plugin.video.svtplay/resources/settings.xml | 4 +-
15 files changed, 134 insertions(+), 93 deletions(-)
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