The branch, frodo has been updated
       via  b490a4c87b952a9a8aeec9059f28d86ef3c972ae (commit)
       via  8c4f0ad44b4b87ca96214866ed4e9b92c52b5d6c (commit)
       via  7a9e317e322d2ccb3c945cdebce1a558e80c3a94 (commit)
      from  84550f9f1a1c6a5fca45de8517661c563d90e45e (commit)

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

commit b490a4c87b952a9a8aeec9059f28d86ef3c972ae
Author: Martijn Kaijser <mcm.kaij...@gmail.com>
Date:   Wed Aug 20 18:09:49 2014 +0200

    [plugin.video.nascar] 2.0.3

diff --git a/plugin.video.nascar/addon.xml b/plugin.video.nascar/addon.xml
index 6f9929f..4c7f2db 100644
--- a/plugin.video.nascar/addon.xml
+++ b/plugin.video.nascar/addon.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="plugin.video.nascar"
        name="Nascar.com"
-       version="2.0.2"
+       version="2.0.3"
        provider-name="divingmule">
   <requires>
     <import addon="xbmc.python" version="2.1.0"/>
-    <import addon="script.module.pyamf" version="0.6.1"/>
-    <import addon="script.module.beautifulsoup" version="3.2.0"/>
+    <import addon="script.module.pyamf" version="0.6.2"/>
+    <import addon="script.module.beautifulsoup" version="3.2.1"/>
   </requires>
   <extension point="xbmc.python.pluginsource" library="default.py">
     <provides>video</provides>
diff --git a/plugin.video.nascar/changelog.txt 
b/plugin.video.nascar/changelog.txt
index f95ff3c..08262ac 100644
--- a/plugin.video.nascar/changelog.txt
+++ b/plugin.video.nascar/changelog.txt
@@ -1,3 +1,6 @@
+Version 2.0.3
+fix website changes
+
 Version 2.0.2
 fix website changes
 
diff --git a/plugin.video.nascar/default.py b/plugin.video.nascar/default.py
index 10d4388..20028e4 100644
--- a/plugin.video.nascar/default.py
+++ b/plugin.video.nascar/default.py
@@ -3,82 +3,84 @@ import urllib2
 import httplib
 import re
 import os
+from traceback import print_exc
+from urlparse import urlparse, parse_qs
+
+from BeautifulSoup import BeautifulSoup
+from pyamf import remoting
+
 import xbmcplugin
 import xbmcgui
 import xbmcaddon
-from BeautifulSoup import BeautifulSoup
-from pyamf import remoting
-from traceback import print_exc
 
-addon = xbmcaddon.Addon(id='plugin.video.nascar')
-home = xbmc.translatePath(addon.getAddonInfo('path'))
-icon = os.path.join(home, 'icon.png')
-fanart = os.path.join(home, 'fanart.jpg')
+addon = xbmcaddon.Addon()
+addon_id = addon.getAddonInfo('id')
+addon_icon = addon.getAddonInfo('icon')
+fanart = addon.getAddonInfo('fanart')
 addon_version = addon.getAddonInfo('version')
 debug = addon.getSetting('debug')
+base_url ='http://www.nascar.com'
 
 
 def addon_log(string):
     if debug == 'true':
-        xbmc.log("[addon.nascar-%s]: %s" %(addon_version, string))
+        try:
+            log_message = string.encode('utf-8', 'ignore')
+        except:
+            log_message = 'addonException: addon_log: %s' %format_exc()
+        xbmc.log("[%s-%s]: %s" %(addon_id, addon_version, log_message), 
level=xbmc.LOGNOTICE)
 
 
 def make_request(url):
