Advertisement
Guest User

Untitled

a guest
Apr 7th, 2017
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.71 KB | None | 0 0
  1. def build_menu(itemData):
  2.     listing = []
  3.     first = itemData['items'][0]
  4.     is_folder = 'id' not in first
  5.     is_top_level = 'level' in first
  6.  
  7.     for i in itemData['items']:
  8.         thumb = i['thumb'] if not is_folder else None
  9.         # stupid encoding hack for now..
  10.         try:
  11.             i_title = i['title'].encode('utf-8')
  12.         except:
  13.             i_title = i['title']
  14.  
  15.         live_state = ''
  16.         if 'isLive' in i and i['isLive'] == 1:
  17.             live_state = ' - [COLOR green]LIVE NOW[/COLOR]'
  18.  
  19.         if is_folder and 'Live Events' in i_title:
  20.             live_count = get_live_count()
  21.             title = '{0} [B][COLOR green]({1})[/COLOR][/B]'.format(i_title, live_count) if live_count > 0 else i_title
  22.         else:
  23.             title = '[B][{0}{1}][/B]  {2}'.format(i['airdate'], live_state, i_title) if not is_folder else i_title
  24.        
  25.         item = xbmcgui.ListItem(label=title, thumbnailImage=thumb)
  26.  
  27.         if is_folder:
  28.             url = '{0}?action=traverse&u={1}&t={2}'.format(addon_url, i['url'], i_title)
  29.         else:
  30.             url = '{0}?action=play&i={1}&t={2}'.format(addon_url, i['id'], i_title)
  31.             # generate appropriate context menu
  32.             ctx = get_ctx_items(i)
  33.             if len(ctx) > 0:
  34.                 item.addContextMenuItems(get_ctx_items(i), replaceItems=True)
  35.  
  36.         listing.append((url, item, is_folder))
  37.  
  38.     if is_top_level:
  39.         # append My Queue menu item - refactor to allow pulling other single action based options like search
  40.         item = xbmcgui.ListItem(label='My Queue')
  41.         listing.append(('{0}?action=queue'.format(addon_url), item, True))
  42.        
  43.     if is_top_level:
  44.         item = xbmcgui.ListItem(label='Search')
  45.         searchurl = 0
  46.         url = '{0}?action=traverse&u={1}&t={2}'.format(addon_url, searchurl, 'search')
  47.         listing.append((url,xbmcgui.ListItem(label='Search',thumbnailImage=None),True))
  48.        
  49.        
  50.     # generate paging navigation
  51.     if 'paging' in itemData and itemData['paging']:
  52.         pg_items = get_paging(itemData)
  53.         if len(pg_items) > 0:
  54.             listing.extend(pg_items)
  55.  
  56.     if len(listing) > 0:
  57.         xbmcplugin.addDirectoryItems(addon_handle, listing, len(listing))
  58.         xbmcplugin.endOfDirectory(addon_handle, cacheToDisc=False)
  59.  
  60.  
  61.  
  62. def get_paging(pagingData):
  63.     items = []
  64.     criteria = pagingData['criteria'] if 'criteria' in pagingData else None
  65.     pagingData = pagingData['paging'] if 'paging' in pagingData else None
  66.     pn = int(pagingData['pageNumber'])
  67.     tp = int(pagingData['totalPages'])
  68.     url = dict(parse_qsl(sys.argv[2][1:]))['u']
  69.     if pn < tp:
  70.         # next
  71.         item = xbmcgui.ListItem(label='[B]- [I]Page %s of %s[/I] - Next Page[/B] >' %(pn, tp))
  72.         if not criteria:
  73.             items.append(('{0}?action=traverse&u={1}&pn={2}'.format(addon_url, url, pn+1), item, True))
  74.         else:
  75.             url = 'https://www.ufc.tv/search?param={}'.format(criteria['parameter'])
  76.             items.append(('{0}?action=traverse&u={1}&pn={2}'.format(addon_url, url, pn+1), item, True))
  77.         # goto page
  78.         #item = xbmcgui.ListItem(label='[B][I]Goto Page..[/I][/B]')
  79.         #items.append(('{0}?action=goto_pn&u={1}&c={2}&m={3}'.format(addon_url, url, pn, tp), item, True))
  80.         return items
  81.     return []
  82.  
  83.  
  84.  
  85.  
  86. def get_parsed_vids(data):
  87.     if 'programs' not in data:
  88.         return []
  89.  
  90.     img_base_url = 'https://neulionmdnyc-a.akamaihd.net/u/ufc/thumbs/'
  91.     v_list = []
  92.     try:
  93.         name = data['name']
  94.     except KeyError:
  95.         name = ''
  96.     posters = 'Replays' or 'Live'
  97.     for v in data['programs']:
  98.  
  99.         if 'beginDateTime' in v:
  100.             v_date = v['beginDateTime']
  101.         else:
  102.             v_date  = v['releaseDate']
  103.  
  104.         v_list.append({
  105.             'id': v['id'],
  106.             'title': get_title(v),
  107.             'thumb': img_base_url + v['image'].replace('es', 'ep') if 'Replays' in name or 'Live' in name else img_base_url + v['image'],
  108.             'airdate': datetime.datetime.strftime(parse_date(v_date, '%Y-%m-%dT%H:%M:%S.%f'), '%Y-%m-%d'),
  109.             'plot': v['description'],
  110.             'isLive': v['liveState'] if 'liveState' in v else 0
  111.         })
  112.      
  113.     return {
  114.         'criteria': data['criteria'] if 'criteria' in data else None,
  115.         'paging': data['paging'] if 'paging' in data else None,
  116.         'items': v_list
  117.     }
  118.  
  119. def router(paramstring):
  120.     params = dict(parse_qsl(paramstring))
  121.     if params:
  122.         action = params['action']
  123.         if action == 'listing':
  124.             main()
  125.         elif action == 'play':
  126.             play_video(params['i'], params['t'])
  127.         elif action == 'traverse':
  128.             pn = None
  129.             if 'pn' in params:
  130.                 pn = params['pn']
  131.                 traverse(params['u'], pn)
  132.             try:
  133.                 if 'search' in params['t']:
  134.                     keyboard = xbmc.Keyboard()
  135.                     keyboard.doModal()
  136.                     if keyboard.isConfirmed() and keyboard.getText():
  137.                         global query
  138.                         query = keyboard.getText()
  139.                         url = 'https://www.ufc.tv/search?param={0}'.format(query)
  140.                         params['u'] = url
  141.                         traverse(params['u'], pn)
  142.             except KeyError:
  143.                 pass
  144.             else:
  145.                 traverse(params['u'], pn)
  146.         elif action == 'queue':
  147.             load_queue()
  148.         elif action == 'queueSet':
  149.             queue_set(params['i'])
  150.         elif action == 'queueDel':
  151.             queue_del(params['i'])
  152.         elif action == 'goto_pn':
  153.             goto_page(params['u'], params['c'], params['m'])
  154.     else:
  155.         main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement