plugin.video.viervijfzes/resources/lib/modules/menu.py

131 lines
4.2 KiB
Python

# -*- coding: utf-8 -*-
""" Menu module """
from __future__ import absolute_import, division, unicode_literals
from resources.lib import kodiutils
from resources.lib.kodiutils import TitleItem
from resources.lib.viervijfzes import CHANNELS, STREAM_DICT
from resources.lib.viervijfzes.content import Program, Episode
class Menu:
""" Menu code """
def __init__(self):
""" Initialise object """
@staticmethod
def show_mainmenu():
""" Show the main menu """
listing = [
TitleItem(
title=kodiutils.localize(30001), # A-Z
path=kodiutils.url_for('show_catalog'),
art_dict=dict(
icon='DefaultMovieTitle.png',
fanart=kodiutils.get_addon_info('fanart'),
),
info_dict=dict(
plot=kodiutils.localize(30002),
)
),
TitleItem(
title=kodiutils.localize(30007), # TV Channels
path=kodiutils.url_for('show_channels'),
art_dict=dict(
icon='DefaultAddonPVRClient.png',
fanart=kodiutils.get_addon_info('fanart'),
),
info_dict=dict(
plot=kodiutils.localize(30008),
)
),
TitleItem(
title=kodiutils.localize(30009), # Search
path=kodiutils.url_for('show_search'),
art_dict=dict(
icon='DefaultAddonsSearch.png',
fanart=kodiutils.get_addon_info('fanart'),
),
info_dict=dict(
plot=kodiutils.localize(30010),
)
)
]
kodiutils.show_listing(listing, sort=['unsorted'])
@staticmethod
def generate_titleitem(item):
""" Generate a TitleItem based on a Program or Episode.
:type item: Union[Program, Episode]
:rtype TitleItem
"""
art_dict = {
'thumb': item.cover,
'cover': item.cover,
}
info_dict = {
'title': item.title,
'plot': item.description,
'studio': CHANNELS.get(item.channel, {}).get('studio_icon'),
'aired': item.aired.strftime('%Y-%m-%d') if item.aired else None,
}
prop_dict = {}
#
# Program
#
if isinstance(item, Program):
art_dict.update({
'fanart': item.background,
})
info_dict.update({
'mediatype': None,
'season': len(item.seasons) if item.seasons else None,
})
if isinstance(item.episodes, list) and not item.episodes:
# We know that we don't have episodes
title = '[COLOR gray]' + item.title + '[/COLOR]'
else:
# We have episodes, or we don't know it
title = item.title
return TitleItem(title=title,
path=kodiutils.url_for('show_catalog_program', channel=item.channel, program=item.path),
art_dict=art_dict,
info_dict=info_dict)
#
# Episode
#
if isinstance(item, Episode):
art_dict.update({
'fanart': item.cover,
})
info_dict.update({
'mediatype': 'episode',
'tvshowtitle': item.program_title,
'duration': item.duration,
'season': item.season,
'episode': item.number,
'aired': item.aired.strftime('%Y-%m-%d'),
})
stream_dict = STREAM_DICT.copy()
stream_dict.update({
'duration': item.duration,
})
return TitleItem(title=info_dict['title'],
path=kodiutils.url_for('play', uuid=item.uuid),
art_dict=art_dict,
info_dict=info_dict,
stream_dict=stream_dict,
prop_dict=prop_dict,
is_playable=True)
raise Exception('Unknown video_type')