The branch, frodo has been updated
       via  87dd0704d8450a53135e7b540bfe16283da82474 (commit)
       via  5086e2c3d1a39c7c388428472721497034ca9c31 (commit)
       via  fadd41284c48d890ce326ebe75c38f7d1744f342 (commit)
       via  31aa57c70000c7ab08224928ff7e39501fdddc66 (commit)
      from  90677e9c6c1cc26a0c15ac3d7acaa2ae23534fc7 (commit)

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


http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=5086e2c3d1a39c7c388428472721497034ca9c31

commit 5086e2c3d1a39c7c388428472721497034ca9c31
Author: sphere <[email protected]>
Date:   Mon Jun 23 09:12:15 2014 +0200

    [plugin.video.nos] updated to version 2.2.0

diff --git a/plugin.video.nos/addon.xml b/plugin.video.nos/addon.xml
index b1d7d95..77ec5f6 100644
--- a/plugin.video.nos/addon.xml
+++ b/plugin.video.nos/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="plugin.video.nos"
        name="NOS"
-       version="2.1.1"
+       version="2.2.0"
        provider-name="ErwinJunge">
   <requires>
     <import addon="xbmc.python" version="2.1.0"/>
diff --git a/plugin.video.nos/changelog.txt b/plugin.video.nos/changelog.txt
index a697025..0f00449 100644
--- a/plugin.video.nos/changelog.txt
+++ b/plugin.video.nos/changelog.txt
@@ -7,3 +7,7 @@ Version bump for Eden
 [B]2.1.0:[/B]
 Fix laatste journaals
 Disable broken rss feeds
+
+[B]2.2.0:[/B]
+Fix laatste journaals
+Add WK 2014
diff --git a/plugin.video.nos/default.py b/plugin.video.nos/default.py
index b9c6063..c53511e 100644
--- a/plugin.video.nos/default.py
+++ b/plugin.video.nos/default.py
@@ -53,6 +53,7 @@ if 'module' in params: # Module chosen, load and execute 
module
   current_module = sys.modules[module]
   current_module.run(params)
 else: # No module chosen, list modules
+  addDir('WK 2014', 'wk_2014')
   addDir('Laatste Journaals', 'laatste_journaals')
   #addDir('Journaal Video\'s', 'journaal_videos') #Disabled for now, broken
   addDir('Jeugdjournaal', 'jeugdjournaal')
diff --git a/plugin.video.nos/modules/laatste_journaals.py 
b/plugin.video.nos/modules/laatste_journaals.py
index 18b22c2..9b7ba7e 100644
--- a/plugin.video.nos/modules/laatste_journaals.py
+++ b/plugin.video.nos/modules/laatste_journaals.py
@@ -24,12 +24,14 @@ import xbmcgui
 import urllib2
 import re
 import sys
+import json
 
-link_re = re.compile(r'<a.*?</a>', re.S)
-video_re = re.compile(r'http://.*\.mp4')
+link_re = re.compile(r'<a href="video.*?</a>', re.S)
+video_re = re.compile(r'nos\.nl/embed/\?id=b2:([0-9]+)')
 title_re = re.compile(r'<h3>(.*?)</h3>')
-meta_re = re.compile(r'<p class="video-meta">(.*?)</p>')
+meta_re = re.compile(r'<p class="video-meta">(?:<span.*?</span>)?(.*?)</p>')
 img_re = re.compile(r'<img src="(.*?)"')
+playlist_format = 'http://nos.nl/playlist/uitzending/mp4-web03/{0:d}.json'
 
 def addLink(title, url, thumb):
   liz=xbmcgui.ListItem(title, thumbnailImage=thumb)
@@ -44,8 +46,11 @@ def scan(params):
     meta = ', '.join([meta_part.strip() for meta_part in re.sub(r'\s+', ' ', 
meta_re.search(a).group(1)).split('<br />')])
     img = URL + '/browser/' + img_re.search(a).group(1).strip()
     title = title + ' - ' + meta
+    playlist_url = playlist_format.format(int(video_url))
+    playlist = json.loads(urllib2.urlopen(playlist_url).read())
+    video_url = playlist['videofile']
     addLink(title, video_url, img)
   xbmcplugin.endOfDirectory(int(sys.argv[1]))
 
 def run(params): # This is the entrypoint
-  scan(params)
+  scan(params)
\ No newline at end of file

http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=fadd41284c48d890ce326ebe75c38f7d1744f342

commit fadd41284c48d890ce326ebe75c38f7d1744f342
Author: sphere <[email protected]>
Date:   Mon Jun 23 09:08:52 2014 +0200

    [plugin.video.dmaxitalia] updated to version 1.0.7

diff --git a/plugin.video.dmaxitalia/addon.xml 
b/plugin.video.dmaxitalia/addon.xml
index 49dd177..ced94db 100644
--- a/plugin.video.dmaxitalia/addon.xml
+++ b/plugin.video.dmaxitalia/addon.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="plugin.video.dmaxitalia" name="DMAX Italia" version="1.0.6" 
provider-name="Goph">
+<addon id="plugin.video.dmaxitalia" name="DMAX Italia" version="1.0.7" 
provider-name="Goph">
   <requires>
        <import addon="xbmc.python" version="2.1.0"/>
        <import addon="xbmc.addon" version="12.0.0"/>
@@ -21,7 +21,7 @@
        <forum>http://forum.xbmc.org/showthread.php?tid=196136</forum>
     <website>https://github.com/xbmc-goph/plugin.video.dmaxitalia</website>
     <email></email>
-    <source></source>
+    <source>https://github.com/xbmc-goph/plugin.video.dmaxitalia</source>
     <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
   </extension>
 </addon>
diff --git a/plugin.video.dmaxitalia/changelog.txt 
b/plugin.video.dmaxitalia/changelog.txt
index ef464bd..4608b8b 100644
--- a/plugin.video.dmaxitalia/changelog.txt
+++ b/plugin.video.dmaxitalia/changelog.txt
@@ -1,3 +1,6 @@
+1.0.7 (2014-06-19)
+Added settings suitable for low-end devices
+
 1.0.6 (2014-06-03)
 Added autoplay function
 Minor fixes
diff --git a/plugin.video.dmaxitalia/default.py 
b/plugin.video.dmaxitalia/default.py
index 951aed4..3244a9e 100644
--- a/plugin.video.dmaxitalia/default.py
+++ b/plugin.video.dmaxitalia/default.py
@@ -8,8 +8,7 @@ from BeautifulSoup import BeautifulSoup
 
 from pyamf import remoting
 
-addon = xbmcaddon.Addon()
-addonID = addon.getAddonInfo('id')
+addon = xbmcaddon.Addon(id='plugin.video.dmaxitalia')
 thisPlugin = int(sys.argv[1])
 baseUrl = "http://www.dmax.it";
 urlShows = "http://www.dmax.it/video/programmi/";
@@ -20,7 +19,8 @@ const_str = "ef59d16acbb13614346264dfe58844284718fb7b"
 const_playerID = 1752666798001;
 const_publisherID = 1265527910001;
 const_playerKey = "AQ~~,AAABJqdXbnE~,swSdm6mQzrEWC8U2s8_PyL570J6HePbQ"
-maxBitRate = 5120000
+maxBitRate = addon.getSetting('max_bitrate')
+isThumbnailScanEnabled = addon.getSetting('thumbnail_scan')
 
 thumbnailsCache = StorageServer.StorageServer("plugin.video.dmaxitalia", 24*7)
 
@@ -65,7 +65,10 @@ def getShows():
                        link = show.find('a')
                        show_title = link.string
                        show_link = link['href'] + "altri-video/"
-                       show_thumbnail = 
thumbnailsCache.cacheFunction(getShowThumbnail, urlShows + link['href'])
+                       if isThumbnailScanEnabled == "true":
+                               show_thumbnail = 
thumbnailsCache.cacheFunction(getShowThumbnail, urlShows + link['href'])
+                       else:
+                               show_thumbnail = ""
                        addDirectoryItem(show_title, show_link, "show", 
show_thumbnail)
        xbmcplugin.addSortMethod(thisPlugin, xbmcplugin.SORT_METHOD_LABEL)
        xbmcplugin.endOfDirectory(thisPlugin)

http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=31aa57c70000c7ab08224928ff7e39501fdddc66

commit 31aa57c70000c7ab08224928ff7e39501fdddc66
Author: sphere <[email protected]>
Date:   Mon Jun 23 08:55:56 2014 +0200

    [plugin.video.drnu] updated to version 5.0.1

diff --git a/plugin.video.drnu/addon.py b/plugin.video.drnu/addon.py
index 375da0e..7bf5e78 100644
--- a/plugin.video.drnu/addon.py
+++ b/plugin.video.drnu/addon.py
@@ -1,5 +1,5 @@
 #
-#      Copyright (C) 2013 Tommy Winther
+#      Copyright (C) 2014 Tommy Winther
 #      http://tommy.winther.nu
 #
 #  This Program is free software; you can redistribute it and/or modify
@@ -32,12 +32,10 @@ import xbmcplugin
 import tvapi
 import buggalo
 
-LETTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '\xC3\x86', 
'\xC3\x98', '\xC3\x85']
-
 
 class DrDkTvAddon(object):
     def __init__(self):
-        self.api = tvapi.TvApi()
+        self.api = tvapi.Api(CACHE_PATH)
         self.favorites = list()
         self.recentlyWatched = list()
 
@@ -66,6 +64,11 @@ class DrDkTvAddon(object):
 
     def showMainMenu(self):
         items = list()
+        # Live TV
+        item = xbmcgui.ListItem(ADDON.getLocalizedString(30027), 
iconImage=os.path.join(ADDON.getAddonInfo('path'), 'resources', 'icons', 
'livetv.png'))
+        item.setProperty('Fanart_Image', FANART_IMAGE)
+        items.append((PATH + '?show=liveTV', item, True))
+
         # A-Z Program Series
         item = xbmcgui.ListItem(ADDON.getLocalizedString(30000), 
iconImage=os.path.join(ADDON.getAddonInfo('path'), 'resources', 'icons', 
'all.png'))
         item.setProperty('Fanart_Image', FANART_IMAGE)
@@ -84,12 +87,7 @@ class DrDkTvAddon(object):
         # Spotlight
         item = xbmcgui.ListItem(ADDON.getLocalizedString(30002), 
iconImage=os.path.join(ADDON.getAddonInfo('path'), 'resources', 'icons', 
'star.png'))
         item.setProperty('Fanart_Image', FANART_IMAGE)
-        items.append((PATH + '?listVideos=%s' % tvapi.SLUG_SPOTS, item, True))
-
-        # Highlights
-        item = xbmcgui.ListItem(ADDON.getLocalizedString(30021), 
iconImage=os.path.join(ADDON.getAddonInfo('path'), 'resources', 'icons', 
'star.png'))
-        item.setProperty('Fanart_Image', FANART_IMAGE)
-        items.append((PATH + '?listVideos=%s' % tvapi.SLUG_HIGHLIGHTS, item, 
True))
+        items.append((PATH + '?show=highlights', item, True))
 
         # Search videos
         item = xbmcgui.ListItem(ADDON.getLocalizedString(30003), 
iconImage=os.path.join(ADDON.getAddonInfo('path'), 'resources', 'icons', 
'search.png'))
@@ -109,65 +107,84 @@ class DrDkTvAddon(object):
         xbmcplugin.addDirectoryItems(HANDLE, items)
         xbmcplugin.endOfDirectory(HANDLE)
 
-    def showProgramSeriesVideos(self, slug):
-        self.listVideos(self.api.programCardRelations(slug))
-
-    def showMostViewedVideos(self):
-        self.listVideos(self.api.getMostViewedProgramCards())
-
     def showFavorites(self):
         self._load()
         if not self.favorites:
             xbmcgui.Dialog().ok(ADDON.getAddonInfo('name'), 
ADDON.getLocalizedString(30013))
             xbmcplugin.endOfDirectory(HANDLE, succeeded=False)
         else:
-            self.listBundles(self.api.bundle(slugs=self.favorites), 
addToFavorites=False)
+            series = []
+            for slug in self.favorites:
+                series.extend(self.api.searchSeries(slug))
+            self.listSeries(series, addToFavorites=False)
 
     def showRecentlyWatched(self):
         self._load()
         videos = list()
-        for programCardUrn in self.recentlyWatched:
-            video = self.api.programCard(programCardUrn)
-            if video is None or not 'Data' in video or len(video['Data']) == 0:
-                self.recentlyWatched.remove(programCardUrn)
+        for slug in self.recentlyWatched:
+            item = self.api.getEpisode(slug)
+            if item is None:
+                self.recentlyWatched.remove(slug)
             else:
-                videos.append(video['Data'][0])
+                videos.append(item)
 
         self._save()
         if not videos:
             xbmcgui.Dialog().ok(ADDON.getAddonInfo('name'), 
ADDON.getLocalizedString(30013), ADDON.getLocalizedString(30020))
             xbmcplugin.endOfDirectory(HANDLE, succeeded=False)
         else:
-            self.listVideos(videos)
+            self.listEpisodes(videos)
 
-    def showProgramSeries(self, letter=None):
-        self.listBundles(self.api.bundlesWithPublicAsset(letter))
-
-    def showAZ(self):
+    def showLiveTV(self):
         items = list()
+        for channel in self.api.getLiveTV():
+            if channel['WebChannel']:
+                continue
+
+            server = None
+            for streamingServer in channel['StreamingServers']:
+                if streamingServer['LinkType'] == 'HLS':
+                    server = streamingServer
+                    break
+
+            if server is None:
+                continue
+
+            item = xbmcgui.ListItem(channel['Title'], 
iconImage=channel['PrimaryImageUri'])
+            item.setProperty('Fanart_Image', channel['PrimaryImageUri'])
+
+            url = server['Server'] + '/' + 
server['Qualities'][0]['Streams'][0]['Stream']
+            items.append((url, item, False))
+
+        items = sorted(items, lambda mine, yours: 
cmp(mine[1].getLabel().replace(' ', ''), yours[1].getLabel().replace(' ', '')))
+
+        xbmcplugin.addDirectoryItems(HANDLE, items)
+        xbmcplugin.endOfDirectory(HANDLE)
 
