alexdunlop81

Pbs.py fix

Apr 13th, 2013
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.11 KB | None | 0 0
  1. import xbmcplugin
  2. import xbmc
  3. import xbmcgui
  4. import urllib
  5. import urllib2
  6. import sys
  7. import os
  8. import re
  9. import base64
  10.  
  11. from BeautifulSoup import BeautifulSoup
  12. from BeautifulSoup import BeautifulStoneSoup
  13. #import demjson
  14. import resources.lib._common as common
  15.  
  16. import coveapi
  17.  
  18. pluginhandle = int (sys.argv[1])
  19.  
  20. key='RnJlZUNhYmxlLTgxMzQyMmE5LTg0YWMtNDdjYy1iYzVhLTliMDZhY2NlM2I2YQ=='
  21. secret='MDEyYzcxMDgtNWJiNS00YmFlLWI1MWYtMDRkMTIzNGZjZWRk'
  22.  
  23. cove = coveapi.connect( base64.b64decode(key), base64.b64decode(secret) )
  24.  
  25. def masterlist():
  26.     return rootlist(db=True)
  27.  
  28. def rootlist(db=False):
  29.     start = 0
  30.     count = 200
  31.     db_shows = []
  32.     while start < count:
  33.         data = cove.programs.filter(filter_producer__name='PBS',order_by='title',limit_start=start)
  34.         results = data['results']
  35.         count = data['count']
  36.         stop = data['stop']
  37.         del data
  38.         for result in results:
  39.             if len(result['nola_root'].strip()) != 0:
  40.                 program_id = re.compile( '/cove/v1/programs/(.*?)/' ).findall( result['resource_uri'] )[0]
  41.                 name = result['title'].encode('utf-8')
  42.                 if db==True:
  43.                     db_shows.append((name, 'pbs', 'show', program_id))
  44.                 else:
  45.                     common.addShow(name, 'pbs', 'show', program_id)
  46.         start = stop
  47.     if db==True:
  48.         return db_shows
  49.     else:
  50.         common.setView('tvshows')
  51.        
  52.        
  53. def show(program_id=common.args.url):
  54.     start = 0
  55.     count = 200
  56.     clips = False
  57.     data = cove.videos.filter(fields='associated_images,mediafiles',filter_program=program_id,order_by='-airdate',filter_availability_status='Available',limit_start=start,filter_type='Episode')
  58.     if data['count'] == 0:
  59.         clips = True
  60.         data = cove.videos.filter(fields='associated_images,mediafiles',filter_program=program_id,order_by='-airdate',filter_availability_status='Available',limit_start=start)
  61.     videos = data['results']
  62.     total = data['count']
  63.     stop = data['stop']
  64.     for video in videos:
  65.         infoLabels={}
  66.         try:thumb=video['associated_images'][2]['url']
  67.         except:thumb=video['associated_images'][0]['url']
  68.         url=video['mediafiles'][0]['video_data_url']
  69.         infoLabels['Title']=video['title']
  70.         infoLabels['Plot']=video['long_description']
  71.         infoLabels['Premiered']=video['airdate'].split(' ')[0]
  72.         infoLabels['TVShowTitle']=common.args.name
  73.         infoLabels['Duration']=str(int(video['mediafiles'][0]['length_mseconds'])/1000)
  74.         u = sys.argv[0]
  75.         u += '?url="'+urllib.quote_plus(url)+'"'
  76.         u += '&mode="pbs"'
  77.         u += '&sitemode="play"'
  78.         common.addVideo(u,infoLabels['Title'],thumb,infoLabels=infoLabels)
  79.     start = stop
  80.     while start < count:
  81.         if clips:
  82.             data = cove.videos.filter(fields='associated_images,mediafiles',filter_program=program_id,order_by='-airdate',filter_availability_status='Available',limit_start=start,filter_mediafile_set__video_encoding__mime_type='video/mp4')
  83.         else:
  84.             data = cove.videos.filter(fields='associated_images,mediafiles',filter_program=program_id,order_by='-airdate',filter_availability_status='Available',limit_start=start,filter_type='Episode',filter_mediafile_set__video_encoding__mime_type='video/mp4')
  85.         videos = data['results']
  86.         total = data['count']
  87.         stop = data['stop']
  88.         del data
  89.         for video in videos:
  90.             infoLabels={}
  91.             try:thumb=video['associated_images'][2]['url']
  92.             except:thumb=video['associated_images'][0]['url']
  93.             url=video['mediafiles'][0]['video_data_url']
  94.             infoLabels['Title']=video['title']
  95.             infoLabels['Plot']=video['long_description']
  96.             infoLabels['Premiered']=video['airdate'].split(' ')[0]
  97.             infoLabels['TVShowTitle']=common.args.name
  98.             infoLabels['Duration']=str(int(video['mediafiles'][0]['length_mseconds'])/1000)
  99.             u = sys.argv[0]
  100.             u += '?url="'+urllib.quote_plus(url)+'"'
  101.             u += '&mode="pbs"'
  102.             u += '&sitemode="play"'
  103.             common.addVideo(u,infoLabels['Title'],thumb,infoLabels=infoLabels)
  104.         start = stop
  105.     common.setView('episodes')
  106.  
  107. def play():
  108.     url=common.args.url
  109.     finalurl=common.getRedirect(url)
  110.     #tree=BeautifulStoneSoup(data, convertEntities=BeautifulStoneSoup.HTML_ENTITIES)
  111.     #print tree.prettify()
  112.     #base = tree.find('meta')
  113.     #if base:
  114.      #   base = base['base']
  115.       #  if 'rtmp://' in base:
  116.        #     playpath=tree.find('ref')['src']
  117.         #    if '.mp4' in playpath:
  118.          #       playpath = 'mp4:'+playpath
  119.           #  else:
  120.            #     playpath = playpath.replace('.flv','')
  121.            # finalurl = base+' playpath='+playpath
  122.        # elif 'http://' in base:
  123.         #    playpath=tree.find('ref')['src']
  124.          #   finalurl = base+playpath
  125.     #else:
  126.      #   finalurl=tree.find('ref')['src']
  127.     item = xbmcgui.ListItem(path=finalurl)
  128.     xbmcplugin.setResolvedUrl(pluginhandle, True, item)
Add Comment
Please, Sign In to add comment