The branch, eden has been updated
       via  4c5474e29f723996d9d74b318d68d5d1c1bf6097 (commit)
      from  138625e16357d8e78d2481b6171130618d9f5665 (commit)

- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=4c5474e29f723996d9d74b318d68d5d1c1bf6097

commit 4c5474e29f723996d9d74b318d68d5d1c1bf6097
Author: Martijn Kaijser <[email protected]>
Date:   Thu Aug 16 19:09:23 2012 +0200

    [plugin.video.nrk] -v4.0.0

diff --git a/plugin.video.nrk/addon.xml b/plugin.video.nrk/addon.xml
index d5f7a1b..6c0ef10 100644
--- a/plugin.video.nrk/addon.xml
+++ b/plugin.video.nrk/addon.xml
@@ -1,11 +1,14 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="plugin.video.nrk"
-       name="NRK"
-       version="3.1.4"
+       name="NRK Nett-TV"
+       version="4.0.0"
        provider-name="takoi">
   <requires>
     <import addon="xbmc.python" version="2.0"/>
     <import addon="script.module.beautifulsoup"/>
+    <import addon="script.module.parsedom" version="0.9.2"/>
+    <import addon="script.module.requests" version="0.13.2"/>
+    <import addon="script.module.xbmcswift" version="0.2.0"/>
   </requires>
   <extension point="xbmc.python.pluginsource" library="default.py">
     <provides>video</provides>
@@ -13,9 +16,9 @@
   <extension point="xbmc.addon.metadata">
     <platform>all</platform>
     <language>no</language>
-    <summary lang="en">Norwegian Broadcasting Corporation</summary>
-    <summary lang="no">Norsk rikskringkasting</summary>
-    <description lang="en">NRK's Web TV gives you the opportunity to watch 
live TV as well as recordings of many shows.</description>
-    <description lang="no">NRKs Nett-TV gir deg muligheten til å se mange 
NRK-programmer både direkte og i opptak.</description>
+    <summary lang="en">Watch NRK Web TV</summary>
+    <summary lang="no">Se NRK Nett-TV</summary>
+    <description lang="en">NRK Web TV gives you the opportunity to watch live 
TV as well as recordings of many shows.</description>
+    <description lang="no">NRK Nett-TV gir deg muligheten til å se mange av 
NRKs programmer både direkte og i opptak.</description>
   </extension>
 </addon>
diff --git a/plugin.video.nrk/changelog.txt b/plugin.video.nrk/changelog.txt
index df8ae2a..99d8444 100644
--- a/plugin.video.nrk/changelog.txt
+++ b/plugin.video.nrk/changelog.txt
@@ -1,23 +1,3 @@
-[B]3.1.4[/B]
-- fixed: live streams due to site changes
+[B]4.0.0[/B]
+- Ny versjon basert på NRKs nye nett-TV
 
-[B]3.1.3[/B]
-- fixed: live streams due to site changes
-
-[B]3.1.2[/B]
-- fixed: missing labels with certain skins
-
-[B]3.1.1[/B]
-- eden
-
-[B]2.1.1[/B]
-- added: multi-page search result
-
-[B]2.1.0[/B]
-- added: search
-- added: description and larger thumbs
-- added: most watched and genres view
-- fixed: various missing videos
-
-[B]2.0.0[/B]
-- rewrite
diff --git a/plugin.video.nrk/data.py b/plugin.video.nrk/data.py
index 9040d92..8545104 100644
--- a/plugin.video.nrk/data.py
+++ b/plugin.video.nrk/data.py
@@ -1,8 +1,4 @@
-# -*- coding: utf-8 -*-
 '''
-    NRK plugin for XBMC
-    Copyright (C) 2010 Thomas Amland
-
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation, either version 3 of the License, or
@@ -17,161 +13,108 @@
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 '''
 
-import urllib, re
-from BeautifulSoup import BeautifulSoup
-from DataItem import DataItem
-from dataStatic import *
-from utils import *
-
-
-global BITRATES, BITRATE_ID
-def setQuality(id):
-    global BITRATES, BITRATE_ID
-    BITRATE_ID = id
-    BITRATES = ['400', '800', '1200']
-
-
-def getLive():
-    url_1 = [
-        
'http://a897.l11601532896.c116015.g.lm.akamaistream.net/D/897/116015/v0001/reflector:32896',
-        
'http://a48.l11601648047.c116016.g.lm.akamaistream.net/D/48/116016/v0001/reflector:48047',
-        
'http://a1377.l11673952706.c116739.g.lm.akamaistream.net/D/1377/116739/v0001/reflector:52706'
-        ][BITRATE_ID]
-    
-    url_2 = [
-        
'http://a1562.l11601643115.c116016.g.lm.akamaistream.net/D/1562/116016/v0001/reflector:43115',
-        
'http://a1382.l11674038974.c116740.g.lm.akamaistream.net/D/1382/116740/v0001/reflector:38974',
-        
'http://a746.l11674151924.c116741.g.lm.akamaistream.net/D/746/116741/v0001/reflector:51924'
-        ][BITRATE_ID]
-    
-    url_3 = [
-        
'http://a397.l11601753777.c116017.g.lm.akamaistream.net/D/397/116017/v0001/reflector:53777',
-        
'http://a805.l11674254919.c116742.g.lm.akamaistream.net/D/805/116742/v0001/reflector:54919',
-        
'http://a1372.l11674333102.c116743.g.lm.akamaistream.net/D/1372/116743/v0001/reflector:33102'
-        ][BITRATE_ID]
-    
-    return [DataItem(title="NRK 1", url=url_1, thumb=os.path.join(R_PATH, 
"nrk1.jpg"), isPlayable=True),
-            DataItem(title="NRK 2", url=url_2, thumb=os.path.join(R_PATH, 
"nrk2.jpg"), isPlayable=True),
-            DataItem(title="NRK 3", url=url_3, thumb=os.path.join(R_PATH, 
"nrk3.jpg"), isPlayable=True)]
-
-
-def getLatest():
-    soup = BeautifulSoup(urllib.urlopen("http://www.nrk.no/nett-tv/";))
-    li = soup.find('div', attrs={'class' : 'nettv-latest'}).findAll('li')
-    items = []
-    for e in li:
-        anc = e.find('a', attrs={'href' : 
re.compile('^/nett-tv/klipp/[0-9]+')})
-        items.append( _getVideo(anc['href']) )
-    return items
-
-
-def getSearchResults(query):
-    url = "http://www.nrk.no/nett-tv/sok/"; + urllib.quote(query)
-    return _getSearchResults(url)
-
-def _getSearchResults(url):
-    soup = BeautifulSoup(urllib.urlopen(url))
-    li = soup.find('div', attrs={'id' : 'search-results'}).findAll('li')
-    items = []
-    for e in li:
-        url = e.find('em').string
-        if contains(url, "klipp"):
-            items.append( _getVideo(url) )
-        elif contains(url, "prosjekt"):
-            title = decodeHtml(e.find('a').string)
-            descr = decodeHtml(e.find('p').string)
-            items.append( DataItem(title=title, description=descr, 
url="/nett-tv/prosjekt/"+getId(url)) )
-    #next page
-    url = soup.find('a', attrs={'id' : 
'ctl00_contentPlaceHolder_ucSearch_nextLink'})['href']
-    if not (url.endswith('0') or url.endswith('1')):
-        items.append(DataItem(title="Neste »", url=url))
-    return items
-
-
-def getMostWatched(days):
-    url = "http://www.nrk.no/nett-tv/ml/topp12.aspx?dager=%s"; % days
-    soup = BeautifulSoup(urllib.urlopen(url))
-    li = soup.findAll('li')
-    items = []
-    for e in li:
-        url = e.find('a')['href']
-        if contains(url, "klipp"):
-            items.append( _getVideo(url))
-    return items
-
-
-def getByUrl(url):
-    if (url.startswith("/nett-tv/tema") or url.startswith("/nett-tv/bokstav")):
-        url = "http://www.nrk.no"; + url
-        soup = BeautifulSoup(urllib.urlopen(url))
-        return _getAllProsjekt(soup)
-    
-    elif (url.startswith("/nett-tv/sok")):
-        url = "http://www.nrk.no"; + url
-        return _getSearchResults(url)
-    
-    elif (url.startswith("/nett-tv/prosjekt")):
-        url = "http://www.nrk.no"; + url
-        
-    elif (url.startswith("/nett-tv/kategori")):
-        url = "http://www.nrk.no/nett-tv/menyfragment.aspx?type=category&id="; 
+ getId(url)
-    
-    soup = BeautifulSoup(urllib.urlopen(url))
-    items = []
-    items.extend(_getAllKlipp(soup))
-    items.extend(_getAllKategori(soup))
-    return items
-
-
-def _getAllKlipp(soup):
-    items = soup.findAll('a', 
attrs={'class':re.compile('icon-(video|sound)-black.*'), 
'href':re.compile('.*nett-tv/klipp/[0-9]+$')})
-    return [ _getVideo(e['href']) for e in items ]
-
-
-def _getAllKategori(soup):
-    items = soup.findAll('a', 
attrs={'class':re.compile('icon-closed-black.*'), 
'href':re.compile('^/nett-tv/kategori/[0-9]+')})
-    return [ DataItem(title=decodeHtml(e['title']), url=e['href']) for e in 
items ]
-
-
-def _getAllProsjekt(soup):
-    items = []
-    li = soup.find('div', attrs={'class' : 'nettv-category 
clearfix'}).findAll('li') 
-    for e in li:
-        anc = e.find('a', attrs={'href' : 
re.compile('^/nett-tv/prosjekt/[0-9]+')})
-        title = decodeHtml(anc['title'])
-        url   = anc['href']
-        img   = _getImg(e.find('img')['src'])
-        descr = decodeHtml(str(e.find('div', 
attrs={'class':'summary'}).find('p').string))
-        
-        items.append( DataItem(title=title, description=descr, thumb=img, 
url=url) )
-    return items
-
-
-def _getVideo(url):
-    id = getId(url)
-    (soup, url) = _findVideoUrl(id, BITRATE_ID)
-    url = url.split("mms://", 1)[1] #some uri's contais illegal chars so need 
to fix this
-    url = url.encode('latin-1') #urllib cant unicode
-    url = urllib.quote(url)
-    url = "mms://%s?UseSilverlight=1" % url
-    
-    title = decodeHtml(soup.find('title').string)
-    descr = decodeHtml(str(soup.find('description').string))
-    img   = _getImg(soup.find('imageurl').string)
-    return DataItem(title=title, description=descr, thumb=img, url=url, 
isPlayable=True)
-
-
-def _findVideoUrl(id, bitrate):
-    if bitrate >= len(BITRATES):
-        return (None, None)
-    url = 
"http://www.nrk.no/nett-tv/silverlight/getmediaxml.ashx?id=%s&hastighet=%s"; % 
(id, BITRATES[bitrate])
-    soup = BeautifulSoup(urllib.urlopen(url))
-    url = soup.find('mediaurl').string
-    if not url:
-        return _findVideoUrl(id, bitrate+1)
-    return (soup, url)
-     
-
-def _getImg(url):
-    return re.sub("^(.*cropid.*)w[0-9]+$", "\\1w650", url)
+import re
+
+import BeautifulSoup
+html_decode = lambda string: BeautifulSoup.BeautifulSoup(string,
+    convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES).contents[0]
+
+import CommonFunctions
+parseDOM = CommonFunctions.parseDOM
+
+import requests
+requests = requests.session(headers={'User-Agent':'xbmc.org'})
+
+
+def parse_by_letter(arg):
+  """ returns: </serie/newton> or </program/koif45000708> """
+  url = "http://tv.nrk.no/programmer/%s?filter=rettigheter"; % arg
+  html = requests.get(url).text
+  html = parseDOM(html, 'div', {'id':'programList'})
+  return _parse_list(html)
+
+def parse_by_category(arg):
+  url = "http://tv.nrk.no/kategori/%s"; % arg
+  html = requests.get(url).text
+  html = parseDOM(html, 'div', {'class':'alpha-list clear'})
+  return _parse_list(html)
+
+def parse_categories():
+  url = "http://tv.nrk.no/kategori/";
+  html = requests.get(url).text
+  html = parseDOM(html, 'ul', {'id':'categoryList'})
+  return _parse_list(html)
+
+def _parse_list(html):
+  titles = parseDOM(html, 'a')
+  titles = map(html_decode, titles)
+  urls = parseDOM(html, 'a', ret='href')
+  return titles, urls
+
+
+def parse_recommended():
+  url = "http://tv.nrk.no/";
+  html = requests.get(url).text
+  html = parseDOM(html, 'ul', {'id':'introSlider'})[0]
+  
+  h1s = parseDOM(html, 'h1')
+  titles2 = parseDOM(h1s, 'a')
+  titles1 = parseDOM(html, 'strong')
+  titles = [ "%s - %s" % (t1, t2) for t1, t2 in zip(titles1, titles2) ]
+  
+  urls = parseDOM(h1s, 'a', ret='href')
+  imgs = re.findall(r'1900":"([^"]+)', html)
+  return titles, urls, imgs
+
+
+def parse_most_recent():
+  url = "http://tv.nrk.no/listobjects/recentlysent";
+  html = requests.get(url).text
+  urls = parseDOM(html, 'a', {'class':'listobject-link'}, ret='href')
+  thumbs = parseDOM(html, 'img', ret='src')[::2] #extract even elements
+  html = ''.join(parseDOM(html, 'span', {'class':'listobject-title'}))
+  titles = parseDOM(html, 'strong')
+  titles = map(html_decode, titles)
+  return titles, urls, thumbs
+
+
+def parse_seasons(arg):
+  """ returns: </program/Episodes/aktuelt-tv/11998> """
+  url = "http://tv.nrk.no/serie/%s"; % arg
+  html = requests.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')
+  return titles, ids
+
+
+def parse_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 = requests.get(url).text
+  html = parseDOM(html, 'table', {'class':'episodeTable'})
+  trs = parseDOM(html, 'tr', {'class':'has-programtooltip 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 ]
+  return titles, ids, descr
+
+
+def parse_media_url(video_id, bitrate):
+  bitrate = 4 if bitrate > 4 else bitrate
+  url = "http://nrk.no/serum/api/video/%s"; % video_id
+  url = requests.get(url).json['mediaURL']
+  url = url.replace('/z/', '/i/', 1)
+  url = url.rsplit('/', 1)[0]
+  url = url + '/index_%s_av.m3u8' % bitrate
+  return url
+
+def _get_descr(url):
+  url = "http://nrk.no/serum/api/video/%s"; % url.split('/')[3]
+  descr = requests.get(url).json['description']
+  return descr
 
diff --git a/plugin.video.nrk/default.py b/plugin.video.nrk/default.py
index ecff9c4..90eec8d 100644
--- a/plugin.video.nrk/default.py
+++ b/plugin.video.nrk/default.py
@@ -1,8 +1,5 @@
 # -*- coding: utf-8 -*-
 '''
-    NRK plugin for XBMC
-    Copyright (C) 2010 Thomas Amland
-
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation, either version 3 of the License, or
@@ -17,114 +14,126 @@
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 '''
 
+import os
 import sys
-import xbmc, xbmcgui, xbmcaddon, xbmcplugin
-import data as Data
-from data import DataItem
-
-addon = xbmcaddon.Addon(id="plugin.video.nrk")
-Data.setQuality(int(addon.getSetting("quality")))
-_ = addon.getLocalizedString
-
-def nodes(baseUrl, handle):
-    xbmcplugin.addDirectoryItem(handle, baseUrl+"?node=live",     
xbmcgui.ListItem(_(30101)), True);
-    xbmcplugin.addDirectoryItem(handle, baseUrl+"?node=letters",  
xbmcgui.ListItem(_(30103)), True);
-    xbmcplugin.addDirectoryItem(handle, baseUrl+"?node=genres",   
xbmcgui.ListItem(_(30104)), True);
-    xbmcplugin.addDirectoryItem(handle, baseUrl+"?node=latest",   
xbmcgui.ListItem(_(30102)), True);
-    xbmcplugin.addDirectoryItem(handle, baseUrl+"?node=topweek",  
xbmcgui.ListItem(_(30106)), True);
-    xbmcplugin.addDirectoryItem(handle, baseUrl+"?node=topmonth", 
xbmcgui.ListItem(_(30107)), True);
-    xbmcplugin.addDirectoryItem(handle, baseUrl+"?node=toptotal", 
xbmcgui.ListItem(_(30108)), True);
-    xbmcplugin.addDirectoryItem(handle, baseUrl+"?node=search",   
xbmcgui.ListItem(_(30105)), True);
-    xbmcplugin.endOfDirectory(handle)
-
-def node_live(baseUrl, handle):
-    dataItems = Data.getLive()
-    create(baseUrl, handle, dataItems)
-    
-def node_latest(baseUrl, handle):
-    dataItems = Data.getLatest()
-    create(baseUrl, handle, dataItems)
-    
-def node_letters(baseUrl, handle):
-    dataItems = Data.getLetters()
-    create(baseUrl, handle, dataItems)
-    
-def node_genres(baseUrl, handle):
-    dataItems = Data.getGenres()
-    create(baseUrl, handle, dataItems)
-    
-def node_topWeek(baseUrl, handle):
-    dataItems = Data.getMostWatched(7)
-    create(baseUrl, handle, dataItems)
-    
-def node_topMonth(baseUrl, handle):
-    dataItems = Data.getMostWatched(30)
-    create(baseUrl, handle, dataItems)
-    
-def node_topTotal(baseUrl, handle):
-    dataItems = Data.getMostWatched(9999)
-    create(baseUrl, handle, dataItems)
-    
-def node_search(baseUrl, handle):
-    kb = xbmc.Keyboard()
-    kb.doModal()
-    if (kb.isConfirmed()):
-        text = kb.getText()
-        dataItems = Data.getSearchResults(text)
-        create(baseUrl, handle, dataItems)
-
-def node_url(baseUrl, handle, url):
-    dataItems = Data.getByUrl(url)
-    create(baseUrl, handle, dataItems)
-    
-    
-def create(baseUrl, handle, dataItems):
-    listItems = []
-    for e in dataItems:
-        l = xbmcgui.ListItem(e.title, thumbnailImage=e.thumb)
-        l.setInfo( type="Video", infoLabels={"title": e.title, 
"plot":e.description, "tvshowtitle":e.title} )
-        l.setProperty("IsPlayable", str(e.isPlayable))
-        
-        isdir = not(e.isPlayable)
-        if isdir:
-            url = baseUrl + "?url=" + e.url
-        else:
-            url = e.url
-        listItems.append( (url, l, isdir) )
-        
-    xbmcplugin.addDirectoryItems(handle=handle, items=listItems)
-    xbmcplugin.endOfDirectory(handle)
-    
+import time
+import xbmc, xbmcaddon, xbmcplugin
+import data
+import subs
+
+from itertools import repeat
+from xbmcplugin import addDirectoryItem
+from xbmcplugin import endOfDirectory
+from xbmcgui import ListItem
+from plugin import plugin
+
+ADDON = xbmcaddon.Addon()
+ADDON_PATH = ADDON.getAddonInfo('path')
+BITRATE = int(ADDON.getSetting('bitrate')) + 1
+SHOW_SUBS = ADDON.getSetting('showsubtitles')
+
+
[email protected]('/')
+def view_top():
+  addDirectoryItem(plugin.handle, plugin.url_for("/live"), 
ListItem("Direkte"), True)
+  addDirectoryItem(plugin.handle, plugin.url_for("/recommended"), 
ListItem("Aktuelt"), True)
+  addDirectoryItem(plugin.handle, plugin.url_for("/mostrecent"), 
ListItem("Siste"), True)
+  addDirectoryItem(plugin.handle, plugin.url_for("/categories"), 
ListItem("Kategorier"), True)
+  addDirectoryItem(plugin.handle, plugin.url_for("/letters"), 
ListItem("A-Å"), True)
+  endOfDirectory(plugin.handle)
+
[email protected]('/live')
+def live():
+  img_path = os.path.join(ADDON_PATH, "resources/images")
+  add_item("NRK 1", 
"mms://a1377.l11673952706.c116739.g.lm.akamaistream.net/D/1377/116739/v0001/reflector:52706",os.path.join(img_path,
 "nrk1.png"))
+  add_item("NRK 2", 
"mms://a746.l11674151924.c116741.g.lm.akamaistream.net/D/746/116741/v0001/reflector:51924",
 os.path.join(img_path, "nrk2.png"))
+  add_item("NRK 3", 
"mms://a1372.l11674333102.c116743.g.lm.akamaistream.net/D/1372/116743/v0001/reflector:33102",
 os.path.join(img_path, "nrk3.png"))
+  endOfDirectory(plugin.handle)
+
+def add_item(title, url, thumb=""):
+  li =  ListItem(title, thumbnailImage=thumb)
+  li.setProperty('mimetype', 'application/x-mpegURL')
+  addDirectoryItem(plugin.handle, url, li, False)
+
+
+def view(titles, urls, descr=repeat(''), thumbs=repeat(''), bgs=repeat('')):
+  total = len(titles)
+  for title, url, descr, thumb, bg in zip(titles, urls, descr, thumbs, bgs):
+    descr = descr() if callable(descr) else descr
+    thumb = thumb() if callable(thumb) else thumb
+    bg = bg() if callable(bg) else bg
+    li = ListItem(title, thumbnailImage=thumb)
+    playable = plugin.route_for(url) == play
+    li.setProperty('isplayable', str(playable))
+    li.setProperty('fanart_image', bg)
+    if playable:
+      li.setInfo('video', {'plot':descr})
+    addDirectoryItem(plugin.handle, plugin.url_for(url), li, not playable, 
total)
+  endOfDirectory(plugin.handle)
+
+
[email protected]('/recommended')
+def recommended():
+  titles, urls, bgs = data.parse_recommended()
+  view(titles, urls, bgs=bgs)
+
[email protected]('/mostrecent')
+def mostrecent():
+  titles, urls, thumbs = data.parse_most_recent()
+  view(titles, urls, thumbs=thumbs)
+
[email protected]('/categories')
+def categories():
+  titles, urls = data.parse_categories()
+  view(titles, urls)
+
[email protected]('/kategori/<arg>')
+def category(arg):
+  titles, urls = data.parse_by_category(arg)
+  view(titles, urls)
+
[email protected]('/letters')
+def letters():
+  common = ['0-9'] + map(chr, range(97, 123))
+  titles = common + [ u'æ', u'ø', u'å' ]
+  titles = [ e.upper() for e in titles ]
+  urls = [ '/letters/%s' % l for l in (common + ['ae', 'oe', 'aa']) ]
+  view(titles, urls)
+
[email protected]('/letters/<arg>')
+def letter(arg):
+  titles, urls = data.parse_by_letter(arg)
+  view(titles, urls)
+
[email protected]('/serie/<arg>')
+def seasons(arg):
+  titles, urls = data.parse_seasons(arg)
+  if len(titles) == 1:
+    plugin.redirect(plugin.url_for(urls[0]))
+    return
+  view(titles, urls)
+
[email protected]('/program/Episodes/<series_id>/<season_id>')
+def episodes(series_id, season_id):
+  titles, urls, descr = data.parse_episodes(series_id, season_id)
+  view(titles, urls, descr=descr)
+
[email protected]('/serie/<series_id>/<video_id>/.*')
[email protected]('/program/<video_id>')
[email protected]('/program/<video_id>/.*')
+def play(video_id, series_id=""):
+  url = data.parse_media_url(video_id, BITRATE)
+  xbmcplugin.setResolvedUrl(plugin.handle, True, ListItem(path=url))
+  player = xbmc.Player()
+  subtitle = subs.get_subtitles(video_id)
+  #Wait for stream to start
+  start_time = time.time()
+  while not player.isPlaying() and time.time() - start_time < 10:
+    time.sleep(1.)
+    player.setSubtitles(subtitle)
+    if not SHOW_SUBS:
+      player.showSubtitles(False)
 
 if ( __name__ == "__main__" ):
-    #using episodes because most skins expects 16/9 thumbs for this
-    xbmcplugin.setContent(int(sys.argv[1]), "episodes")
-    xbmcplugin.addSortMethod(int(sys.argv[1]), xbmcplugin.SORT_METHOD_UNSORTED)
-    xbmcplugin.addSortMethod(int(sys.argv[1]), xbmcplugin.SORT_METHOD_LABEL)
-    
-    arg = sys.argv[2].split('=', 1)
-
-    if (arg[0] == "?node"):
-        if(arg[1] == "live"):
-            node_live(sys.argv[0], int(sys.argv[1]))
-        elif(arg[1] == "letters"):
-            node_letters(sys.argv[0], int(sys.argv[1]))
-        elif(arg[1] == "latest"):
-            node_latest(sys.argv[0], int(sys.argv[1]))
-        elif(arg[1] == "genres"):
-            node_genres(sys.argv[0], int(sys.argv[1]))
-        elif(arg[1] == "search"):
-            node_search(sys.argv[0], int(sys.argv[1]))
-        elif(arg[1] == "topweek"):
-            node_topWeek(sys.argv[0], int(sys.argv[1]))
-        elif(arg[1] == "topmonth"):
-            node_topMonth(sys.argv[0], int(sys.argv[1]))
-        elif(arg[1] == "toptotal"):
-            node_topTotal(sys.argv[0], int(sys.argv[1]))
-    
-    elif (arg[0] == "?url"):
-        node_url(sys.argv[0], int(sys.argv[1]), arg[1])
-    
-    else:
-        xbmcplugin.setContent(int(sys.argv[1]), "files")
-        nodes(sys.argv[0], int(sys.argv[1]))
+  plugin.run()
+
diff --git a/plugin.video.nrk/icon.png b/plugin.video.nrk/icon.png
index 1b386c8..cff9a3a 100644
Binary files a/plugin.video.nrk/icon.png and b/plugin.video.nrk/icon.png differ
diff --git a/plugin.video.nrk/resources/language/English/strings.xml 
b/plugin.video.nrk/resources/language/English/strings.xml
index 1d56f22..f3ed803 100644
--- a/plugin.video.nrk/resources/language/English/strings.xml
+++ b/plugin.video.nrk/resources/language/English/strings.xml
@@ -1,18 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <strings>
-       <string id="30000">General</string>
        <string id="30001">Quality</string>
-       
-       <string id="30011">Low (300 kbps)</string>
-       <string id="30012">Medium (600 kbps)</string>
-       <string id="30013">High (1000 kbps)</string>
-       
-       <string id="30101">Live</string>
-       <string id="30102">New</string>
-       <string id="30103">Alphabetical</string>
-       <string id="30104">Categories</string>
-       <string id="30105">Search</string>
-       <string id="30106">Most watched this week</string>
-       <string id="30107">Most watched this month</string>
-       <string id="30108">Most watched total</string>
+       <string id="30002">Subtitles</string>
+       <string id="30003">Off</string>
+       <string id="30004">On</string>
 </strings>
diff --git a/plugin.video.nrk/resources/language/Norwegian/strings.xml 
b/plugin.video.nrk/resources/language/Norwegian/strings.xml
index bec0e98..adc155f 100644
--- a/plugin.video.nrk/resources/language/Norwegian/strings.xml
+++ b/plugin.video.nrk/resources/language/Norwegian/strings.xml
@@ -1,18 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <strings>
-       <string id="30000">Generelt</string>
        <string id="30001">Kvalitet</string>
-       
-       <string id="30011">Lav (300 kbps)</string>
-       <string id="30012">Medium (600 kbps)</string>
-       <string id="30013">Høy (1000 kbps)</string>
-       
-       <string id="30101">Direkte</string>
-       <string id="30102">Nytt i nett-tv</string>
-       <string id="30103">Alfabetisk</string>
-       <string id="30104">Kategorier</string>
-       <string id="30105">Søk</string>
-       <string id="30106">Mest sett denne uken</string>
-       <string id="30107">Mest sett denne måneden</string>
-       <string id="30108">Mest sett totalt</string>
+       <string id="30002">Teksting</string>
+       <string id="30003">Av</string>
+       <string id="30004">PÃ¥</string>
 </strings>
diff --git a/plugin.video.nrk/resources/settings.xml 
b/plugin.video.nrk/resources/settings.xml
index 6960172..15c9870 100644
--- a/plugin.video.nrk/resources/settings.xml
+++ b/plugin.video.nrk/resources/settings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <settings>
-       <category label="30000">
-               <setting id="quality" type="enum" label="30001" 
lvalues="30011|30012|30013" default="2"/>
-       </category>
+       <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 id="showsubtitles" type="enum" label="30002" 
lvalues="30003|30004" default="1"/>
 </settings>

-----------------------------------------------------------------------

Summary of changes:
 .../.gitignore                                     |    0
 plugin.video.nrk/addon.xml                         |   15 +-
 plugin.video.nrk/changelog.txt                     |   24 +--
 plugin.video.nrk/data.py                           |  265 ++++++++------------
 plugin.video.nrk/default.py                        |  231 +++++++++--------
 plugin.video.nrk/fanart.jpg                        |  Bin 0 -> 141973 bytes
 plugin.video.nrk/icon.png                          |  Bin 32109 -> 42852 bytes
 plugin.video.nrk/{utils.py => plugin.py}           |   33 ++-
 plugin.video.nrk/resources/images/nrk1.png         |  Bin 0 -> 6239 bytes
 plugin.video.nrk/resources/images/nrk2.png         |  Bin 0 -> 7297 bytes
 plugin.video.nrk/resources/images/nrk3.png         |  Bin 0 -> 7517 bytes
 .../resources/language/English/strings.xml         |   17 +-
 .../resources/language/Norwegian/strings.xml       |   17 +-
 plugin.video.nrk/resources/settings.xml            |    5 +-
 plugin.video.nrk/subs.py                           |   49 ++++
 15 files changed, 314 insertions(+), 342 deletions(-)
 copy {plugin.audio.mp3search => plugin.video.nrk}/.gitignore (100%)
 create mode 100644 plugin.video.nrk/fanart.jpg
 copy plugin.video.nrk/{utils.py => plugin.py} (56%)
 create mode 100644 plugin.video.nrk/resources/images/nrk1.png
 create mode 100644 plugin.video.nrk/resources/images/nrk2.png
 create mode 100644 plugin.video.nrk/resources/images/nrk3.png
 create mode 100644 plugin.video.nrk/subs.py


hooks/post-receive
-- 
Plugins

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to