+    def showAZ(self):
         # All Program Series
         iconImage = os.path.join(ADDON.getAddonInfo('path'), 'resources', 
'icons', 'all.png')
 
-        for letter in LETTERS:
-            item = xbmcgui.ListItem(letter, iconImage=iconImage)
+        items = list()
+        for programIndex in self.api.getProgramIndexes():
+            item = xbmcgui.ListItem(programIndex['Title'], iconImage=iconImage)
             item.setProperty('Fanart_Image', FANART_IMAGE)
 
-            url = PATH + '?listProgramSeriesByLetter=' + letter
+            url = PATH + '?listProgramSeriesByLetter=' + programIndex['_Param']
             items.append((url, item, True))
 
         xbmcplugin.addDirectoryItems(HANDLE, items)
         xbmcplugin.endOfDirectory(HANDLE)
 
-    def searchVideos(self):
+    def searchSeries(self):
         keyboard = xbmc.Keyboard('', ADDON.getLocalizedString(30003))
         keyboard.doModal()
         if keyboard.isConfirmed():
             keyword = keyboard.getText()
-            self.listVideos(self.api.searchProgramCard(keyword))
+            self.listSeries(self.api.getSeries(keyword))
 
-    def listBundles(self, bundles, addToFavorites=True):
-        if not bundles:
+    def listSeries(self, items, addToFavorites=True):
+        if not items:
             xbmcplugin.endOfDirectory(HANDLE, succeeded=False)
             if not addToFavorites:
                 xbmcgui.Dialog().ok(ADDON.getAddonInfo('name'), 
ADDON.getLocalizedString(30013),
@@ -175,146 +192,73 @@ class DrDkTvAddon(object):
             else:
                 xbmcgui.Dialog().ok(ADDON.getAddonInfo('name'), 
ADDON.getLocalizedString(30013))
         else:
-            items = list()
-            for bundle in bundles['Data']:
-                if 'ProgramCard' in bundle and 
bundle['ProgramCard']['PrimaryAssetKind'] != 'VideoResource':
-                    continue
-
-                infoLabels = {}
-                if bundle['CreatedTime'] is not None:
-                    publishTime = self.parseDate(bundle['CreatedTime'])
-                    if publishTime:
-                        infoLabels['plotoutline'] = 
ADDON.getLocalizedString(30004) % publishTime.strftime('%d. %b %Y kl. %H:%M')
-                        infoLabels['date'] = publishTime.strftime('%d.%m.%Y')
-                        infoLabels['year'] = int(publishTime.strftime('%Y'))
-                        infoLabels['aired'] = publishTime.strftime('%Y-%m-%d')
-                infoLabels['title'] = bundle['Title']
-
+            directoryItems = list()
+            for item in items:
                 menuItems = list()
-                if self.favorites.count(bundle['Slug']) > 0:
-                    runScript = 
"XBMC.RunPlugin(plugin://plugin.video.drnu/?delfavorite=%s)" % bundle['Slug']
+                if self.favorites.count(item['SeriesTitle']) > 0:
+                    runScript = 
"XBMC.RunPlugin(plugin://plugin.video.drnu/?delfavorite=%s)" % 
item['SeriesTitle'].replace('&', '%26')
                     menuItems.append((ADDON.getLocalizedString(30201), 
runScript))
                 else:
-                    runScript = 
"XBMC.RunPlugin(plugin://plugin.video.drnu/?addfavorite=%s)" % bundle['Slug']
+                    runScript = 
"XBMC.RunPlugin(plugin://plugin.video.drnu/?addfavorite=%s)" % 
item['SeriesTitle'].replace('&', '%26')
                     menuItems.append((ADDON.getLocalizedString(30200), 
runScript))
 
-                if 'ProgramCard' in bundle:
-                    programCard = bundle['ProgramCard']
-                else:
-                    programCard = bundle
 
-                imageAsset = self.api.getAsset('Image', programCard)
-                if imageAsset:
-                    iconImage = imageAsset['Uri']
-                else:
-                    iconImage = ''
-                item = xbmcgui.ListItem(infoLabels['title'], 
iconImage=iconImage)
-                item.setInfo('video', infoLabels)
-                item.setProperty('Fanart_Image', iconImage)
-                item.addContextMenuItems(menuItems, False)
+                iconImage = item['PrimaryImageUri']
+                listItem = xbmcgui.ListItem(item['SeriesTitle'], 
iconImage=iconImage)
+                listItem.setProperty('Fanart_Image', iconImage)
+                listItem.addContextMenuItems(menuItems, False)
 
-                url = PATH + '?listVideos=' + bundle['Slug']
-                items.append((url, item, True))
+                url = PATH + '?listVideos=' + item['SeriesSlug']
+                directoryItems.append((url, listItem, True))
 
-            xbmcplugin.addDirectoryItems(HANDLE, items)
+            xbmcplugin.addDirectoryItems(HANDLE, directoryItems)
             xbmcplugin.endOfDirectory(HANDLE)
 
-    def listVideos(self, programCards):
-        items = list()
-        if 'Data' in programCards:
-            programCards = programCards['Data']
-
-        for programCard in programCards:
-            if 'ProgramCard' in programCard:
-                programCard = programCard['ProgramCard']
-            if not 'PrimaryAssetUri' in programCard:
+    def listEpisodes(self, items):
+        directoryItems = list()
+        for item in items:
+            if 'PrimaryAsset' not in item or 'Uri' not in item['PrimaryAsset'] 
or not item['PrimaryAsset']['Uri']:
                 continue
 
-            infoLabels = self.createInfoLabels(programCard)
-
-            imageAsset = self.api.getAsset('Image', programCard)
-            if imageAsset:
-                iconImage = imageAsset['Uri']
-            else:
-                iconImage = ''
-            item = xbmcgui.ListItem(infoLabels['title'], iconImage=iconImage)
-            item.setInfo('video', infoLabels)
-            item.setProperty('Fanart_Image', iconImage)
-            url = PATH + '?videoasset=' + programCard['PrimaryAssetUri'] + 
'&urn=' + programCard['Urn']
-            item.setProperty('IsPlayable', 'true')
-            items.append((url, item))
-
-        xbmcplugin.addDirectoryItems(HANDLE, items)
+            infoLabels = {
+                'title': item['Title']
+            }
+            if 'PrimaryBroadcastStartTime' in item and 
item['PrimaryBroadcastStartTime'] is not None:
+                broadcastTime = 
self.parseDate(item['PrimaryBroadcastStartTime'])
+                if broadcastTime:
+                    infoLabels['date'] = broadcastTime.strftime('%d.%m.%Y')
+                    infoLabels['aired'] = broadcastTime.strftime('%Y-%m-%d')
+                    infoLabels['year'] = int(broadcastTime.strftime('%Y'))
+
+            iconImage = item['PrimaryImageUri']
+            listItem = xbmcgui.ListItem(item['Title'], iconImage=iconImage)
+            listItem.setInfo('video', infoLabels)
+            listItem.setProperty('Fanart_Image', iconImage)
+            url = PATH + '?playVideo=' + item['Slug']
+            listItem.setProperty('IsPlayable', 'true')
+            directoryItems.append((url, listItem))
+
+        xbmcplugin.addDirectoryItems(HANDLE, directoryItems)
         xbmcplugin.addSortMethod(HANDLE, xbmcplugin.SORT_METHOD_DATE)
         xbmcplugin.addSortMethod(HANDLE, xbmcplugin.SORT_METHOD_TITLE)
         xbmcplugin.endOfDirectory(HANDLE)
 
-    def playVideo(self, assetUri, programCardUrn):
-        self.updateRecentlyWatched(programCardUrn)
-        asset = self.api._http_request(assetUri)
-        if not asset:
-            raise tvapi.TvNuException('Video with ID %s not found!' % assetUri)
-
-        if ADDON.getSetting('show.stream.selector') == 'true':
-            options = []
-            for link in asset['Links']:
-                options.append('%s (%s kbps)' % (link['Target'], 
link['Bitrate'] if 'Bitrate' in link else '?'))
-            options.append('vodfiles.dr.dk')
-
-            d = xbmcgui.Dialog()
-            idx = d.select('Stream', options)
-            if idx == -1:
-                xbmcplugin.setResolvedUrl(HANDLE, False, xbmcgui.ListItem())
-                return
-            elif idx == len(options) - 1:
-                videoUrl = self.api.getLink(asset, 'Android')
-                videoUrl = 
videoUrl.replace('rtsp://om.gss.dr.dk/mediacache/_definst_/mp4:content/', 
'http://vodfiles.dr.dk/')
-            else:
-                videoUrl = asset['Links'][idx]['Uri']
+    def playVideo(self, slug):
+        self.updateRecentlyWatched(slug)
+        item = self.api.getEpisode(slug)
+        video = self.api.getVideoUrl(item['PrimaryAsset']['Uri'])
 
-        else:
-            if ADDON.getSetting('prefer.stream.target') == 'vodfiles.dr.dk':
-                videoUrl = self.api.getLink(asset, 'Android')
-                videoUrl = 
videoUrl.replace('rtsp://om.gss.dr.dk/mediacache/_definst_/mp4:content/', 
'http://vodfiles.dr.dk/')
-            elif ADDON.getSetting('prefer.stream.target') == 'Android':
-                videoUrl = self.api.getLink(asset, 'Android')
-            elif ADDON.getSetting('prefer.stream.target') == 'Streaming':
-                videoUrl = self.api.getLink(asset, 'Streaming')
-            else:
-                videoUrl = self.api.getLink(asset, 'Ios')
-
-        if videoUrl is None:
-            videoUrl = self.api.getLink(asset)
-            if videoUrl is None:
-                raise Exception('No stream found')
-
-        if videoUrl[0:7] == 'rtmp://':
-            m = re.search('(rtmp://vod.dr.dk/cms)/([^\?]+)(\?.*)', videoUrl)
-            if m:
-                videoUrl = m.group(1) + m.group(3)
-                videoUrl += ' playpath=' + m.group(2) + m.group(3)
-                videoUrl += ' app=cms' + m.group(3)
-
-        try:
-            print videoUrl
-        except:
-            pass
-
-        item = xbmcgui.ListItem(path=videoUrl)
-        xbmcplugin.setResolvedUrl(HANDLE, videoUrl is not None, item)
-
-        if ADDON.getSetting('enable.subtitles') == 'true' and 'SubtitlesList' 
in asset and asset['SubtitlesList']:
-            path = None
-            if len(asset['SubtitlesList']) > 0:
-                path = asset['SubtitlesList'][0]['Uri']
-
-            if path:
+        item = xbmcgui.ListItem(path=video['Uri'])
+        xbmcplugin.setResolvedUrl(HANDLE, video['Uri'] is not None, item)
+
+        if ADDON.getSetting('enable.subtitles') == 'true':
+            if video['SubtitlesUri']:
                 player = xbmc.Player()
                 for retry in range(0, 20):
                     if player.isPlaying():
                         break
                     xbmc.sleep(250)
-                xbmc.Player().setSubtitles(path)
+                xbmc.Player().setSubtitles(video['SubtitlesUri'])
 
     def parseDate(self, dateString):
         if dateString is not None:
@@ -332,42 +276,18 @@ class DrDkTvAddon(object):
         else:
             return None
 
-    def createInfoLabels(self, programCard):
-        infoLabels = dict()
-
-        if programCard['Title'] is not None:
-            infoLabels['title'] = programCard['Title']
-        else:
-            infoLabels['title'] = ADDON.getLocalizedString(30006)
-
-        if 'Description' in programCard and programCard['Description'] is not 
None:
-            infoLabels['plot'] = programCard['Description']
-        if 'PrimaryBroadcastStartTime' in programCard and 
programCard['PrimaryBroadcastStartTime'] is not None and 
programCard['PrimaryBroadcastStartTime'][0:4] != '0001':
-            broadcastTime = 
self.parseDate(programCard['PrimaryBroadcastStartTime'])
-            if broadcastTime:
-                infoLabels['plotoutline'] = ADDON.getLocalizedString(30015) % 
broadcastTime.strftime('%d. %b %Y kl. %H:%M')
-                infoLabels['date'] = broadcastTime.strftime('%d.%m.%Y')
-                infoLabels['aired'] = broadcastTime.strftime('%Y-%m-%d')
-                infoLabels['year'] = int(broadcastTime.strftime('%Y'))
-        if 'EndPublish' in programCard and programCard['EndPublish'] is not 
None and programCard['EndPublish'][0:4] != '9999':
-            expireTime = self.parseDate(programCard['EndPublish'])
-            if expireTime:
-                infoLabels['plot'] += '[CR][CR]' + 
ADDON.getLocalizedString(30016) % expireTime.strftime('%d. %b %Y kl. %H:%M')
-
-        return infoLabels
-
-    def addFavorite(self, slug):
+    def addFavorite(self, title):
         self._load()
-        if not self.favorites.count(slug):
-            self.favorites.append(slug)
+        if not self.favorites.count(title):
+            self.favorites.append(title)
         self._save()
 
         xbmcgui.Dialog().ok(ADDON.getLocalizedString(30008), 
ADDON.getLocalizedString(30009))
 
-    def delFavorite(self, slug):
+    def delFavorite(self, title):
         self._load()
-        if self.favorites.count(slug):
-            self.favorites.remove(slug)
+        if self.favorites.count(title):
+            self.favorites.remove(title)
         self._save()
         xbmcgui.Dialog().ok(ADDON.getLocalizedString(30008), 
ADDON.getLocalizedString(30010))
 
@@ -410,27 +330,29 @@ if __name__ == '__main__':
     drDkTvAddon = DrDkTvAddon()
     try:
         if 'show' in PARAMS:
-            if PARAMS['show'][0] == 'allProgramSeries':
-                drDkTvAddon.showProgramSeries()
+            if PARAMS['show'][0] == 'liveTV':
+                drDkTvAddon.showLiveTV()
             elif PARAMS['show'][0] == 'listAZ':
                 drDkTvAddon.showAZ()
             elif PARAMS['show'][0] == 'mostViewed':
-                drDkTvAddon.showMostViewedVideos()
+                drDkTvAddon.listEpisodes(drDkTvAddon.api.getMostViewed())
+            elif PARAMS['show'][0] == 'highlights':
+                drDkTvAddon.listEpisodes(drDkTvAddon.api.getSelectedList())
             elif PARAMS['show'][0] == 'search':
-                drDkTvAddon.searchVideos()
+                drDkTvAddon.searchSeries()
             elif PARAMS['show'][0] == 'favorites':
                 drDkTvAddon.showFavorites()
             elif PARAMS['show'][0] == 'recentlyWatched':
                 drDkTvAddon.showRecentlyWatched()
 
         elif 'listProgramSeriesByLetter' in PARAMS:
-            
drDkTvAddon.showProgramSeries(letter=PARAMS['listProgramSeriesByLetter'][0])
+            
drDkTvAddon.listSeries(drDkTvAddon.api.getSeries(PARAMS['listProgramSeriesByLetter'][0]))
 
         elif 'listVideos' in PARAMS:
-            drDkTvAddon.showProgramSeriesVideos(PARAMS['listVideos'][0])
+            
drDkTvAddon.listEpisodes(drDkTvAddon.api.getEpisodes(PARAMS['listVideos'][0]))
 
-        elif 'videoasset' in PARAMS:
-            drDkTvAddon.playVideo(PARAMS['videoasset'][0], PARAMS['urn'][0])
+        elif 'playVideo' in PARAMS:
+            drDkTvAddon.playVideo(PARAMS['playVideo'][0])
 
         elif 'addfavorite' in PARAMS:
             drDkTvAddon.addFavorite(PARAMS['addfavorite'][0])
@@ -441,7 +363,7 @@ if __name__ == '__main__':
         else:
             drDkTvAddon.showMainMenu()
 
-    except tvapi.TvNuException, ex:
+    except tvapi.ApiException, ex:
         drDkTvAddon.displayError(str(ex))
 
     except IOError, ex:
diff --git a/plugin.video.drnu/addon.xml b/plugin.video.drnu/addon.xml
index eadf432..e221e0b 100644
--- a/plugin.video.drnu/addon.xml
+++ b/plugin.video.drnu/addon.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<addon id="plugin.video.drnu" version="4.0.2" name="DR NU Player" 
provider-name="twinther">
+<addon id="plugin.video.drnu" version="5.0.1" name="DR TV" 
provider-name="twinther">
     <requires>
         <import addon="xbmc.python" version="2.1.0"/>
         <import addon="script.module.simplejson" version="2.0.10"/>
@@ -9,10 +9,10 @@
         <provides>video</provides>
     </extension>
     <extension point="xbmc.addon.metadata">
-        <summary lang="en">Watch the latest shows from DR.dk/nu</summary>
-        <summary lang="da">Se de seneste udsendelser fra DR.dk/nu</summary>
-        <description lang="en">All programs that DR has the rights to show on 
the internet is available in DR NU. The typically means DR's own programs, 
news, sports and magazine - but usually not movies and some international 
tv-shows.[CR][CR]If you have comments or suggestions for this addon, please 
feel free to participate in the debate on my blog at 
http://tommy.winther.nu</description>
-        <description lang="da">Alle de programmer, DR har rettigheder til at 
vise på nettet, vil være at finde i DR NU. Dette gælder typisk DR's egne 
programmer, nyheder, sport og magasiner - men typisk ikke film og visse 
udenlandske tv-serier.[CR][CR]Har du kommentarer, ris eller ros til denne addon 
er du velkommen til at deltage i debatten på min blog på 
http://tommy.winther.nu</description>
+        <summary lang="en">Watch live and archived TV from DR (Danish 
Broadcasting Corporation)</summary>
+        <summary lang="da">Se live og arkiveret TV fra DR</summary>
+        <description lang="en">All DR's live TV channels and archived programs 
as seen on dr.dk/tv.[CR][CR]If you have comments or suggestions for this addon, 
please feel free to participate in the debate on my blog at 
http://tommy.winther.nu</description>
+        <description lang="da">Alle DR's live TV kanaler samt alle de 
programmer du finder på dr.dk/tv.[CR][CR]Har du kommentarer, ris eller ros til 
denne addon er du velkommen til at deltage i debatten på min blog på 
http://tommy.winther.nu</description>
         <disclaimer lang="en">Some parts of this addon may not be legal in 
your country of residence - please check with your local laws.</disclaimer>
         <disclaimer lang="da">Nogle dele af denne addon er muligvis ikke 
lovlig i dit land - kontroller venligst dine lokale love.</disclaimer>
         <license>GPL 2.0</license>
@@ -20,7 +20,7 @@
         <language>da</language>
         <email>[email protected]</email>
         <website>http://tommy.winther.nu</website>
-        <forum></forum>
+        
<forum>http://tommy.winther.nu/wordpress/forums/forum/addons/dr-nu-player/</forum>
         
<source>https://github.com/xbmc-danish-addons/plugin.video.drnu</source>
     </extension>
 </addon>
diff --git a/plugin.video.drnu/changelog.txt b/plugin.video.drnu/changelog.txt
index 177f0b6..d346fd6 100644
--- a/plugin.video.drnu/changelog.txt
+++ b/plugin.video.drnu/changelog.txt
@@ -1,3 +1,15 @@
+[B]Version 5.0.1 - 2014-06-02[/B]
+- Fixed problem parsing certain dates
+
+[B]Version 5.0.0 - 2014-05-31[/B]
+- Yet another rewrite; this time to DR MU-online API
+  http://www.dr.dk/mu-online/Help
+- Added Live TV
+- Added caching
+
+[B]Version 4.0.3 - 2013-10-21[/B]
+- Added 'Latest on TV' category
+
 [B]Version 4.0.2 - 2013-10-02[/B]
 - Fixed problem with favourites only remembering the last favourite added
 - Improve error handling when stream is not available
diff --git a/plugin.video.drnu/fanart.jpg b/plugin.video.drnu/fanart.jpg
index 6edec57..d9ab3f3 100644
Binary files a/plugin.video.drnu/fanart.jpg and b/plugin.video.drnu/fanart.jpg 
differ
diff --git a/plugin.video.drnu/icon.png b/plugin.video.drnu/icon.png
index 2fe3831..a84c518 100644
Binary files a/plugin.video.drnu/icon.png and b/plugin.video.drnu/icon.png 
differ
diff --git a/plugin.video.drnu/resources/icons/all.png 
b/plugin.video.drnu/resources/icons/all.png
index c68cea7..fede0aa 100644
Binary files a/plugin.video.drnu/resources/icons/all.png and 
b/plugin.video.drnu/resources/icons/all.png differ
diff --git a/plugin.video.drnu/resources/icons/eye-star.png 
b/plugin.video.drnu/resources/icons/eye-star.png
index 1ef60ea..aa63faa 100644
Binary files a/plugin.video.drnu/resources/icons/eye-star.png and 
b/plugin.video.drnu/resources/icons/eye-star.png differ
diff --git a/plugin.video.drnu/resources/icons/eye.png 
b/plugin.video.drnu/resources/icons/eye.png
index 07bce79..2821c18 100644
Binary files a/plugin.video.drnu/resources/icons/eye.png and 
b/plugin.video.drnu/resources/icons/eye.png differ
diff --git a/plugin.video.drnu/resources/icons/new.png 
b/plugin.video.drnu/resources/icons/new.png
index 5168973..8d85cb6 100644
Binary files a/plugin.video.drnu/resources/icons/new.png and 
b/plugin.video.drnu/resources/icons/new.png differ
diff --git a/plugin.video.drnu/resources/icons/plusone.png 
b/plugin.video.drnu/resources/icons/plusone.png
index 119d35c..fa13dcc 100644
Binary files a/plugin.video.drnu/resources/icons/plusone.png and 
b/plugin.video.drnu/resources/icons/plusone.png differ
diff --git a/plugin.video.drnu/resources/icons/search.png 
b/plugin.video.drnu/resources/icons/search.png
index 3f5c55e..17d1b7d 100644
Binary files a/plugin.video.drnu/resources/icons/search.png and 
b/plugin.video.drnu/resources/icons/search.png differ
diff --git a/plugin.video.drnu/resources/icons/star.png 
b/plugin.video.drnu/resources/icons/star.png
index 27f8ef1..007589d 100644
Binary files a/plugin.video.drnu/resources/icons/star.png and 
b/plugin.video.drnu/resources/icons/star.png differ
diff --git a/plugin.video.drnu/resources/language/Danish/strings.xml 
b/plugin.video.drnu/resources/language/Danish/strings.xml
index e90f71c..691df21 100644
--- a/plugin.video.drnu/resources/language/Danish/strings.xml
+++ b/plugin.video.drnu/resources/language/Danish/strings.xml
@@ -4,39 +4,22 @@
     <string id="30001">Nyeste videoer</string>
        <string id="30002">Spotlight videoer</string>
        <string id="30003">Søg efter videoer</string>
-       <string id="30004">Nyeste udsendelse: %s</string>
-       <string id="30005">Ingen videoer fundet.</string>
-       <string id="30006">Ukendt titel</string>
     <string id="30007">Nyligt sete videoer</string>
     <string id="30008">Foretrukne programmer</string>
     <string id="30009">Program tilføjet</string>
     <string id="30010">Program fjernet</string>
     <string id="30011">Mest sete videoer på DR NU</string>
-    <string id="30012">Programmer efter område</string>
     <string id="30013">Listen er tom.</string>
-    <string id="30014">Udløber snart</string>
-    <string id="30015">Sendt: %s</string>
-    <string id="30016">Udløber: %s</string>
-    <string id="30017">Afspil fra starten</string>
     <string id="30018">Du kan tilføje programmer til foretrukne ved 
brug</string>
     <string id="30019">af højreklik-menuen.</string>
     <string id="30020">De videoer du sidst har set tilføjest 
automatisk.</string>
-    <string id="30021">Højdepunkter</string>
-    <string id="30022">Alle programmer</string>
-    <string id="30023">Tildel brugerdefineret ikon</string>
-    <string id="30024">Fjern brugerdefineret ikon</string>
     <string id="30025">Forpremiere</string>
-
-    <string id="30100">Videoen er ikke tilgængelig</string>
-       <string id="30101">DR har slettet den videofil du forsøger at 
afspille,</string>
-       <string id="30102">da det er lang tid siden, den er blevet afspillet 
sidst.</string>
+    <string id="30027">Live TV</string>
 
     <string id="30200">Tilføj til foretrukne programmer</string>
     <string id="30201">Fjern fra foretrukne programmer</string>
 
     <string id="30500">Generelt</string>
-    <string id="30501">Foretræk streams af typen</string>
-    <string id="30502">Vis kvalitetsvælger før videoen afspilles</string>
     <string id="30503">Vis undertekster (hvis tilgængelige)</string>
 
     <string id="30900">Der er sket en fejl i kommunikationen med DR 
NU.</string>
diff --git a/plugin.video.drnu/resources/language/English/strings.xml 
b/plugin.video.drnu/resources/language/English/strings.xml
index 3da982f..564cc0b 100644
--- a/plugin.video.drnu/resources/language/English/strings.xml
+++ b/plugin.video.drnu/resources/language/English/strings.xml
@@ -4,9 +4,6 @@
        <string id="30001">Latest videos</string>
        <string id="30002">Spotlight videos</string>
        <string id="30003">Search videos</string>
-       <string id="30004">Latest show: %s</string>
-       <string id="30005">No videos found.</string>
-       <string id="30006">Unknown title</string>
     <string id="30007">Recently watched videos</string>
     <string id="30008">Favorite programs</string>
     <string id="30009">Program added</string>
@@ -14,29 +11,16 @@
     <string id="30011">Most watched videos on DR NU</string>
     <string id="30012">Programs by area</string>
     <string id="30013">The list is empty.</string>
-    <string id="30014">Expires soon</string>
-    <string id="30015">Aired: %s</string>
-    <string id="30016">Expires on: %s</string>
-    <string id="30017">Play from the start</string>
     <string id="30018">You can added program series to favorites using</string>
     <string id="30019">the context menu.</string>
     <string id="30020">Your recently watched videos are automatically 
added.</string>
-    <string id="30021">Highlights</string>
-    <string id="30022">All programs</string>
-    <string id="30023">Choose custom icon</string>
-    <string id="30024">Remove custom icon</string>
     <string id="30025">Premiere videos</string>
-
-    <string id="30100">Video is not available</string>
-       <string id="30101">DR has deleted the video file you want to 
watch,</string>
-       <string id="30102">because it has not been viewed recently.</string>
+    <string id="30027">Live TV</string>
 
     <string id="30200">Add to favorite program series</string>
     <string id="30201">Remove from favorite program series</string>
 
     <string id="30500">General</string>
-    <string id="30501">Prefer streams of type</string>
-    <string id="30502">Show quality chooser before starting video 
playback</string>
     <string id="30503">Enable subtitles (if available)</string>
 
     <string id="30900">There was an error while communication with DR 
NU.</string>
diff --git a/plugin.video.drnu/resources/settings.xml 
b/plugin.video.drnu/resources/settings.xml
index a05c0d8..5a93d18 100644
--- a/plugin.video.drnu/resources/settings.xml
+++ b/plugin.video.drnu/resources/settings.xml
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <settings>
        <category label="30500">
-        <setting id="prefer.stream.target" label="30501" type="labelenum" 
default="iOS" values="iOS|Android|Streaming|vodfiles.dr.dk" />
-        <setting id="show.stream.selector" label="30502" type="bool" 
default="false" />
         <setting id="enable.subtitles" label="30503" type="bool" 
default="true" />
        </category>
 </settings>
diff --git a/plugin.video.drnu/tvapi.py b/plugin.video.drnu/tvapi.py
index 4c6fa32..3500cca 100644
--- a/plugin.video.drnu/tvapi.py
+++ b/plugin.video.drnu/tvapi.py
@@ -1,5 +1,5 @@
 #
-#      Copyright (C) 2013 Tommy Winther
+#      Copyright (C) 2014 Tommy Winther
 #      http://tommy.winther.nu
 #
 #  This Program is free software; you can redistribute it and/or modify
@@ -24,107 +24,123 @@ except:
     import simplejson as json
 import urllib
 import urllib2
-
-SLUG_HIGHLIGHTS='hoejdepunkter'
-SLUG_SPOTS='test-spotliste'
+import hashlib
+import os
+import datetime
 SLUG_PREMIERES='forpremierer'
 
-class TvApi(object):
 
-    def bundle(self, title=None, bundleType='Series', limit=500, 
channelType='TV', slugs=None):
-        params = {
-            'BundleType': '$eq("%s")' % bundleType,
-            'ChannelType': '$eq("%s")' % channelType,
-            'limit': '$eq(%d)' % limit
-        }
-        if title:
-            params['Title'] = ['$orderby("asc")', '$like("%s")' % title]
-        if slugs:
-            params['Slug'] = '$in("%s")' % '","'.join(slugs)
-        return self._http_request('http://www.dr.dk/mu/bundle', params)
-
-    def bundlesWithPublicAsset(self, title=None, bundleType='Series', 
limit=5000, channelType='TV'):
-        params = {
-            'BundleType': '$eq("%s")' % bundleType,
-            'Title': ['$orderby("asc")'],
-            'ChannelType': '$eq("%s")' % channelType,
-            'limit': '$eq(%d)' % limit
-        }
-        if title:
-            params['Title'].append('$like("%s")' % title)
-        return 
self._http_request('http://www.dr.dk/mu/view/bundles-with-public-asset', params)
+class Api(object):
+    API_URL = 'http://www.dr.dk/mu-online/api/1.0'
 
-    def searchBundle(self, text):
-        params = {
-            'Title': '$like("%s*")' % text
-        }
-        return self._http_request('http://www.dr.dk/mu/search/bundle', params)
+    def __init__(self, cachePath):
+        self.cachePath = cachePath
 
-    def getMostViewedProgramCards(self, days=7, count=100, channelType='TV'):
-        params = {
-            'count': count,
-            'days': days,
-            'ChannelType': channelType
-        }
-        return self._http_request('http://www.dr.dk/mu/View/programviews', 
params)
+    def getLiveTV(self):
+        return self._http_request('/channel/all-active-dr-tv-channels')
 
-    def programCard(self, slug):
-        try:
-            return 
self._http_request('http://www.dr.dk/mu/programcard/expanded/' + slug)
-        except IOError:
-            return None
-
-    def programCardRelations(self, relationsSlug, limit=500):
-        params = {
-            'Relations.Slug': '$eq("%s")' % relationsSlug,
-            'limit': '$eq(%d)' % limit
-        }
-        return self._http_request('http://www.dr.dk/mu/programcard', params)
+    def getProgramIndexes(self):
+        result = self._http_request('/page/tv/programs')
+        if 'Indexes' in result:
+            indexes = result['Indexes']
+            for programIndex in indexes:
+                programIndex['_Param'] = 
programIndex['Source'][programIndex['Source'].rindex('/') + 1:]
+            return indexes
+
+        return []
+
+    def getSeries(self, query):
+        result = 
self._http_request('/search/tv/programcards-latest-episode-with-asset/series-title-starts-with/%s'
 % query,
+                                    {'limit': 75})
+        return self._handle_paging(result)
+
+    def searchSeries(self, query):
+        result = 
self._http_request('/search/tv/programcards-latest-episode-with-asset/series-title/%s'
 % query)
+        return self._handle_paging(result)
+
+    def getEpisodes(self, slug):
+        result = self._http_request('/list/%s' % slug,
+                                    {'limit': 48})
+        return self._handle_paging(result)
+
+    def getEpisode(self, slug):
+        return self._http_request('/programcard/%s' % slug)
+
+    def getMostViewed(self):
+        result = self._http_request('/list/view/mostviewed',
+                                    {'limit': 48})
+        return result['Items']
+
+    def getSelectedList(self):
+        result = self._http_request('/list/view/selectedlist',
+                                    {'limit': 60})
+        return result['Items']
+
+    def getVideoUrl(self, assetUri):
+        result = self._http_request(assetUri)
 
-    def searchProgramCard(self, text):
-        params = {
-            'Title': '$like("%s*")' % text
-        }
-        return self._http_request('http://www.dr.dk/mu/search/programcard', 
params)
-
-    def getAsset(self, kind, programCard):
-        if 'ProgramCard' in programCard:
-            programCard = programCard['ProgramCard']
-        if 'Assets' in programCard:
-            for asset in programCard['Assets']:
-                if asset['Kind'] == kind:
-                    return asset
-        return None
-
-    def getLink(self, asset, target = None):
-        bitRate = 0
         uri = None
-        if 'Links' in asset:
-            for link in asset['Links']:
-                if (target is None or link['Target'] == target) and ('Bitrate' 
in link and link['Bitrate'] > bitRate):
-                    uri = link['Uri']
-                    bitRate = link['Bitrate']
-                elif not 'Bitrate' in link and uri is None:
-                    uri = link['Uri']
-        return uri
+        for link in result['Links']:
+            if link['Target'] == 'HLS':
+                uri = link['Uri']
+                break
+
+        subtitlesUri = None
+        if 'SubtitlesList' in result and len(result['SubtitlesList']) > 0:
+            subtitlesUri = result['SubtitlesList'][0]['Uri']
+
+        return {
+            'Uri': uri,
+            'SubtitlesUri': subtitlesUri
+        }
+
+    def _handle_paging(self, result):
+        items = result['Items']
+        while 'Next' in result['Paging']:
+            result = self._http_request(result['Paging']['Next'])
+            items.extend(result['Items'])
+        return items
 
     def _http_request(self, url, params=None):
         try:
+            if not url.startswith('http://'):
+                url = self.API_URL + url
+
             if params:
                 url = url + '?' + urllib.urlencode(params, doseq=True)
 
-            u = urllib2.urlopen(url, timeout=30)
-            content = u.read()
-            u.close()
+            try:
+                print url
+            except:
+                pass
+
+            urlCachePath = os.path.join(self.cachePath, 
hashlib.md5(url).hexdigest() + '.cache')
+
+            oneDayAgo = datetime.datetime.now() - datetime.timedelta(days=1)
+            if not os.path.exists(urlCachePath) or 
datetime.datetime.fromtimestamp(os.path.getmtime(urlCachePath)) < oneDayAgo:
+                u = urllib2.urlopen(url, timeout=30)
+                content = u.read()
+                u.close()
+
+                try:
+                    f = open(urlCachePath, 'w')
+                    f.write(content)
+                    f.close()
+                except:
+                    pass # ignore, cache has no effect
+            else:
+                f = open(urlCachePath)
+                content = f.read()
+                f.close()
 
             return json.loads(content)
         except Exception as ex:
-            raise TvNuException(ex)
+            raise ApiException(ex)
 
 
-class TvNuException(Exception):
+class ApiException(Exception):
     pass
 
 if __name__ == '__main__':
-    api = TvApi()
+    api = Api()
     print api.programCardRelations('so-ein-ding', limit=50)

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

Summary of changes:
 .../.settings/org.eclipse.core.resources.prefs     |    3 +
 plugin.video.7tv/Bromixbmc.py                      |   70 ++++
 plugin.video.7tv/LICENSE.txt                       |  339 +++++++++++++++++
 plugin.video.7tv/SevenTv.py                        |  191 ++++++++++
 plugin.video.7tv/addon.xml                         |   23 ++
 plugin.video.7tv/changelog.txt                     |    2 +
 plugin.video.7tv/default.py                        |  386 ++++++++++++++++++++
 plugin.video.7tv/fanart.jpg                        |  Bin 0 -> 32285 bytes
 plugin.video.7tv/icon.png                          |  Bin 0 -> 12144 bytes
 .../resources/language/English/strings.xml         |   25 ++
 .../resources/language/German/strings.xml          |   25 ++
 plugin.video.7tv/resources/media/highlight.png     |  Bin 0 -> 8046 bytes
 plugin.video.7tv/resources/media/logo_kabel1.png   |  Bin 0 -> 17885 bytes
 plugin.video.7tv/resources/media/logo_pro7.png     |  Bin 0 -> 5603 bytes
 plugin.video.7tv/resources/media/logo_pro7maxx.png |  Bin 0 -> 7312 bytes
 plugin.video.7tv/resources/media/logo_sat1.png     |  Bin 0 -> 86980 bytes
 plugin.video.7tv/resources/media/logo_sat1gold.png |  Bin 0 -> 13631 bytes
 plugin.video.7tv/resources/media/logo_sixx.png     |  Bin 0 -> 38632 bytes
 plugin.video.7tv/resources/media/pin.png           |  Bin 0 -> 7032 bytes
 plugin.video.7tv/resources/media/search.png        |  Bin 0 -> 5720 bytes
 plugin.video.7tv/resources/settings.xml            |    5 +
 plugin.video.dmaxitalia/addon.xml                  |    4 +-
 plugin.video.dmaxitalia/changelog.txt              |    3 +
 plugin.video.dmaxitalia/default.py                 |   11 +-
 .../resources/language/English/strings.xml         |    6 +
 .../resources/language/Italian/strings.xml         |    6 +
 plugin.video.dmaxitalia/resources/settings.xml     |    8 +
 plugin.video.drnu/addon.py                         |  304 ++++++----------
 plugin.video.drnu/addon.xml                        |   12 +-
 plugin.video.drnu/changelog.txt                    |   12 +
 plugin.video.drnu/fanart.jpg                       |  Bin 165015 -> 11328 bytes
 plugin.video.drnu/icon.png                         |  Bin 17615 -> 6185 bytes
 plugin.video.drnu/resources/icons/all.png          |  Bin 2016 -> 1506 bytes
 plugin.video.drnu/resources/icons/clock.png        |  Bin 7588 -> 0 bytes
 plugin.video.drnu/resources/icons/eye-star.png     |  Bin 6047 -> 3327 bytes
 plugin.video.drnu/resources/icons/eye.png          |  Bin 5427 -> 1535 bytes
 plugin.video.drnu/resources/icons/info.png         |  Bin 3126 -> 0 bytes
 plugin.video.drnu/resources/icons/livetv.png       |  Bin 0 -> 1836 bytes
 plugin.video.drnu/resources/icons/new.png          |  Bin 3378 -> 3059 bytes
 plugin.video.drnu/resources/icons/plusone.png      |  Bin 2521 -> 3942 bytes
 plugin.video.drnu/resources/icons/search.png       |  Bin 4576 -> 4735 bytes
 plugin.video.drnu/resources/icons/star.png         |  Bin 3158 -> 2829 bytes
 plugin.video.drnu/resources/icons/tag.png          |  Bin 2598 -> 0 bytes
 .../resources/language/Danish/strings.xml          |   19 +-
 .../resources/language/English/strings.xml         |   18 +-
 plugin.video.drnu/resources/settings.xml           |    2 -
 plugin.video.drnu/tvapi.py                         |  180 +++++----
 plugin.video.nos/addon.xml                         |    2 +-
 plugin.video.nos/changelog.txt                     |    4 +
 plugin.video.nos/default.py                        |    1 +
 plugin.video.nos/modules/laatste_journaals.py      |   13 +-
 plugin.video.nos/modules/wk_2014.py                |   39 ++
 plugin.video.nos/modules/wk_2014_gemist.py         |  112 ++++++
 plugin.video.nos/modules/wk_2014_videos.py         |   77 ++++
 54 files changed, 1575 insertions(+), 327 deletions(-)
 create mode 100644 plugin.video.7tv/.settings/org.eclipse.core.resources.prefs
 create mode 100644 plugin.video.7tv/Bromixbmc.py
 create mode 100644 plugin.video.7tv/LICENSE.txt
 create mode 100644 plugin.video.7tv/SevenTv.py
 create mode 100644 plugin.video.7tv/addon.xml
 create mode 100644 plugin.video.7tv/changelog.txt
 create mode 100644 plugin.video.7tv/default.py
 create mode 100644 plugin.video.7tv/fanart.jpg
 create mode 100644 plugin.video.7tv/icon.png
 create mode 100644 plugin.video.7tv/resources/language/English/strings.xml
 create mode 100644 plugin.video.7tv/resources/language/German/strings.xml
 create mode 100644 plugin.video.7tv/resources/media/highlight.png
 create mode 100644 plugin.video.7tv/resources/media/logo_kabel1.png
 create mode 100644 plugin.video.7tv/resources/media/logo_pro7.png
 create mode 100644 plugin.video.7tv/resources/media/logo_pro7maxx.png
 create mode 100644 plugin.video.7tv/resources/media/logo_sat1.png
 create mode 100644 plugin.video.7tv/resources/media/logo_sat1gold.png
 create mode 100644 plugin.video.7tv/resources/media/logo_sixx.png
 create mode 100644 plugin.video.7tv/resources/media/pin.png
 create mode 100644 plugin.video.7tv/resources/media/search.png
 create mode 100644 plugin.video.7tv/resources/settings.xml
 create mode 100644 
plugin.video.dmaxitalia/resources/language/English/strings.xml
 create mode 100644 
plugin.video.dmaxitalia/resources/language/Italian/strings.xml
 create mode 100644 plugin.video.dmaxitalia/resources/settings.xml
 delete mode 100644 plugin.video.drnu/resources/icons/clock.png
 delete mode 100644 plugin.video.drnu/resources/icons/info.png
 create mode 100644 plugin.video.drnu/resources/icons/livetv.png
 delete mode 100644 plugin.video.drnu/resources/icons/tag.png
 create mode 100644 plugin.video.nos/modules/wk_2014.py
 create mode 100644 plugin.video.nos/modules/wk_2014_gemist.py
 create mode 100644 plugin.video.nos/modules/wk_2014_videos.py


hooks/post-receive
-- 
Plugins

------------------------------------------------------------------------------
HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
Find What Matters Most in Your Big Data with HPCC Systems
Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
Leverages Graph Analysis for Fast Processing & Easy Data Exploration
http://p.sf.net/sfu/hpccsystems
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to