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

Reply via email to