# -*- coding: utf-8 -*- import sys import os import re from operator import itemgetter from ipwww_common import translation, AddMenuEntry, OpenURL, \ CheckLogin, CreateBaseDirectory import xbmc import xbmcgui import xbmcplugin import xbmcaddon import random ADDON = xbmcaddon.Addon(id='plugin.video.iplayerwww') def GetPage(page_url, just_episodes=False): """ Generic Radio page scraper. """ pDialog = xbmcgui.DialogProgressBG() pDialog.create(translation(30319)) html = OpenURL(page_url) total_pages = 1 current_page = 1 page_range = range(1) paginate = re.search(r'
>[/COLOR]" % translation(30320), page_url, 136, '', '', '') #BUG: this should sort by original order but it doesn't (see http://trac.kodi.tv/ticket/10252) xbmcplugin.addSortMethod(int(sys.argv[1]), xbmcplugin.SORT_METHOD_UNSORTED) xbmcplugin.addSortMethod(int(sys.argv[1]), xbmcplugin.SORT_METHOD_VIDEO_TITLE) pDialog.close() def GetEpisodes(url): new_url = 'http://www.bbc.co.uk/programmes/%s/episodes/player' % url GetPage(new_url,True) def AddAvailableLiveStreamItem(name, channelname, iconimage): """Play a live stream based on settings for preferred live source and bitrate.""" providers = [('ak', 'Akamai'), ('llnw', 'Limelight')] location_qualities = {'uk' : ['sbr_vlow', 'sbr_low', 'sbr_med', 'sbr_high'], 'nonuk': ['sbr_vlow', 'sbr_low'] } location_settings = ['uk', 'nonuk'] location = location_settings[int(ADDON.getSetting('radio_location'))] for provider_url, provider_name in providers: qualities = location_qualities[location] max_quality = int(ADDON.getSetting('radio_live_bitrate')) + 1 max_quality = min(len(qualities),max_quality) qualities = qualities[0:max_quality] qualities.reverse() for quality in qualities: url = 'http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/%s/%s/%s/%s.m3u8' % (location, quality, provider_url, channelname) PlayStream(name, url, iconimage, '', '') def AddAvailableLiveStreamsDirectory(name, channelname, iconimage): """Retrieves the available live streams for a channel Args: name: only used for displaying the channel. iconimage: only used for displaying the channel. channelname: determines which channel is queried. """ providers = [('ak', 'Akamai'), ('llnw', 'Limelight')] location_qualities = { 'uk' : ['sbr_vlow', 'sbr_low', 'sbr_med', 'sbr_high'], 'nonuk': ['sbr_vlow', 'sbr_low'] } location_names = {'uk': 'UK', 'nonuk': 'International'} quality_colours = { 'sbr_vlow': 'ffff0000', 'sbr_low': 'ffffa500', 'sbr_med': 'ffffff00', 'sbr_high': 'ff008000' } quality_bitrates = { 'sbr_vlow': '48', 'sbr_low': '96', 'sbr_med': '128', 'sbr_high': '320' } for location in location_qualities.keys(): qualities = location_qualities[location] qualities.reverse() for quality in qualities: for provider_url, provider_name in providers: url = 'http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/%s/%s/%s/%s.m3u8' % (location, quality, provider_url, channelname) title = name + ' - [I][COLOR %s]%s Kbps[/COLOR] [COLOR fff1f1f1]%s[/COLOR] [COLOR ffb4b4b4]%s[/COLOR][/I]' % ( quality_colours[quality], quality_bitrates[quality] , location_names[location], provider_name) AddMenuEntry(title, url, 201, '', '', '') def PlayStream(name, url, iconimage, description, subtitles_url): html = OpenURL(url) check_geo = re.search( '