-        try:
-            headers = {
-                'User-agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) 
Gecko/20100101 Firefox/19.0',
-                'Referer' : 
'http://www.nascar.com/en_us/sprint-cup-series.html'
-                }
-            req = urllib2.Request(url,None,headers)
-            response = urllib2.urlopen(req)
-            if response.geturl() != url:
-                addon_log('Redirect URL: %s' %response.geturl())
-            data = response.read()
-            response.close()
-        except urllib2.URLError, e:
-            addon_log(('We failed to open "%s".' % url))
-            if hasattr(e, 'reason'):
-                addon_log(('We failed to reach a server.'))
-                addon_log(('Reason: %s' %e.reason))
-            if hasattr(e, 'code'):
-                addon_log(('We failed with error code - %s.' %e.code))
-            data = None
-        return data
-
-
-def get_video_items(url, featured=False):
-        data = make_request(url)
-        if data:
-            soup = BeautifulSoup(data, 
convertEntities=BeautifulSoup.HTML_ENTITIES)
-            if featured:
-                items = soup.find('div', attrs={'class': 
"featuredVideos"})('article')
-            else:
-                items = soup.find('div', attrs={'class': 
"articlesList"})('article')
-            addon_log('video_items: %s' %len(items))
-            for i in items:
-                if featured:
-                    title = i('a')[1].string
-                    item_id = 
i.img['data-ajax-post-data'].split('&')[0].split('=')[1]
-                    thumb = i.img['data-resp-url']
-                else:
-                    title = i.img['alt']
-                    item_id = i.span['data-ajax-post-data'].split('=')[1]
-                    thumb = i.img['data-original']
-                
u=sys.argv[0]+'?mode=resolve_url&url='+urllib.quote_plus(item_id)
-                liz=xbmcgui.ListItem(title, iconImage="DefaultVideo.png", 
thumbnailImage=thumb)
-                liz.setInfo(type="Video", infoLabels={"Title": title})
-                liz.setProperty('IsPlayable', 'true')
-                liz.setProperty("Fanart_Image", fanart)
-                xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u, 
listitem=liz, isFolder=False)
-            load_more = soup.find('a', attrs={'title': 'LOAD MORE'})
-            if load_more:
-                
u=sys.argv[0]+'?mode=page&url='+urllib.quote_plus('http://www.nascar.com'+load_more['data-href'])
-                liz=xbmcgui.ListItem('Load More', 
iconImage="DefaultVideo.png", thumbnailImage=icon)
-                liz.setProperty("Fanart_Image", fanart)
-                xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u, 
listitem=liz, isFolder=True)
-
-
-def resolve_url(item_id):
+    try:
+        headers = {
+            'User-agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) 
Gecko/20100101 Firefox/31.0',
+            'Referer' : base_url + 
'/en_us/sprint-cup-series/news-media.sprint-cup-series.videos.html'
+            }
+        req = urllib2.Request(url,None,headers)
+        response = urllib2.urlopen(req)
+        if response.geturl() != url:
+            addon_log('Redirect URL: %s' %response.geturl())
+        data = response.read()
+        response.close()
+    except urllib2.URLError, e:
+        addon_log(('We failed to open "%s".' % url))
+        if hasattr(e, 'reason'):
+            addon_log(('We failed to reach a server.'))
+            addon_log(('Reason: %s' %e.reason))
+        if hasattr(e, 'code'):
+            addon_log(('We failed with error code - %s.' %e.code))
+        data = None
+    return data
+
+
+def get_video_items(url):
+    data = make_request(url)
+    if data:
+        soup = BeautifulSoup(data, convertEntities=BeautifulSoup.HTML_ENTITIES)
+        for i in soup('article'):
+            title = i.a['title']
+            u=sys.argv[0]+'?mode=resolve_url&url='+urllib.quote_plus(base_url 
+ i('p')[1].a['href'])
+            liz=xbmcgui.ListItem(title, iconImage="DefaultVideo.png", 
thumbnailImage = i.img['data-original'])
+            liz.setInfo(type="Video", infoLabels={"Title": title, "Plot": 
i.p.string})
+            liz.setProperty('IsPlayable', 'true')
+            liz.setProperty("Fanart_Image", fanart)
+            xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u, 
listitem=liz, isFolder=False)
+        load_more = soup.find('a', attrs={'class': 'loadMore'})
+        if load_more:
+            
u=sys.argv[0]+'?mode=page&url='+urllib.quote_plus('http://www.nascar.com'+load_more['data-href'])
+            liz=xbmcgui.ListItem('Load More', iconImage="DefaultVideo.png", 
thumbnailImage=addon_icon)
+            liz.setProperty("Fanart_Image", fanart)
+            xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u, 
listitem=liz, isFolder=True)
+                
+
+def get_video_id(url):
+    soup = BeautifulSoup(make_request(url), 
convertEntities=BeautifulSoup.HTML_ENTITIES)
+    video_id = soup.find('img', attrs={'class': 
'mediaThumb'})['data-ajax-post-data'].lstrip('mediavideoid=')
+    return video_id
+
+
+def resolve_url(item_url):
         ## Credit to AddonScriptorDE for the bc code
         ## https://github.com/AddonScriptorDE/plugin.video.redbull_tv
         quality = int(addon.getSetting('quality'))
@@ -89,7 +91,7 @@ def resolve_url(item_id):
         envelope = remoting.Envelope(amfVersion=3)
         envelope.bodies.append(("/1", remoting.Request(
             
target="com.brightcove.player.runtime.PlayerMediaFacade.findMediaById",
-            body=[bc_const, bc_playerID, item_id, bc_publisherID],
+            body=[bc_const, bc_playerID, get_video_id(item_url), 
bc_publisherID],
             envelope=envelope)))
         conn.request("POST", "/services/messagebroker/amf?playerId=" + 
str(bc_playerID),
                      str(remoting.encode(envelope).read()), {'content-type': 
'application/x-amf'})
@@ -118,22 +120,12 @@ def resolve_url(item_id):
         xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, item)
 
 
+
 def get_params():
-        param=[]
-        paramstring=sys.argv[2]
-        if len(paramstring)>=2:
-            params=sys.argv[2]
-            cleanedparams=params.replace('?','')
-            if (params[len(params)-1]=='/'):
-                params=params[0:len(params)-2]
-            pairsofparams=cleanedparams.split('&')
-            param={}
-            for i in range(len(pairsofparams)):
-                splitparams={}
-                splitparams=pairsofparams[i].split('=')
-                if (len(splitparams))==2:
-                    param[splitparams[0]]=splitparams[1]
-        return param
+    p = parse_qs(sys.argv[2][1:])
+    for i in p.keys():
+        p[i] = p[i][0]
+    return p
 
 
 params=get_params()
@@ -150,38 +142,21 @@ try:
 except:
     pass
 
-addon_log('URL: %s' %url)
-addon_log('Mode: %s' %mode)
+addon_log('Mode: %s, URL: %s' %(mode, url))
 
 if mode==None:
-    sort = {
-        'series': ['', 'sprint-cup-series/', 'nationwide-series/', 
'camping-world-truck-series/'],
-        'time': ['365', '30', '7' ,'1'],
-        'sort': ['recent', 'popular']
-        }
-    videos_url = (
-        
'http://www.nascar.com/en_us/%snews-media.all.0.videos.all.all.%s.%s.all.html'
-        %(sort['series'][int(addon.getSetting('series'))],
-        sort['time'][int(addon.getSetting('time'))],
-        sort['sort'][int(addon.getSetting('sort'))])
-        )
     if addon.getSetting('series') == '0':
-        base_url = 'http://www.nascar.com/en_us/sprint-cup-series.html'
-    else:
-        base_url = (
-            'http://www.nascar.com/en_us/%s.html'
-            %sort['series'][int(addon.getSetting('series'))][:-1]
-            )
-    addon_log('base_url: '+base_url)
-    addon_log('videos_url: '+videos_url)
-    if addon.getSetting('featured') == 'true':
-        get_video_items(base_url, True)
-    get_video_items(videos_url)
+        videos_url = 
'/en_us/sprint-cup-series/news-media/jcr:content/mediaList.loadMore.sprint-cup-series.videos.0.html'
+    elif addon.getSetting('series') == '1':
+        videos_url = 
'/en_us/nationwide-series/news-media/jcr:content/mediaList.loadMore.nationwide-series.videos.0.html'
+    elif addon.getSetting('series') == '2':
+        videos_url = 
'/en_us/camping-world-truck-series/news-media/jcr:content/mediaList.loadMore.camping-world-truck-series.videos.1.html'
+    get_video_items(base_url + videos_url)
+    xbmcplugin.endOfDirectory(int(sys.argv[1]))
 
 elif mode=="resolve_url":
     resolve_url(url)
 
 elif mode=="page":
     get_video_items(url)
-
-xbmcplugin.endOfDirectory(int(sys.argv[1]))
\ No newline at end of file
+    xbmcplugin.endOfDirectory(int(sys.argv[1]))
diff --git a/plugin.video.nascar/resources/settings.xml 
b/plugin.video.nascar/resources/settings.xml
index fd10860..2571c87 100644
--- a/plugin.video.nascar/resources/settings.xml
+++ b/plugin.video.nascar/resources/settings.xml
@@ -1,12 +1,7 @@
 <settings>
   <category label="30009">
-    <setting id="quality" type="enum" label="30007" 
lvalues="30000|30001|30002|30003|30004|30005" default="0"/>
+    <setting id="quality" type="enum" label="30007" 
lvalues="30000|30001|30002|30003|30004|30005" default="1"/>
     <setting id="debug" type="bool" label="30008" default="false"/>
