summaryrefslogtreecommitdiff
path: root/default.py
diff options
context:
space:
mode:
Diffstat (limited to 'default.py')
-rw-r--r--default.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/default.py b/default.py
index b595dd1..80ff282 100644
--- a/default.py
+++ b/default.py
@@ -7,11 +7,13 @@
# License-Filename: LICENSE
from bs4 import BeautifulSoup
+import datetime
import re
import sys
import urllib
#import urllib2
import requests
+import simplecache
import urlparse
import xbmc
import xbmcgui
@@ -20,7 +22,9 @@ import xbmcplugin
KAN_URL = 'http://www.kan.org.il'
USER_AGENT = 'Kodi' # I'm optimistic
+PLUGIN_NAME = "plugin.video.kan" # FIXME: a better way to get this?
+SiteCache = simplecache.SimpleCache() # FIXME: avoid this global
def trace(msg):
xbmc.log(msg="Tzafrir: " + msg, level=xbmc.LOGNOTICE)
@@ -32,6 +36,7 @@ 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)
def build_url(self, query):
#query['addon_handle'] = self.addon_handle
@@ -58,15 +63,24 @@ class Page:
self.add_directory_item(url=url, listitem=li, isFolder=True)
def __str__(self):
- return "[base_url: {}, addon_handle: {}, mode: {}]".format(
- self.base_url, self.addon_handle, self.mode)
+ return "[base_url: {}, addon_handle: {}, mode: {}, content_type: {}]" \
+ .format(self.base_url, self.addon_handle, self.mode,
+ self.content_type)
def read_url(url):
+ cache_id = PLUGIN_NAME + '.url.' + url
+ cached_read = SiteCache.get(cache_id)
+ if cached_read:
+ return cached_read
+
headers = {'user-agent': 'Kodi/plugin.video.kan/1.0'}
response = requests.get(url, headers=headers)
if response.status_code != 200:
raise IOError("Invalid URL {}".format(url))
+
+ SiteCache.set(cache_id, response.content,
+ expiration=datetime.timedelta(days=1))
return response.content
@@ -140,6 +154,7 @@ def main_page(page):
def main():
page = Page(sys.argv)
+ trace(' | '.join(sys.argv))
trace("{}".format(page))
if page.mode is not None:
mode = page.mode[0]