summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--default.py30
1 files changed, 22 insertions, 8 deletions
diff --git a/default.py b/default.py
index 460abf3..3a647e7 100644
--- a/default.py
+++ b/default.py
@@ -67,6 +67,15 @@ class Page:
.format(self.base_url, self.addon_handle, self.mode,
self.content_type)
+ def build_page(self, page_list, isFolder=True):
+ """ Creates a complete page from a list of items (title, url_data) """
+ for item in page_list:
+ title, url_data = item
+ url = self.build_url(url_data)
+ li = xbmcgui.ListItem(title)
+ self.add_directory_item(url=url, listitem=li, isFolder=isFolder)
+ self.end_directory()
+
def read_url(url):
cache_id = PLUGIN_NAME + '.url.' + url
@@ -95,23 +104,28 @@ def get_show_title(base_url, path):
def video_top_menu(page, name):
""" Display a menu of all the TV shows """
+ trace("Show top menu for " + name)
+ cache_id = PLUGIN_NAME + '.toppage.' + name
+ cached_items = SiteCache.get(cache_id)
+ if cached_items:
+ page.build_page(cached_items)
+ return
+
+ trace("Show top menu for " + name + ": no cached copy")
tvshows_url = KAN_URL + "/video/{}.aspx".format(name)
main_page = read_url(tvshows_url)
parsed = BeautifulSoup(main_page, "html.parser")
anchors = parsed.find_all('a',
class_="program_category_link w-inline-block")
trace("got anchors: " + str(len(anchors)))
+ items = []
for a in anchors:
path = a.get('href')
show_id = re.sub('.*=', '', path)
- #trace("Checking link to " + path)
title = get_show_title(KAN_URL, path)
- url = page.build_url({'mode': 'show', 'id': show_id})
- trace("Item: URL: {}, title: {}.".format(url, title.encode('utf8')))
- li = xbmcgui.ListItem(title)
- page.add_directory_item(url=url, listitem=li, isFolder=True,
- totalItems=len(anchors))
- page.end_directory()
+ items.append((title, {'mode': 'show', 'id': show_id}))
+ page.build_page(items)
+ SiteCache.set(cache_id, items, expiration=datetime.timedelta(days=1))
def show_menu(page):
@@ -130,7 +144,6 @@ def show_menu(page):
title = titles[0].string
iframe = item.find_all('iframe')[0]
youtube_url = iframe['src']
- #trace("Youtube URL: {}.".format(youtube_url))
youtube_id = re.sub('.*/embed/([0-9A-Za-z]+)(\?.*)?', r'\1', youtube_url)
trace("Add link for ID {} ({}).".format(youtube_id, title.encode('utf-8')))
url = 'plugin://plugin.video.youtube/play/?video_id={}'.format(youtube_id)
@@ -173,6 +186,7 @@ def main():
page.placeholder_folder(name)
else:
trace("No handler for mode '{}'".format(mode))
+ trace("Done showing page")
if __name__ == '__main__':