-  </category>
-  <category label="30010">
-    <setting id="series" type="enum" label="30015" 
lvalues="30011|30012|30013|30014" default="0"/>
-    <setting id="time" type="enum" label="30016" 
lvalues="30017|30018|30019|30020" default="0"/>
-    <setting id="sort" type="enum" label="30021" lvalues="30022|30023" 
default="0"/>
-    <setting id="featured" type="bool" label="30024" default="true"/>
+    <setting id="series" type="enum" label="30015" lvalues="30011|30013|30014" 
default="0"/>
   </category>
 </settings>
\ No newline at end of file

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

commit 8c4f0ad44b4b87ca96214866ed4e9b92c52b5d6c
Author: Martijn Kaijser <mcm.kaij...@gmail.com>
Date:   Wed Aug 20 18:09:12 2014 +0200

    [plugin.video.nfl.com] 0.0.4

diff --git a/plugin.video.nfl.com/addon.xml b/plugin.video.nfl.com/addon.xml
index 62cd0bb..f39695d 100644
--- a/plugin.video.nfl.com/addon.xml
+++ b/plugin.video.nfl.com/addon.xml
@@ -1,13 +1,12 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="plugin.video.nfl.com"
        name="NFL.com"
-       version="0.0.3"
+       version="0.0.4"
        provider-name="divingmule">
   <requires>
     <import addon="xbmc.python" version="2.1.0"/>
-    <import addon="script.module.beautifulsoup" version="3.2.0"/>
-    <import addon="script.common.plugin.cache" version="2.5.1"/>
-    <import addon="script.module.simplejson" version="2.0.10"/>
+    <import addon="script.module.beautifulsoup" version="3.2.1"/>
+    <import addon="script.common.plugin.cache" version="2.5.4"/>
   </requires>
   <extension point="xbmc.python.pluginsource" library="default.py">
     <provides>video</provides>
diff --git a/plugin.video.nfl.com/changelog.txt 
b/plugin.video.nfl.com/changelog.txt
index b23495f..0d69fa5 100644
--- a/plugin.video.nfl.com/changelog.txt
+++ b/plugin.video.nfl.com/changelog.txt
@@ -1,3 +1,6 @@
+Version 0.0.4
+fix website changes
+
 Version 0.0.3
 fix Top 100 Players
 fix/added support for Big Play Highlights
diff --git a/plugin.video.nfl.com/default.py b/plugin.video.nfl.com/default.py
index fa56a79..ce6b0b5 100644
--- a/plugin.video.nfl.com/default.py
+++ b/plugin.video.nfl.com/default.py
@@ -2,24 +2,28 @@ import urllib
 import urllib2
 import re
 import os
+import json
+from traceback import format_exc
+from urlparse import urlparse, parse_qs
+
 import xbmcplugin
 import xbmcgui
 import xbmcaddon
+
 import StorageServer
-import simplejson as json
-from traceback import format_exc
-from urlparse import urlparse, parse_qs
 from BeautifulSoup import BeautifulSoup
 from resources.highlights import Navigation
 
-addon = xbmcaddon.Addon(id='plugin.video.nfl.com')
+
+addon = xbmcaddon.Addon()
+addon_id = addon.getAddonInfo('id')
+addon_icon = addon.getAddonInfo('icon')
+fanart = addon.getAddonInfo('fanart')
 addon_version = addon.getAddonInfo('version')
 addon_path = xbmc.translatePath(addon.getAddonInfo('path'))
-bitrate = addon.getSetting('bitrate')
-icon = os.path.join(addon_path, 'icon.png')
 next_icon = os.path.join(addon_path, 'resources','icons','next.png')
-fanart = os.path.join(addon_path, 'fanart.jpg')
 cache = StorageServer.StorageServer("nfl_com", 1)
+bitrate = addon.getSetting('bitrate')
 language = addon.getLocalizedString
 debug = addon.getSetting('debug')
 if debug == 'true':
@@ -28,14 +32,18 @@ if debug == 'true':
 
 def addon_log(string):
     if debug == 'true':
-        xbmc.log("[addon.nfl.com-%s]: %s" %(addon_version, string))
+        try:
+            log_message = string.encode('utf-8', 'ignore')
+        except:
+            log_message = 'addonException: addon_log: %s' %format_exc()
+        xbmc.log("[%s-%s]: %s" %(addon_id, addon_version, log_message), 
level=xbmc.LOGNOTICE)
 
 
 def make_request(url, data=None, headers=None):
     addon_log('Request URL: %s' %url)
     if headers is None:
