alexdunlop81

pbskids.py

Apr 13th, 2013
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.06 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='KIDS',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, 'pbskids', 'show', program_id))
  44.                 else:
  45.                     common.addShow(name, 'pbskids', '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',filter_mediafile_set__video_encoding__mime_type='video/mp4')
  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,filter_mediafile_set__video_encoding__mime_type='video/mp4')
  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'][0]['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="pbskids"'
  77.         u += '&sitemode="play"'
  78.         print "U1U",u
  79.         common.addVideo(u,infoLabels['Title'],thumb,infoLabels=infoLabels)
  80.     start = stop
  81.     while start < count:
  82.         if clips:
  83.             data = cove.videos.filter(fields='associated_images,mediafiles',filter_program=program_id,order_by='-airdate',filter_availability_status='Available',limit_start=start)
  84.         else:
  85.             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')
  86.         videos = data['results']
  87.         total = data['count']
  88.         stop = data['stop']
  89.         del data
  90.         for video in videos:
  91.             infoLabels={}
  92.             try:thumb=video['associated_images'][2]['url']
  93.             except:thumb=video['associated_images'][0]['url']
  94.             url=video['mediafiles'][0]['video_data_url']
  95.             infoLabels['Title']=video['title']
  96.             infoLabels['Plot']=video['long_description']
  97.             infoLabels['Premiered']=video['airdate'].split(' ')[0]
  98.             infoLabels['TVShowTitle']=common.args.name
  99.             infoLabels['Duration']=str(int(video['mediafiles'][0]['length_mseconds'])/1000)
  100.             u = sys.argv[0]
  101.             u += '?url="'+urllib.quote_plus(url)+'"'
  102.             u += '&mode="pbskids"'
  103.             u += '&sitemode="play"'
  104.             print "U*U",u
  105.             common.addVideo(u,infoLabels['Title'],thumb,infoLabels=infoLabels)
  106.         start = stop
  107.     common.setView('episodes')
  108.  
  109. def play():
  110.     print "IN KIDS"
  111.     #smilurl=common.args.url+'&format=SMIL'
  112.     redirecturl=common.args.url
  113.     finalurl=common.getRedirect(redirecturl)
  114.     print "resolved url",finalurl
  115.     #data = common.getURL(smilurl)
  116.     #print "data",data
  117.     #tree=BeautifulStoneSoup(data, convertEntities=BeautifulStoneSoup.HTML_ENTITIES)
  118.     #print "tree",tree.prettify()
  119.     #base = tree.find('meta')
  120.     #print "base",base
  121.     #base='rtmp://s3h56pp78s3goi.cloudfront.net/cfx/st/mp4:cove2.0/wordgirl/634cc2f8-e5bc-4c20-bf85-9cc78ddaf48c/hd-mezzanine-16x9/WORG309_EpisodeA_M1080-16x9-mp4-1200k.mp4
  122.     #base='rtmp://s3h56pp78s3goi.cloudfront.net/cfx/st/'
  123.     #playpath='mp4:cove2.0/wordgirl/634cc2f8-e5bc-4c20-bf85-9cc78ddaf48c/hd-mezzanine-16x9/WORG309_EpisodeA_M1080-16x9-mp4-1200k.mp4'
  124.     #finalurl = base+' playpath='+playpath  
  125.    #playpath=tree.find('ref')['src']
  126.    # if '.mp4' in playpath:
  127.          #playpath = 'mp4:'+playpath
  128.           #  else:
  129.            #     playpath = playpath.replace('.flv','')
  130.            # finalurl = base+' playpath='+playpath  
  131.    #if base:
  132.      #   base = base['base']
  133.       #  if 'rtmp://' in base:
  134.        #     playpath=tree.find('ref')['src']
  135.         #    if '.mp4' in playpath:
  136.          #       playpath = 'mp4:'+playpath
  137.           #  else:
  138.            #     playpath = playpath.replace('.flv','')
  139.            # finalurl = base+' playpath='+playpath
  140.        # elif 'http://' in base:
  141.         #    playpath=tree.find('ref')['src']
  142.      #       finalurl = base+playpath
  143.    # else:
  144.     #    finalurl=tree.find('ref')['src']
  145.    # finalurl=smilurl
  146.    # print "URL",finalurl
  147.     item = xbmcgui.ListItem(path=finalurl)
  148.     xbmcplugin.setResolvedUrl(pluginhandle, True, item)
Add Comment
Please, Sign In to add comment