def get_date_items(channel=None): """Offer a menu to select the TV-guide date""" epg = datetime.now(dateutil.tz.tzlocal()) # Daily EPG information shows information from 6AM until 6AM if epg.hour < 6: epg += timedelta(days=-1) date_items = [] for offset in range(14, -19, -1): day = epg + timedelta(days=offset) label = localize_datelong(day) date = day.strftime('%Y-%m-%d') # Highlight today with context of 2 days entry = find_entry(RELATIVE_DATES, 'offset', offset) if entry: date_name = localize(entry.get('msgctxt')) if entry.get('permalink'): date = entry.get('id') if offset == 0: label = '[COLOR={highlighted}][B]{name}[/B], {date}[/COLOR]'.format( highlighted=themecolour('highlighted'), name=date_name, date=label) else: label = '[B]{name}[/B], {date}'.format(name=date_name, date=label) plot = '[B]{datelong}[/B]'.format(datelong=localize_datelong(day)) # Show channel list or channel episodes if channel: path = url_for('tvguide', date=date, channel=channel) else: path = url_for('tvguide', date=date) cache_file = 'schedule.{date}.json'.format(date=date) date_items.append( TitleItem( label=label, path=path, art_dict=dict(thumb='DefaultYear.png'), info_dict=dict(plot=plot), context_menu=[( localize(30413), # Refresh menu 'RunPlugin(%s)' % url_for('delete_cache', cache_file=cache_file))], )) return date_items
def get_channel_items(self, date=None, channel=None): """Offer a menu to select the channel""" if date: now = datetime.now(dateutil.tz.tzlocal()) epg = self.parse(date, now) datelong = localize_datelong(epg) channel_items = [] for chan in CHANNELS: # Only some channels are supported if not chan.get('has_tvguide'): continue # If a channel is requested, stop processing if it is no match if channel and channel != chan.get('name'): continue art_dict = {} # Try to use the white icons for thumbnails (used for icons as well) if has_addon('resource.images.studios.white'): art_dict[ 'thumb'] = 'resource://resource.images.studios.white/{studio}.png'.format( **chan) else: art_dict['thumb'] = 'DefaultTags.png' if date: label = chan.get('label') path = url_for('tvguide', date=date, channel=chan.get('name')) plot = '[B]%s[/B]\n%s' % (datelong, localize(30302, **chan)) else: label = '[B]%s[/B]' % localize(30303, **chan) path = url_for('tvguide_channel', channel=chan.get('name')) plot = '%s\n\n%s' % (localize( 30302, **chan), self.live_description(chan.get('name'))) context_menu = [( localize(30413), # Refresh menu 'RunPlugin(%s)' % url_for('delete_cache', cache_file='channel.{channel}.json'.format( channel=chan.get('name'))), )] channel_items.append( TitleItem( label=label, path=path, art_dict=art_dict, context_menu=context_menu, info_dict=dict(plot=plot, studio=chan.get('studio')), )) return channel_items
def get_plot(self, api_data, season=False, date=None): """Get plot string from single item json api data""" from datetime import datetime import dateutil.parser import dateutil.tz # VRT NU Search API if api_data.get('type') == 'episode': if season is not False: plot = html_to_kodi(api_data.get('programDescription', '')) # Add additional metadata to plot plot_meta = '' if api_data.get('allowedRegion') == 'BE': plot_meta += localize(30201) + '\n\n' # Geo-blocked plot = '%s[B]%s[/B]\n%s' % (plot_meta, api_data.get('program'), plot) return colour(plot) # Add additional metadata to plot plot_meta = '' # Only display when a video disappears if it is within the next 3 months if api_data.get('assetOffTime'): offtime = dateutil.parser.parse(api_data.get('assetOffTime')) # Show the remaining days/hours the episode is still available if offtime: now = datetime.now(dateutil.tz.tzlocal()) remaining = offtime - now if remaining.days / 365 > 5: pass # If it is available for more than 5 years, do not show elif remaining.days / 365 > 2: plot_meta += localize( 30202, years=int(remaining.days / 365)) # X years remaining elif remaining.days / 30.5 > 3: plot_meta += localize( 30203, months=int(remaining.days / 30.5)) # X months remaining elif remaining.days > 1: plot_meta += localize( 30204, days=remaining.days) # X days to go elif remaining.days == 1: plot_meta += localize(30205) # 1 day to go elif remaining.seconds // 3600 > 1: plot_meta += localize(30206, hours=remaining.seconds // 3600) # X hours to go elif remaining.seconds // 3600 == 1: plot_meta += localize(30207) # 1 hour to go else: plot_meta += localize(30208, minutes=remaining.seconds // 60) # X minutes to go if api_data.get('allowedRegion') == 'BE': if plot_meta: plot_meta += ' ' plot_meta += localize(30201) # Geo-blocked # Add product placement if api_data.get('productPlacement') is True: if plot_meta: plot_meta += ' ' plot_meta += '[B]PP[/B]' # Add film rating rating = self.get_mpaa(api_data) if rating: if plot_meta: plot_meta += ' ' plot_meta += '[B]%s[/B]' % rating plot = html_to_kodi(api_data.get('description', '')) if plot_meta: plot = '%s\n\n%s' % (plot_meta, plot) permalink = shorten_link( api_data.get('permalink')) or api_data.get('externalPermalink') if permalink and get_setting_bool('showpermalink', default=False): plot = '%s\n\n[COLOR={highlighted}]%s[/COLOR]' % (plot, permalink) return colour(plot) # VRT NU Suggest API if api_data.get('type') == 'program': plot = unescape(api_data.get('description', '???')) # permalink = shorten_link(api_data.get('programUrl')) # if permalink and get_setting_bool('showpermalink', default=False): # plot = '%s\n\n[COLOR={highlighted}]%s[/COLOR]' % (plot, permalink) return colour(plot) # VRT NU Schedule API (some are missing vrt.whatson-id) if api_data.get('vrt.whatson-id') or api_data.get('startTime'): now = datetime.now(dateutil.tz.tzlocal()) epg = self.parse(date, now) plot = '[B]{datelong}[/B]\n{start} - {end}\n\n{description}'.format( datelong=localize_datelong(epg), start=api_data.get('start'), end=api_data.get('end'), description=html_to_kodi(api_data.get('description', '')), ) return colour(plot) # Not Found return ''
def get_plot(self, api_data, season=False, date=None): ''' Get plot string from single item json api data ''' from datetime import datetime import dateutil.parser import dateutil.tz # VRT NU Search API if api_data.get('type') == 'episode': if season: plot = statichelper.convert_html_to_kodilabel( api_data.get('programDescription')) # Add additional metadata to plot plot_meta = '' if api_data.get('allowedRegion') == 'BE': plot_meta += localize(30201) + '\n\n' # Geo-blocked plot = '%s[B]%s[/B]\n%s' % (plot_meta, api_data.get('program'), plot) return plot # Add additional metadata to plot plot_meta = '' # Only display when a video disappears if it is within the next 3 months if api_data.get('assetOffTime'): offtime = dateutil.parser.parse(api_data.get('assetOffTime')) # Show the remaining days/hours the episode is still available if offtime: now = datetime.now(dateutil.tz.tzlocal()) remaining = offtime - now if remaining.days / 365 > 5: pass # If it is available for more than 5 years, do not show elif remaining.days / 365 > 2: plot_meta += localize( 30202, years=int(remaining.days / 365)) # X years remaining elif remaining.days / 30.5 > 3: plot_meta += localize( 30203, months=int(remaining.days / 30.5)) # X months remaining elif remaining.days > 1: plot_meta += localize( 30204, days=remaining.days) # X days to go elif remaining.days == 1: plot_meta += localize(30205) # 1 day to go elif remaining.seconds // 3600 > 1: plot_meta += localize(30206, hours=remaining.seconds // 3600) # X hours to go elif remaining.seconds // 3600 == 1: plot_meta += localize(30207) # 1 hour to go else: plot_meta += localize(30208, minutes=remaining.seconds // 60) # X minutes to go if api_data.get('allowedRegion') == 'BE': if plot_meta: plot_meta += ' ' plot_meta += localize(30201) # Geo-blocked plot = statichelper.convert_html_to_kodilabel( api_data.get('description')) if plot_meta: plot = '%s\n\n%s' % (plot_meta, plot) permalink = statichelper.shorten_link( api_data.get('permalink')) or api_data.get('externalPermalink') if permalink and get_setting('showpermalink', 'false') == 'true': plot = '%s\n\n[COLOR yellow]%s[/COLOR]' % (plot, permalink) return plot # VRT NU Suggest API if api_data.get('type') == 'program': plot = statichelper.unescape(api_data.get('description', '???')) # permalink = statichelper.shorten_link(api_data.get('programUrl')) # if permalink and get_setting('showpermalink', 'false') == 'true': # plot = '%s\n\n[COLOR yellow]%s[/COLOR]' % (plot, permalink) return plot # VRT NU Schedule API (some are missing vrt.whatson-id) if api_data.get('vrt.whatson-id') or api_data.get('startTime'): title = api_data.get('title') now = datetime.now(dateutil.tz.tzlocal()) epg = self.parse(date, now) datelong = localize_datelong(epg) start = api_data.get('start') end = api_data.get('end') plot = '[B]%s[/B]\n%s\n%s - %s' % (title, datelong, start, end) return plot # Not Found return ''