-        headers = {'User-agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; 
rv:22.0) Gecko/20100101 Firefox/22.0',
-                   'Referer' : 'http://www.nfl.com'}
+        headers = {'User-agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; 
rv:31.0) Gecko/20100101 Firefox/31.0',
+                   'Referer' : 'http://www.nfl.com/videos'}
     try:
         req = urllib2.Request(url, data, headers)
         response = urllib2.urlopen(req)
@@ -56,7 +64,7 @@ def make_request(url, data=None, headers=None):
 
 
 def categories():
-    add_dir(language(30000), 'play_featured', 8, icon, None, None, False)
+    add_dir(language(30000), 'play_featured', 8, addon_icon, None, None, False)
     try:
         data = eval(cache.get('categories'))
     except:
@@ -65,133 +73,56 @@ def categories():
     get_cats('videos')
     for i in data.keys():
         if i == 'videos': continue
-        add_dir(i.title(), '', 2, icon)
+        add_dir(i.title(), '', 2, addon_icon)
     add_dir(language(30001),'search',6,os.path.join(addon_path, 
'resources','icons','search.png'))
 
 
 def cache_cats():
-    url = 
'http://www.nfl.com/widgets/navigation/header-2012/header-includes.htmlv'
+    url = 
'http://www.nfl.com/widgets/navigation/header-2012/header-includes.html'
     soup = BeautifulSoup(make_request(url), 
convertEntities=BeautifulSoup.HTML_ENTITIES)
     video_items = soup.find('div', text='videos').findNext('ul')('a')
     show_items = soup.find('div', text='shows').findNext('ul')('a')
-    show_items += soup.find('div', text='nfl.com/live').findNext('ul')('a')
+    show_items += soup.find('div', text='NFL.com/LIVE').findNext('ul')('a')
     channel_items = soup.find('div', text='channels').findNext('ul')('a')
     event_items = soup.find('div', text='events').findNext('ul')('a')
+    teams_items = soup.find('div', attrs={'class': 'teams'}).findAll('a')
     categories = {'videos': [(i.string, i['href']) for i in video_items if 
i.string],
                   'shows': [(i.string, i['href']) for i in show_items if 
i.string],
                   'channels':[(i.string, i['href']) for i in channel_items if 
i.string],
                   'events': [(i.string, i['href']) for i in event_items if 
i.string],
-                  'teams': []}
+                  'teams': [(i.string, i['href']) for i in teams_items if 
i.string]}
     cache.set('categories', repr(categories))
     return categories
 
 
-def cache_teams():
-    url = 'http://www.nfl.com/videos/nfl-videos'
-    soup = BeautifulSoup(make_request(url), 
convertEntities=BeautifulSoup.HTML_ENTITIES)
-    data = eval(cache.get('categories'))
-    items = soup.findAll('div', attrs={'class': "conf-panel-list"})
-    data['teams'] = [(i.string, i['href']) for i in 
items[0]('a')+items[1]('a')]
-    cache.set('categories', repr(data))
-    return data['teams']
-
-
 def get_cats(name):
     data = eval(cache.get('categories'))
     name = name.lower()
     items = data[name]
-    if name == 'teams':
-        if len(items) == 0:
-            items = cache_teams()
     name_list = []
     for i in items:
         i_name = i[0]
+        url = i[1]
+        if name == 'teams':
+            # we need a different url
+            url = 'http://www.nfl.com/videos/%s' %i_name.lower().replace('.', 
'').replace(' ', '-')
         mode = 1
         if i_name in name_list: continue
+        if i_name == 'NFL Now': continue
         if i_name == 'The Season': continue  # need a new function for this 
channel
-        if i_name == 'Top 100 Players of ...':
+        if i_name == 'Top 100 Players':
             mode = 12
         if i_name == 'Big Play Highlights':
             mode = 10
-        add_dir(i_name, i[1], mode, icon)
+        add_dir(i_name, url, mode, addon_icon)
         name_list.append(i_name)
 
 
-def index(url, name):
+def resolve_feed_url(url, name):
     if name == 'Video Home':
         return get_featured_videos()
