From caf4f64a096bddeb2abf7ae263e9802f665a26ad Mon Sep 17 00:00:00 2001 From: Tzafrir Cohen Date: Wed, 29 Nov 2017 16:38:07 +0200 Subject: Initial audio menu with some podcasts So far only first 8 podcasts that are shown on the Podcast page. --- default.py | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 93 insertions(+), 9 deletions(-) diff --git a/default.py b/default.py index 8a82b01..0418cfe 100644 --- a/default.py +++ b/default.py @@ -19,6 +19,7 @@ import urlparse import xbmc import xbmcgui import xbmcplugin +import xml.etree.ElementTree as ET import zlib @@ -50,10 +51,20 @@ class Page: self.addon_handle = int(argv[1]) self.args = urlparse.parse_qs(argv[2][1:]) self.mode = self.args.get('mode', None) - self.content_type = self.args.get('content_type', None) + content_type = self.args.get('content_type', None) + if content_type: + self.content_type = content_type[0] + else: + self.content_type = None + + def is_video(self): + return self.content_type == 'video' + + def is_audio(self): + return self.content_type == 'audio' def build_url(self, query): - #query['addon_handle'] = self.addon_handle + query['content_type'] = self.content_type return self.base_url + '?' + urllib.urlencode(query) def add_directory_item(self, **kwargs): @@ -201,7 +212,51 @@ def show_menu(page): expiration=datetime.timedelta(days=1)) -def main_page(page): +def podcasts_top_menu(page): + tvshows_url = KAN_URL + "/Podcast" + main_page = read_url(tvshows_url) + parsed = BeautifulSoup(main_page, "html.parser") + pod_div = parsed.find('div', id='morePrograms') + pods = pod_div.find_all('div', class_="it_small_pictgroup podcast") + for pod in pods: + title = pod.get('title') + a = pod.find('a') + href = a.get('href') + pod_id = href.split('=')[1] + url = page.build_url({'mode': 'podcast', 'id': pod_id}) + li = xbmcgui.ListItem(title) + page.add_directory_item(url=url, listitem=li, isFolder=True) + page.end_directory() + + +def podcast_menu(page): + pod_id = page.args['id'][0] + pod_url = KAN_URL + "/rss?pid=" + pod_id + main_page = read_url(pod_url) + parsed = ET.fromstring(main_page.encode('utf-8')) + channel = parsed[0] + items = channel.findall('item') + for item in items: + title = item.find('title').text + media_url = item.find('guid').text + url = media_url + li = xbmcgui.ListItem(title) + li.setProperty('IsPlayable','true') + page.add_directory_item(url=url, listitem=li) + page.end_directory() + + +def audio_main_page(page): + url = page.build_url({'mode': 'podcasts', 'name': 'podcasts'}) + li = xbmcgui.ListItem(u'פודקאסטים') + page.add_directory_item(url=url, listitem=li, isFolder=True) + + page.placeholder_item('new-items', u'רדיו') + + page.end_directory() + + +def video_main_page(page): url = page.build_url({'mode': 'shows', 'name': 'programs'}) li = xbmcgui.ListItem(u'תוכניות טלוויזיה') page.add_directory_item(url=url, listitem=li, isFolder=True) @@ -215,16 +270,12 @@ def main_page(page): page.end_directory() -def main(): - page = Page(sys.argv) - - trace(' | '.join(sys.argv)) - trace("{}".format(page)) +def video_main(page): if page.mode is not None: mode = page.mode[0] if page.mode is None: - main_page(page) + video_main_page(page) elif mode == 'shows': video_top_menu(page, page.args['name'][0]) elif mode == 'show': @@ -234,6 +285,39 @@ def main(): page.placeholder_folder(name) else: trace("No handler for mode '{}'".format(mode)) + + +def audio_main(page): + if page.mode is not None: + mode = page.mode[0] + + if page.mode is None: + audio_main_page(page) + elif mode == 'podcasts': + podcasts_top_menu(page) + elif mode == 'podcast': + podcast_menu(page) + elif mode == 'placeholder': + name = page.args['name'][0] + page.placeholder_folder(name) + else: + trace("No handler for mode '{}'".format(mode)) + + +def main(): + trace(' | '.join(sys.argv)) + page = Page(sys.argv) + + trace("{}".format(page)) + trace("Video? " + str(page.is_video()) + ", audio? " + str(page.is_audio())) + + if page.is_audio(): + audio_main(page) + elif page.is_video(): + video_main(page) + else: + page.placeholder_folder("no content type") + trace("Done showing page") -- cgit v1.2.3