The branch, frodo has been updated
via f7084c569298c7c142d9b8e4d5ee36bfdb107fb0 (commit)
from f4a725eb6c9d046544304d2b3b8ee51697826234 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=f7084c569298c7c142d9b8e4d5ee36bfdb107fb0
commit f7084c569298c7c142d9b8e4d5ee36bfdb107fb0
Author: beenje <bee...@xbmc.org>
Date: Tue Jul 30 21:35:33 2013 +0200
[plugin.video.mlbmc] updated to version 2.0.5
diff --git a/plugin.video.mlbmc/addon.xml b/plugin.video.mlbmc/addon.xml
index 4d36585..533e2f5 100644
--- a/plugin.video.mlbmc/addon.xml
+++ b/plugin.video.mlbmc/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.mlbmc"
name="MLBMC"
- version="2.0.4"
+ version="2.0.5"
provider-name="divingmule">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
diff --git a/plugin.video.mlbmc/changelog.txt b/plugin.video.mlbmc/changelog.txt
index 6a06c95..4949b64 100644
--- a/plugin.video.mlbmc/changelog.txt
+++ b/plugin.video.mlbmc/changelog.txt
@@ -1,3 +1,8 @@
+Version 2.0.5
+fix website changes, condensed games, MLB.com playlist
+fix 'identity error' after selecting a coverage type in MLB.TV
+added sorting of coverage types
+
Version 2.0.4
fix website changes
diff --git a/plugin.video.mlbmc/default.py b/plugin.video.mlbmc/default.py
index 1281c30..b2309fc 100644
--- a/plugin.video.mlbmc/default.py
+++ b/plugin.video.mlbmc/default.py
@@ -221,7 +221,7 @@ if mode==28:
xbmcplugin.endOfDirectory(int(sys.argv[1]))
if mode==29:
- mlb.get_playlist_cats(url)
+ mlb.get_playlist_cats(True, url)
xbmcplugin.endOfDirectory(int(sys.argv[1]))
if mode==30:
diff --git a/plugin.video.mlbmc/resources/mlb.py
b/plugin.video.mlbmc/resources/mlb.py
index ae9ebbc..7f22b6f 100644
--- a/plugin.video.mlbmc/resources/mlb.py
+++ b/plugin.video.mlbmc/resources/mlb.py
@@ -67,23 +67,7 @@ def get_playlist_page(url):
mp_items = soup.h4.findNextSibling()('div', attrs={'class': 'item'})
for i in mp_items:
categories['playlist']['main_topic']['videos'].append((i.p.string,
i['data-cid'], i.img['data-lazy-src'].split('_th_')[0] + '_th_13.jpg'))
- for i in carousel_topics:
- try:
- thumb = re.findall('url\((.+?)\)', i.div.div['style'])[0]
- except:
- try:
- thumb = i.img['src']
- except:
- addon_log('thumb exception')
- href = i.a['href']
- vid_list = []
- topic_items = i('div', attrs={'class': "page topic item"})
- for item in topic_items:
- vids = item('li')
- for x in vids:
- content_id = x.a['href'].split('content_id=')[1].split('&')[0]
- vid_list.append((x.find('span', attrs={'class':
"headline"}).string, content_id, x.img['data-lazy-src'].split('_th_')[0] +
'_th_13.jpg'))
- categories['playlist'][i.h4.string] = {'thumb': thumb, 'href': href,
'videos': vid_list}
+
return categories
@@ -104,9 +88,10 @@ def get_mlb_playlist(url, name=None):
if url == 'http://wapc.mlb.com/play':
data = cache.cacheFunction(cache_playlist_categories)
main_page = 'True'
- if name is None:
- addDir(language(30010), 'get_playlist', 4, thumb)
- addDir(language(30011), 'browse_categories', 28, thumb)
+ addDir(language(30013), 'main_topic', 24, thumb, main_page)
+ # add teams dir
+ addDir(language(30010), 'get_playlist', 4, thumb)
+ get_playlist_cats()
else:
data = cache_current_playlist(url)
main_page = 'False'
@@ -117,10 +102,8 @@ def get_mlb_playlist(url, name=None):
team = None
if team:
addDir(language(30012), team[1], 20, thumb)
- addDir(language(30013), 'main_topic', 24, thumb, main_page)
- for i in data['playlist'].keys():
- if i != 'main_topic':
- addDir(i, i, 24, data['playlist'][i]['thumb'], main_page)
+ addDir(language(30013), 'main_topic', 24, thumb, main_page)
+ get_playlist_cats(True, False)
def get_topic_playlist(topic, main_page):
@@ -129,17 +112,27 @@ def get_topic_playlist(topic, main_page):
data = cache.cacheFunction(cache_playlist_categories)
else:
data = eval(cache.get('current'))
- for i in data['playlist'][topic]['videos']:
- mm_url = 'http://wapc.mlb.com/gen/multimedia/detail/%s/%s/%s/%s.xml'
%(i[1][-3], i[1][-2], i[1][-1], i[1])
- addLink(i[0], mm_url, '', 2, i[2])
+
+ if len(data['playlist'][topic]['videos']) > 0:
+ for i in data['playlist'][topic]['videos']:
+ mm_url =
'http://wapc.mlb.com/gen/multimedia/detail/%s/%s/%s/%s.xml' %(i[1][-3],
i[1][-2], i[1][-1], i[1])
+ addLink(i[0], mm_url, '', 2, i[2])
-def get_playlist_cats(subcat=False):
+def get_playlist_cats(current=False, subcat=False):
''' mode 28-29, add directories for browse all playlist '''
thumb = 'http://mlbmc-xbmc.googlecode.com/svn/icons/playlist.png'
- data = cache.cacheFunction(cache_playlist_categories)
+ if current:
+ data = eval(cache.get('current'))
+ else:
+ data = cache.cacheFunction(cache_playlist_categories)
if subcat:
- items = data['sub_categories'][subcat]
+ try:
+ items = data['sub_categories'][subcat]
+ except KeyError:
+ addon_log('KeyError: %s' %subcat)
+ addon_log(data['sub_categories'].keys())
+ return
else:
items = data['topics']
for title, item_id in items:
@@ -339,10 +332,10 @@ def getVideos(url, page=False):
name = i['blurb']
duration = i['duration']
item_url = i['url']
- try:
- thumb = i['thumbnails'][2]['src']
- except:
- thumb = i['thumbnails'][1]['src']
+ if len(i['thumbnails']) > 0:
+ thumb = i['thumbnails'][-1]['src']
+ else:
+ thumb = ''
addLink(name,item_url,duration,2,thumb)
if items[1]:
addDir(language(30034), str(page+1), 21, next_icon)
@@ -370,9 +363,10 @@ def setVideoURL(link, direct=False):
xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, item)
-def getVideoURL(url):
- ''' parses the given xml url, returns the actual video url '''
- soup = BeautifulStoneSoup(getRequest(url),
convertEntities=BeautifulStoneSoup.XML_ENTITIES)
+def getVideoURL(xml_url):
+ ''' parses the given xml url, returns the actual video url '''
+ url = None
+ soup = BeautifulStoneSoup(getRequest(xml_url),
convertEntities=BeautifulStoneSoup.XML_ENTITIES)
if addon.getSetting('use_hls') == 'true':
if soup.find('url', attrs={'playback_scenario' : "HTTP_CLOUD_TABLET"}):
url = soup.find('url', attrs={'playback_scenario' :
"HTTP_CLOUD_TABLET"}).string
@@ -388,7 +382,9 @@ def getVideoURL(url):
url = soup.find('url', attrs={'playback_scenario' :
"MLB_FLASH_1000K_PROGDNLD"}).string
elif soup.find('url', attrs={'playback_scenario' :
"MLB_FLASH_800K_PROGDNLD"}):
url = soup.find('url', attrs={'playback_scenario' :
"MLB_FLASH_800K_PROGDNLD"}).string
- return url
+ if url:
+ addon_log('Playback URL: %s' %url)
+ return url
def getCondensedGames(url):
@@ -398,15 +394,16 @@ def getCondensedGames(url):
items = data['data']['games']['game']
addon_log('item count: %s' %len(items))
for i in items:
- try:
- if i['game_media']['newsroom']['media']['type'] ==
'condensed_video':
- content = i['game_media']['newsroom']['media']['id']
- else:
- raise KeyError
- except KeyError:
- continue
- content_id = content[-3]+'/'+content[-2]+'/'+content[-1]+'/'+content
- url = 'http://mlb.mlb.com/gen/multimedia/detail/'+content_id+'.xml'
+ content_id = None
+ media_items = i['game_media']['homebase']['media']
+ for t in media_items:
+ if t['type'] == "condensed_game":
+ content_id = t['id']
+ break
+ if content_id:
+ url = ('http://mlb.mlb.com/gen/multimedia/detail/%s/%s/%s/%s.xml'
+ %(content_id[-3], content_id[-2], content_id[-1],
content_id))
+
if show_scores == "true":
name = TeamCodes[i['away_team_id']][0] + ' - ' + i['away_score'] +
' @ ' + TeamCodes[i['home_team_id']][0] + ' - ' + i['home_score']
else:
@@ -569,7 +566,7 @@ def getGames(url):
event_id = game['game_media']['media']['calendar_event_id']
except:
addon_log( name+'event_id exception' )
- mode = '24'
+ mode = '30'
event_id = ''
try:
diff --git a/plugin.video.mlbmc/resources/mlbtv.py
b/plugin.video.mlbmc/resources/mlbtv.py
index 556668b..0a05b19 100644
--- a/plugin.video.mlbmc/resources/mlbtv.py
+++ b/plugin.video.mlbmc/resources/mlbtv.py
@@ -65,7 +65,10 @@ def mlb_login():
addon_log( "Logged in successfully!" )
except:
addon_log("Login Failed!")
- addon_log(login)
+ try:
+ soup = BeautifulSoup(login)
+ addon_log(str(soup.head.title))
+ except: pass
xbmc.executebuiltin("XBMC.Notification("+language(30035)+","+language(30042)+",5000,"+icon+")")
if cookies.has_key('ipid') and cookies.has_key('fprt'):
@@ -110,7 +113,7 @@ def mlbGame(event_id, full_count=False):
if cookies.has_key('ftmu'):
addon_log("cookies.has_key('ftmu')")
session = urllib.unquote(cookies['ftmu'])
-
+
values = {
'eventId': event_id,
'sessionKey': session,
@@ -183,9 +186,9 @@ def mlbGame(event_id, full_count=False):
event_id = soup.find('event-id').string
items = soup.findAll('user-verified-content')
- verified_content = []
- name_list = []
+ verified_content = {'video': [], 'audio': []}
for item in items:
+ audio = False
if item.state.string == 'MEDIA_ARCHIVE':
if int(event_id.split('-')[2]) < 2012:
scenario = addon.getSetting('archive_scenario')
@@ -225,6 +228,7 @@ def mlbGame(event_id, full_count=False):
name = coverage+' '+call_letters+' '+blackout
if item.type.string == 'audio':
+ audio = True
name += ' Gameday Audio'
scenario = 'AUDIO_FMS_32K'
@@ -235,15 +239,25 @@ def mlbGame(event_id, full_count=False):
continue
else:
-
verified_content.append((name,event_id,content_id,session,cookies['ipid'],cookies['fprt'],scenario,live))
- name_list.append(name)
+ if audio:
+
verified_content['audio'].append((name,event_id,content_id,session,cookies['ipid'],cookies['fprt'],scenario,live))
+ else:
+
verified_content['video'].append((name,event_id,content_id,session,cookies['ipid'],cookies['fprt'],scenario,live))
+
+ index = 0
+ name_list = []
+ sorted_content = {}
+ for i in verified_content['video'] + verified_content['audio']:
+ sorted_content[index] = i
+ name_list.append(i[0])
+ index += 1
dialog = xbmcgui.Dialog()
ret = dialog.select(language(30033), name_list)
if ret >= 0:
addon_log('Selected: %s' %name_list[ret])
- addon_log('content: %s' %verified_content[ret][0])
- getGameURL(*verified_content[ret])
+ addon_log('content: %s' %sorted_content[ret][0])
+ getGameURL(*sorted_content[ret])
def getGameURL(name,event,content,session,cookieIp,cookieFp,scenario,live):
@@ -253,6 +267,7 @@ def
getGameURL(name,event,content,session,cookieIp,cookieFp,scenario,live):
else:
subject = 'LIVE_EVENT_COVERAGE'
url =
'https://secure.mlb.com/pubajaxws/bamrest/MediaService2_0/op-findUserVerifiedEvent/v-2.1?'
+
values = {
'subject': subject,
'sessionKey': session,
@@ -260,7 +275,7 @@ def
getGameURL(name,event,content,session,cookieIp,cookieFp,scenario,live):
'contentId': content,
'playbackScenario': scenario,
'eventId': event,
- 'fingerprint': cookieFp,
+ 'fingerprint': urllib.unquote(cookieFp),
'platform':'WEB_MEDIAPLAYER'
}
@@ -392,9 +407,6 @@ def
getGameURL(name,event,content,session,cookieIp,cookieFp,scenario,live):
xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, item)
-
-
-
def get_smil(url):
soup = BeautifulStoneSoup(getRequest(url))
base = soup.meta['base']
-----------------------------------------------------------------------
Summary of changes:
plugin.video.mlbmc/addon.xml | 2 +-
plugin.video.mlbmc/changelog.txt | 5 ++
plugin.video.mlbmc/default.py | 2 +-
plugin.video.mlbmc/resources/mlb.py | 93 ++++++++++++++++-----------------
plugin.video.mlbmc/resources/mlbtv.py | 36 +++++++++----
5 files changed, 76 insertions(+), 62 deletions(-)
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
Get your SQL database under version control now!
Version control is standard for application code, but databases havent
caught up. So what steps can you take to put your SQL databases under
version control? Why should you start doing it? Read more to find out.
http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk
_______________________________________________
Xbmc-addons mailing list
Xbmc-addons@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xbmc-addons