-    if not url.startswith('http'):
-        url = 'http://www.nfl.com' + url
-    soup = BeautifulSoup(make_request(url), 
convertEntities=BeautifulSoup.HTML_ENTITIES)
-    if not 'page=' in url:
-        featured_videos = None
-        try: featured_videos = soup.find('div', attrs={'id' : 
"featured-videos-carousel"})('ul')[0]('h3')
-        except:
-            try: featured_videos = soup.findAll('ul', attrs={'class' : 
"list-items"})[0]('h3')
-            except: pass
-        if featured_videos:
-            featured = []
-            for i in featured_videos:
-                featured.append((i('a')[0].string, 
i('a')[0]['href'].split('/')[3]))
-            cache.set('currently_featured', repr(featured))
-            add_dir(language(30000), url, 4, icon, None, None, False)
-    videos = None
-    try:
-        videos = soup.find('ul', attrs={'id' : "video-list-items"})('li')
-    except:
-        addon_log('video_items exception: %s' %format_exc())
-    if videos:
-        for i in videos:
-            name = i('h3')[0]('a')[0].string
-            link = i('h3')[0]('a')[0]['href'].split('/')[3]
-            thumb = 
i('img')[0]['src'].split('_video_thumbnail_')[0]+'_video_rhr_210.jpg'
-            try:
-                desc = i('p')[1].string+' \n  '+i('p')[0].string
-            except:
-                desc = i('p')[0].string
-            duration = i('div')[-1].string.replace('\n','').replace('\t','')
-            try:
-                add_dir(name,link,3,thumb,duration,desc,False)
-            except:
-                addon_log('add_dir exception: %s' %format_exc())
-        # check for pagenation
-        try:
-            page = soup.find('div', attrs={'id' : 
"video-list-pagination"})('a')[-1]['href']
-            # video pages switch to ajax after the first few pages
-            if page == '?page=3' or page == '?page=7':
-                page_url = 
'http://www.nfl.com/ajax/videos/v2?batchNum=1&channelId='+url.split('/')[-1].split('?')[0]
-                mode = 5
-            else:
-                page_url = url.split('?')[0]+page
-                mode = 1
-            add_dir(language(30003), page_url, mode, next_icon)
-        except:
-            pass
-
-
-def get_page_3(url):
-    data = json.loads(make_request(url))
-    videos = data['videos']
-    for i in videos:
-        vedio_id = i['videoCMSID']
-        name = i['briefHeadline']
-        thumb = 
i['xSmallImage'].split('_video_thumbnail_')[0]+'_video_rhr_210.jpg'
-        desc = i['captionBlurb']
-        duration = i['runTime'][:-3]
-        add_dir(name,vedio_id,3,thumb,duration,desc,False)
-    batch = data['batch']
-    if batch * 50 < data['total']:
-        next_url = url.replace('batchNum=%s' %batch, 'batchNum=%s' %(batch + 
1))
-        add_dir(language(30003), next_url, 5, next_icon)
-
-
-def get_current_featured_videos():
-    videos = eval(cache.get('currently_featured'))
-    playlist = xbmc.PlayList(1)
-    playlist.clear()
-    for i in videos:
-        playlist.add(get_video_url(i[1]), xbmcgui.ListItem(i[0]))
-    xbmc.executebuiltin('playlist.playoffset(video,0)')
+    channel_id = url.split('/')[-1]
+    
get_videos_feed('http://www.nfl.com/feeds-rs/videos/byChannel/%s.json?limit=16' 
%channel_id)
 
 
 def cache_featured_videos():
@@ -216,8 +147,8 @@ def get_top_players(url):
         print (name, video_id, thumb)
         add_dir(name, video_id, 3, i.img['src'], duration=None, 
description=None, isfolder=False)
 
-    
-    
+
+
 def get_highlights(href=None, selected=None):
     nav = Navigation()
     if href is None:
@@ -233,22 +164,23 @@ def get_highlights(href=None, selected=None):
         if i:
             dir_name += '%s | ' %i
     dir_name += '[/COLOR] %s' %language(30005)
-    add_dir(dir_name, 'display_nav', 9, icon)
-    get_highlight_videos(feed_url)
+    add_dir(dir_name, 'display_nav', 9, addon_icon)
+    get_videos_feed(feed_url)
 
 
-def get_highlight_videos(url):
+def get_videos_feed(url):
     data = json.loads(make_request(url))
     for i in data['videos']:
