Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def build_menu(itemData):
- listing = []
- first = itemData['items'][0]
- is_folder = 'id' not in first
- is_top_level = 'level' in first
- for i in itemData['items']:
- thumb = i['thumb'] if not is_folder else None
- # stupid encoding hack for now..
- try:
- i_title = i['title'].encode('utf-8')
- except:
- i_title = i['title']
- live_state = ''
- if 'isLive' in i and i['isLive'] == 1:
- live_state = ' - [COLOR green]LIVE NOW[/COLOR]'
- if is_folder and 'Live Events' in i_title:
- live_count = get_live_count()
- title = '{0} [B][COLOR green]({1})[/COLOR][/B]'.format(i_title, live_count) if live_count > 0 else i_title
- else:
- title = '[B][{0}{1}][/B] {2}'.format(i['airdate'], live_state, i_title) if not is_folder else i_title
- item = xbmcgui.ListItem(label=title, thumbnailImage=thumb)
- if is_folder:
- url = '{0}?action=traverse&u={1}&t={2}'.format(addon_url, i['url'], i_title)
- else:
- url = '{0}?action=play&i={1}&t={2}'.format(addon_url, i['id'], i_title)
- # generate appropriate context menu
- ctx = get_ctx_items(i)
- if len(ctx) > 0:
- item.addContextMenuItems(get_ctx_items(i), replaceItems=True)
- listing.append((url, item, is_folder))
- if is_top_level:
- # append My Queue menu item - refactor to allow pulling other single action based options like search
- item = xbmcgui.ListItem(label='My Queue')
- listing.append(('{0}?action=queue'.format(addon_url), item, True))
- if is_top_level:
- item = xbmcgui.ListItem(label='Search')
- searchurl = 0
- url = '{0}?action=traverse&u={1}&t={2}'.format(addon_url, searchurl, 'search')
- listing.append((url,xbmcgui.ListItem(label='Search',thumbnailImage=None),True))
- # generate paging navigation
- if 'paging' in itemData and itemData['paging']:
- pg_items = get_paging(itemData)
- if len(pg_items) > 0:
- listing.extend(pg_items)
- if len(listing) > 0:
- xbmcplugin.addDirectoryItems(addon_handle, listing, len(listing))
- xbmcplugin.endOfDirectory(addon_handle, cacheToDisc=False)
- def get_paging(pagingData):
- items = []
- criteria = pagingData['criteria'] if 'criteria' in pagingData else None
- pagingData = pagingData['paging'] if 'paging' in pagingData else None
- pn = int(pagingData['pageNumber'])
- tp = int(pagingData['totalPages'])
- url = dict(parse_qsl(sys.argv[2][1:]))['u']
- if pn < tp:
- # next
- item = xbmcgui.ListItem(label='[B]- [I]Page %s of %s[/I] - Next Page[/B] >' %(pn, tp))
- if not criteria:
- items.append(('{0}?action=traverse&u={1}&pn={2}'.format(addon_url, url, pn+1), item, True))
- else:
- url = 'https://www.ufc.tv/search?param={}'.format(criteria['parameter'])
- items.append(('{0}?action=traverse&u={1}&pn={2}'.format(addon_url, url, pn+1), item, True))
- # goto page
- #item = xbmcgui.ListItem(label='[B][I]Goto Page..[/I][/B]')
- #items.append(('{0}?action=goto_pn&u={1}&c={2}&m={3}'.format(addon_url, url, pn, tp), item, True))
- return items
- return []
- def get_parsed_vids(data):
- if 'programs' not in data:
- return []
- img_base_url = 'https://neulionmdnyc-a.akamaihd.net/u/ufc/thumbs/'
- v_list = []
- try:
- name = data['name']
- except KeyError:
- name = ''
- posters = 'Replays' or 'Live'
- for v in data['programs']:
- if 'beginDateTime' in v:
- v_date = v['beginDateTime']
- else:
- v_date = v['releaseDate']
- v_list.append({
- 'id': v['id'],
- 'title': get_title(v),
- 'thumb': img_base_url + v['image'].replace('es', 'ep') if 'Replays' in name or 'Live' in name else img_base_url + v['image'],
- 'airdate': datetime.datetime.strftime(parse_date(v_date, '%Y-%m-%dT%H:%M:%S.%f'), '%Y-%m-%d'),
- 'plot': v['description'],
- 'isLive': v['liveState'] if 'liveState' in v else 0
- })
- return {
- 'criteria': data['criteria'] if 'criteria' in data else None,
- 'paging': data['paging'] if 'paging' in data else None,
- 'items': v_list
- }
- def router(paramstring):
- params = dict(parse_qsl(paramstring))
- if params:
- action = params['action']
- if action == 'listing':
- main()
- elif action == 'play':
- play_video(params['i'], params['t'])
- elif action == 'traverse':
- pn = None
- if 'pn' in params:
- pn = params['pn']
- traverse(params['u'], pn)
- try:
- if 'search' in params['t']:
- keyboard = xbmc.Keyboard()
- keyboard.doModal()
- if keyboard.isConfirmed() and keyboard.getText():
- global query
- query = keyboard.getText()
- url = 'https://www.ufc.tv/search?param={0}'.format(query)
- params['u'] = url
- traverse(params['u'], pn)
- except KeyError:
- pass
- else:
- traverse(params['u'], pn)
- elif action == 'queue':
- load_queue()
- elif action == 'queueSet':
- queue_set(params['i'])
- elif action == 'queueDel':
- queue_del(params['i'])
- elif action == 'goto_pn':
- goto_page(params['u'], params['c'], params['m'])
- else:
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement