diff options
Diffstat (limited to 'plugin.video.eurosportplayer/resources/lib/parser.py')
-rw-r--r-- | plugin.video.eurosportplayer/resources/lib/parser.py | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/plugin.video.eurosportplayer/resources/lib/parser.py b/plugin.video.eurosportplayer/resources/lib/parser.py new file mode 100644 index 0000000..f56a128 --- /dev/null +++ b/plugin.video.eurosportplayer/resources/lib/parser.py @@ -0,0 +1,125 @@ +# -*- coding: utf-8 -*- + +from items import Items +from hits import Hits +from sports import Sports +from events import Events +from context import Context + +class Parser: + + def __init__(self, plugin): + self.plugin = plugin + self.items = Items(self.plugin) + + def channel(self, data): + hits = data['data']['Airings'] + for i in hits: + item = Hits(self.plugin, i).item + if item.get('id'): + self.items.add_item(item) + date = self.plugin.epg_date() + prev_date = self.plugin.get_prev_day(date) + self.items.add_item( + { + 'mode': 'epg', + 'title': self.plugin.get_string(30103), + 'plot': self.plugin.get_string(30103), + 'id': date.strftime(self.plugin.date_format), + 'params': prev_date.strftime(self.plugin.date_format) + } + ) + self.items.add_item( + { + 'mode': 'sports', + 'title': self.plugin.get_string(30101), + 'plot': self.plugin.get_string(30102) + } + ) + self.items.add_item( + { + 'mode': 'events', + 'title': self.plugin.get_string(30104), + 'plot': self.plugin.get_string(30104) + } + ) + self.items.list_items(sort=True) + + def sport(self, data): + self.items.add_item( + { + 'mode': 'all_sports', + 'title': self.plugin.get_string(30105).upper(), + 'plot': self.plugin.get_string(30105) + } + ) + hits = data['data']['sports_filter']['list'] + for i in hits: + self.items.add_item(Sports(self.plugin, i).item) + self.items.list_items(sort=True) + + def all_sports(self, data): + hits = data['data']['CategoryAll'] + for i in hits: + item = Sports(self.plugin, i).item + if item.get('thumb') and item.get('id'): + self.items.add_item(item) + self.items.list_items(sort=True) + + def events(self, data): + hits = data['data']['EventPageByLanguage'] + for i in hits: + self.items.add_item(Events(self.plugin, i).item) + self.items.list_items() + + def event(self, data): + media = data['data']['EventPageByContentId']['media'] + for m in media: + hits = m['videos'] + for i in hits: + self.items.add_item(Hits(self.plugin, i, event=True).item) + self.items.list_items() + + def video(self, data, id_): + sport_id = 'sport_{0}'.format(id_) + hits = data['data'][sport_id]['hits'] + for i in hits: + hit = i['hit'] + item = Hits(self.plugin, hit).item + if item.get('id'): + self.items.add_item(item) + self.items.list_items() + + def epg(self, data, prev_date, date): + + def date_item(params, id_): + return { + 'mode': 'epg', + 'title': '{0} {1}'.format(self.plugin.get_resource(id_.strftime('%A')), id_.strftime(self.plugin.date_format)), + 'plot': '{0} {1}'.format(self.plugin.get_resource(self.plugin.epg_date(date).strftime('%A')), self.plugin.epg_date(date).strftime(self.plugin.date_format)), + 'id': id_.strftime(self.plugin.date_format), + 'params': params.strftime(self.plugin.date_format), + 'cm': cm + } + + update = False if date == self.plugin.epg_date().strftime(self.plugin.date_format) else True + cm = Context(self.plugin).epg_date() + + self.items.add_item(date_item(self.plugin.get_prev_day(self.plugin.epg_date(prev_date)), self.plugin.epg_date(prev_date))) + hits = data['data']['Airings'] + hits = sorted(hits, key=lambda k: k.get('startDate')) + for i in hits: + self.items.add_item(Hits(self.plugin, i, epg=True).item) + self.items.add_item(date_item(self.plugin.epg_date(date), self.plugin.get_next_day(self.plugin.epg_date(date)))) + self.items.list_items(upd=update) + + def play(self, data): + if data.get('stream'): + for i in data['stream']: + path = data['stream'][i].replace('desktop','wired50') + break + key = data['license_key'] + self.items.play_item(path, key) + + def license_renewal(self, license_key): + self.items.add_token(license_key) |