-        duration = get_duration_in_minutes(i['runTime'])
-        final_url = select_bitrate(i['videoBitRates'])
-        listitem = xbmcgui.ListItem(i['headline'], 
iconImage=i['mediumImageUrl'], thumbnailImage=i['mediumImageUrl'])
-        listitem.setInfo(type="Video", infoLabels={"Title": i['headline'], 
"Plot": i['caption'], "Duration": duration})
-        listitem.setProperty("Fanart_Image", fanart)
-        xbmcplugin.addDirectoryItem(int(sys.argv[1]), final_url, listitem, 
False)
-    if data['total'] > data['offset'] + 16:
-        page_url = url.split('offset=')[0] + 'offset=' + str(data['offset'] + 
16)
-        add_dir(language(30003), page_url, 11, icon)
+        if not i['videoBitRates']:
+            if i.has_key('videoFileUrl'):
+                i['videoBitRates'] = [{'bitrate': 700000, 'videoPath': 
i['videoFileUrl']}]
+            else:
+                addon_log('No videoBitRates: %s' %i)
+                continue
+        add_dir(i['headline'], select_bitrate(i['videoBitRates']), 3, 
i['mediumImageUrl'], i['runTime'], i['caption'], False)
+    if data['total'] > (data['offset'] + 20):
+        page_url = url.split('?')[0] + '?limit=20&offset=' + 
str(data['offset'] + data['limit'])
+        add_dir(language(30003), page_url, 11, addon_icon)
 
 
 def display_highlights_nav(selected=None):
@@ -314,7 +246,7 @@ def get_video_url(url):
     url = 'http://www.nfl.com/static/embeddablevideo/'+url+'.json'
     data = json.loads(make_request(url))
     if data['status'] == 'EXPIRED':
-        xbmc.executebuiltin("XBMC.Notification(NFL.com,%s,5000,%s)" 
%(language(30004), icon))
+        xbmc.executebuiltin("XBMC.Notification(NFL.com,%s,5000,%s)" 
%(language(30004), addon_icon))
         return
     bitrate_list = data['cdnData']['bitrateInfo']
     if len(bitrate_list) > 0:
@@ -325,6 +257,7 @@ def get_video_url(url):
 
 def select_bitrate(bitrate_list):
     bitrate = int(addon.getSetting('prefered_bitrate'))
+    streams = None
     try: streams = [(i['rate'], i['path']) for i in bitrate_list]
     except: streams = [(i['bitrate'], i['videoPath']) for i in bitrate_list]
     if len(streams) < 1:
@@ -352,7 +285,6 @@ def select_bitrate(bitrate_list):
                 path = streams[1][1]
         else:
             pathe = streams[1][1]
-    addon_log('Path: %s' %path)
     if path.startswith('http'):
         return path
     else:
@@ -361,7 +293,10 @@ def select_bitrate(bitrate_list):
 
 def set_url(url):
     success = True
-    resolved_url = get_video_url(url)
+    if url.startswith('http'):
+        resolved_url = url
+    else:
+        resolved_url = get_video_url(url)
     if resolved_url is None:
         success = False
         resolved_url = ''
@@ -420,7 +355,7 @@ if mode == None:
     xbmcplugin.endOfDirectory(int(sys.argv[1]))
 
 elif mode == 1:
-    index(params['url'], params['name'])
+    resolve_feed_url(params['url'], params['name'])
     xbmcplugin.endOfDirectory(int(sys.argv[1]))
 
 elif mode == 2:
@@ -432,7 +367,7 @@ elif mode == 3:
     set_url(params['url'])
 
 elif mode == 4:
-    get_current_featured_videos()
+    pass
 
 elif mode == 5:
     get_page_3(params['url'])
@@ -458,7 +393,7 @@ elif mode == 10:
     xbmcplugin.endOfDirectory(int(sys.argv[1]))
 
 elif mode == 11:
-    get_highlight_videos(params['url'])
+    get_videos_feed(params['url'])
     xbmcplugin.endOfDirectory(int(sys.argv[1]))
 
 elif mode == 12:
diff --git a/plugin.video.nfl.com/resources/highlights.py 
b/plugin.video.nfl.com/resources/highlights.py
index a736670..0975504 100644
--- a/plugin.video.nfl.com/resources/highlights.py
+++ b/plugin.video.nfl.com/resources/highlights.py
@@ -33,7 +33,7 @@ class Navigation:
             elif 'data-value="All Teams"' in i.contents[0]:
                 nav['teams'] = parse_soup(BeautifulSoup(i.contents[0], 
convertEntities=BeautifulSoup.HTML_ENTITIES))
                 self.team = set_selected(nav['teams'])
-            elif 'data-value="REG"' in i.contents[0]:
+            elif 'data-value="REG"' in i.contents[0] or 'data-value="PRE"' in 
i.contents[0] or 'data-value="POST"' in i.contents[0]:
                 nav['seasontypes'] = parse_soup(BeautifulSoup(i.contents[0], 
convertEntities=BeautifulSoup.HTML_ENTITIES))
                 self.season_type = set_selected(nav['seasontypes'])
             elif 'data-value="1"' in i.contents[0]:
@@ -46,7 +46,7 @@ class Navigation:
                         self.game = set_selected(nav['games'])
                 except:
                     pass
-                    
+
         self.nav = nav
         return nav
 
@@ -63,7 +63,7 @@ class Navigation:
         season_types = ['PRE','REG', 'POST']
 
         if href is None:
-            filter = '/byWeek/2013/REG/' + self.nav['weeks'][-1]['value']
+            filter = '/bySeasonType/%s/%s' %(self.nav['seasons'][-1]['value'], 
self.nav['seasontypes'][-1]['value'])
         else:
             items = href.split('/')
             try:

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

commit 7a9e317e322d2ccb3c945cdebce1a558e80c3a94
Author: Martijn Kaijser <mcm.kaij...@gmail.com>
Date:   Wed Aug 20 18:08:21 2014 +0200

    [plugin.video.tvkaista] 4.1.1

diff --git a/plugin.video.tvkaista/addon.xml b/plugin.video.tvkaista/addon.xml
index 6502f80..2dd9c31 100644
--- a/plugin.video.tvkaista/addon.xml
+++ b/plugin.video.tvkaista/addon.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="plugin.video.tvkaista" name="TVKaista" version="4.1.0" 
provider-name="Viljo Viitanen">
+<addon id="plugin.video.tvkaista" name="TVKaista" version="4.1.1" 
provider-name="Viljo Viitanen">
     <requires>
         <import addon="xbmc.python" version="2.1.0"/>
     </requires>
diff --git a/plugin.video.tvkaista/changelog.txt 
b/plugin.video.tvkaista/changelog.txt
index db79be3..e942e50 100644
--- a/plugin.video.tvkaista/changelog.txt
+++ b/plugin.video.tvkaista/changelog.txt
@@ -1,3 +1,5 @@
+[B]4.1.1[/B]
+- Fix unicode bug from search. Thanks to Jari V. for reporting it!
 [B]4.1.0[/B]
 - Search from both title and description (previously only title), internal 
fixes. Thanks grinsted and sampov2!
 [B]4.0.2[/B]
diff --git a/plugin.video.tvkaista/default.py b/plugin.video.tvkaista/default.py
index 687d896..529db5e 100644
--- a/plugin.video.tvkaista/default.py
+++ b/plugin.video.tvkaista/default.py
@@ -43,6 +43,7 @@
 #31.3.2014 Version 4.0.2, change from tvkaista.fi to tvkaista.com
 #26.6.2014 Changed search to searching both title and description all the time.
 #27.6.2014 Version 4.1.0, Changed hardcoded strings to translated ones
+#19.8.2014 Version 4.1.1, fix unicode bug with search
 
 #tvkaista api documentation is at https://code.google.com/p/tvkaista-api/
 
@@ -410,7 +411,7 @@ def listsearches():
 
   for i in tvkaista_addon.getSetting("searches").splitlines():
     
u=sys.argv[0]+"?url="+urllib.quote_plus('http://www.tvkaista.com/feed/search/either/'+urllib.quote_plus(i))+"&mode=2"
-    listfolder = xbmcgui.ListItem(language(30106)+': '+i) #haku
+    listfolder = xbmcgui.ListItem(language(30106)+': '+i.decode('utf-8')) #haku
     xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, listfolder, isFolder=1)
 
   if(tvkaista_addon.getSetting("searches") != ""):

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

Summary of changes:
 plugin.video.nascar/addon.xml                |    6 +-
 plugin.video.nascar/changelog.txt            |    3 +
 plugin.video.nascar/default.py               |  185 +++++++++++---------------
 plugin.video.nascar/resources/settings.xml   |    9 +-
 plugin.video.nfl.com/addon.xml               |    7 +-
 plugin.video.nfl.com/changelog.txt           |    3 +
 plugin.video.nfl.com/default.py              |  181 ++++++++-----------------
 plugin.video.nfl.com/resources/highlights.py |    6 +-
 plugin.video.tvkaista/addon.xml              |    2 +-
 plugin.video.tvkaista/changelog.txt          |    2 +
 plugin.video.tvkaista/default.py             |    3 +-
 11 files changed, 160 insertions(+), 247 deletions(-)


hooks/post-receive
-- 
Plugins

------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Xbmc-addons mailing list
Xbmc-addons@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to