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