From e6a9aeda9b1208b55ed3b2315add50178b184d3d Mon Sep 17 00:00:00 2001 From: Mor Sela Date: Sun, 23 Oct 2016 16:56:15 +0300 Subject: [PATCH] now using xbmc sleep functionality --- resources/lib/SubtitleHelper.py | 1 - resources/lib/TorecSubtitlesDownloader.py | 29 +++++++++++++---------- tests/xbmc.py | 10 ++++++++ tests/xbmcaddon.py | 3 +++ 4 files changed, 30 insertions(+), 13 deletions(-) create mode 100644 tests/xbmc.py create mode 100644 tests/xbmcaddon.py diff --git a/resources/lib/SubtitleHelper.py b/resources/lib/SubtitleHelper.py index bed9441..5a4d74a 100644 --- a/resources/lib/SubtitleHelper.py +++ b/resources/lib/SubtitleHelper.py @@ -13,7 +13,6 @@ def log(module, msg): xbmc.log((u"### [%s] - %s" % (module, msg,)).encode('utf-8'), level=xbmc.LOGDEBUG) - print (u"### [%s] - %s" % (module, msg,)).encode('utf-8') def normalize_string(str): return unicodedata.normalize( diff --git a/resources/lib/TorecSubtitlesDownloader.py b/resources/lib/TorecSubtitlesDownloader.py index 4c78d22..1a88965 100644 --- a/resources/lib/TorecSubtitlesDownloader.py +++ b/resources/lib/TorecSubtitlesDownloader.py @@ -3,7 +3,6 @@ import cookielib import datetime import re -import time import urllib import urllib2 import zlib @@ -11,6 +10,7 @@ import bs4 +import xbmc from SubtitleHelper import log class SubtitleOption(object): @@ -109,6 +109,8 @@ def login(self): return username in content class TorecSubtitlesDownloader(FirefoxURLHandler): + MAXIMUM_WAIT_TIME_MSEC = 13 * 1000 + DEFAULT_SEPERATOR = " " BASE_URL = "http://www.xn--9dbf0cd.net" SUBTITLE_PATH = "sub.asp?sub_id=" @@ -191,27 +193,30 @@ def _request_subtitle(self, sub_id): return response.read() def get_download_link(self, sub_id, option_id): - guest_token = self._request_subtitle(sub_id) - - download_link = None - for i in xrange(1, 15): - params = { + guest_token = self._request_subtitle(sub_id) + encoded_params = urllib.urlencode({ "sub_id": sub_id, "code": option_id, "sh": "yes", "guest": guest_token, "timewaited": 13 - } + }) - response = self.opener.open("%s/ajax/sub/downloadun.asp" % self.BASE_URL, urllib.urlencode(params)) + download_link = None + waited_msec = 0.0 + + # Torec website may delay download up to 13 seconds + while (not xbmc.abortRequested) and (waited_msec < self.MAXIMUM_WAIT_TIME_MSEC): + response = self.opener.open("%s/ajax/sub/downloadun.asp" % self.BASE_URL, encoded_params) download_link = response.read() if download_link: break - - time.sleep(1) - - log(__name__, "received link after sleeping %d seconds" % i) + + xbmc.sleep(500) + waited_msec += 500 + + log(__name__, "received link after sleeping %f seconds" % (waited_msec / 1000.0)) return download_link diff --git a/tests/xbmc.py b/tests/xbmc.py new file mode 100644 index 0000000..a0fb433 --- /dev/null +++ b/tests/xbmc.py @@ -0,0 +1,10 @@ +import time + +LOGDEBUG = 0 +abortRequested = False + +def log(message, level): + print(message) + +def sleep(msec): + time.sleep(msec / 1000.0) \ No newline at end of file diff --git a/tests/xbmcaddon.py b/tests/xbmcaddon.py new file mode 100644 index 0000000..c1dbc1f --- /dev/null +++ b/tests/xbmcaddon.py @@ -0,0 +1,3 @@ +class Addon(object): + def getAddonInfo(self, type): + pass