summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTzafrir Cohen <tzafrir@cohens.org.il>2017-11-29 16:38:07 +0200
committerTzafrir Cohen <tzafrir@cohens.org.il>2017-11-30 09:01:19 +0200
commitcaf4f64a096bddeb2abf7ae263e9802f665a26ad (patch)
tree27b16aa71da8305407a4cc640397822eae6d57f0
parent3cfeeb935ddc06ab0680529bbd3c3ffcfc4c129b (diff)
Initial audio menu with some podcasts
So far only first 8 podcasts that are shown on the Podcast page.
-rw-r--r--default.py102
1 files 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")