diff options
Diffstat (limited to 'plugin.video.dazn/resources/lib/parser.py')
-rw-r--r-- | plugin.video.dazn/resources/lib/parser.py | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/plugin.video.dazn/resources/lib/parser.py b/plugin.video.dazn/resources/lib/parser.py new file mode 100644 index 0000000..55d70c7 --- /dev/null +++ b/plugin.video.dazn/resources/lib/parser.py @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- + +from items import Items +from rails import Rails +from tiles import Tiles +from playback import Playback +from context import Context + +class Parser: + + def __init__(self, plugin): + self.plugin = plugin + self.items = Items(self.plugin) + + def rails_items(self, data, id_): + if id_ == 'home': + epg = { + 'mode': 'epg', + 'title': self.plugin.get_string(30212), + 'plot': 'Schedule', + 'params': 'today', + } + epg['cm'] = Context(self.plugin).highlights(epg, mode='epg_highlights') + self.items.add_item(epg) + for i in data.get('Rails', []): + item = Rails(self.plugin, i).item + if item.get('id', '') == 'CatchUp': + item['cm'] = Context(self.plugin).highlights(item, mode='rail_highlights') + self.items.add_item(item) + self.items.list_items() + + def rail_items(self, data, mode, list=True): + highlights = True if 'highlights' in mode else False + focus = data.get('StartPosition', False) + for i in data.get('Tiles', []): + context = Context(self.plugin) + item = Tiles(self.plugin, i).item + if highlights: + if item['type'] == 'Highlights': + item['cm'] = context.goto(item) + self.items.add_item(item) + elif item.get('related', []): + for i in item['related']: + if i.get('Videos', []): + _item = Tiles(self.plugin, i).item + _item['cm'] = context.goto(_item) + self.items.add_item(_item) + else: + if item.get('related', []): + cm_items = [] + for i in item['related']: + if i.get('Videos', []): + cm_items.append(Tiles(self.plugin, i).item) + context.related(cm_items) + item['cm'] = context.goto(item) + self.items.add_item(item) + if list: + self.items.list_items(focus) + + def epg_items(self, data, params, mode): + update = False if params == 'today' else True + if data.get('Date'): + date = self.plugin.epg_date(data['Date']) + cm = Context(self.plugin).epg_date() + + def date_item(day): + return { + 'mode': mode, + 'title': '{0} ({1})'.format(self.plugin.get_resource(day.strftime('%A')), day.strftime(self.plugin.date_format)), + 'plot': '{0} ({1})'.format(self.plugin.get_resource(date.strftime('%A')), date.strftime(self.plugin.date_format)), + 'params': day, + 'cm': cm + } + + self.items.add_item(date_item(self.plugin.get_prev_day(date))) + self.rail_items(data, mode, list=False) + self.items.add_item(date_item(self.plugin.get_next_day(date))) + self.items.list_items(upd=update) + + def playback(self, data, name=False, context=False): + self.items.play_item(Playback(data), name, context) |