summaryrefslogtreecommitdiff
path: root/plugin.video.dazn/resources/lib/parser.py
blob: 55d70c7949b3df69946f7f252faa12093f93fc03 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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)