The branch, gotham has been updated
via 088f9674f8e595d34e9ce4eb243c13be70fb5874 (commit)
via 4b0579786e8d206da75346f6f3f5c64200788eca (commit)
from 029371d938e47d4cc3118b1dfc140a77885d6f08 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=088f9674f8e595d34e9ce4eb243c13be70fb5874
commit 088f9674f8e595d34e9ce4eb243c13be70fb5874
Author: Martijn Kaijser <[email protected]>
Date: Sun May 18 12:05:34 2014 +0200
[service.subtitles.subscenter] 3.2.1
diff --git a/service.subtitles.subscenter/addon.xml
b/service.subtitles.subscenter/addon.xml
index d1abfc8..f7a6aeb 100644
--- a/service.subtitles.subscenter/addon.xml
+++ b/service.subtitles.subscenter/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="service.subtitles.subscenter"
name="Subscenter.org"
- version="3.1.9"
+ version="3.2.1"
provider-name="CaTz">
<requires>
<import addon="xbmc.python" version="2.14.0"/>
diff --git a/service.subtitles.subscenter/changelog.txt
b/service.subtitles.subscenter/changelog.txt
index 9ac03c8..1f575ea 100644
--- a/service.subtitles.subscenter/changelog.txt
+++ b/service.subtitles.subscenter/changelog.txt
@@ -1,3 +1,10 @@
+3.2.1 - by CaTz 16/05/2014
+- Improvement of RLS title parsing
+
+3.2.0 - by maortal 14/05/2014
+- Performance boost replaced decode with unicode method (should be replaced
again if XBMC moves to python3)
+- Fix android issues with re.sub (duo to usage of python 2.6)
+
3.1.9 - by CaTz 11/05/2014
- Advanced Movie Title / TV-show parsing (includes release)
diff --git a/service.subtitles.subscenter/resources/lib/SUBUtilities.py
b/service.subtitles.subscenter/resources/lib/SUBUtilities.py
index 968bdad..f76987f 100644
--- a/service.subtitles.subscenter/resources/lib/SUBUtilities.py
+++ b/service.subtitles.subscenter/resources/lib/SUBUtilities.py
@@ -27,10 +27,11 @@ __addon__ = xbmcaddon.Addon()
__version__ = __addon__.getAddonInfo('version') # Module version
__scriptname__ = __addon__.getAddonInfo('name')
__language__ = __addon__.getLocalizedString
-__profile__ =
xbmc.translatePath(__addon__.getAddonInfo('profile')).decode("utf-8")
-__temp__ = xbmc.translatePath(os.path.join(__profile__,
'temp')).decode("utf-8")
+__profile__ = unicode(xbmc.translatePath(__addon__.getAddonInfo('profile')),
'utf-8')
+__temp__ = unicode(xbmc.translatePath(os.path.join(__profile__, 'temp')),
'utf-8')
cache = StorageServer.StorageServer(__scriptname__, int(24 * 364 / 2)) # 6
months
+regexHelper = re.compile('\W+', re.UNICODE)
#===============================================================================
# Private utility functions
@@ -42,19 +43,22 @@ def normalizeString(str):
def clean_title(item):
- item["title"] = os.path.splitext(item["title"])[0]
- item["tvshow"] = os.path.splitext(item["tvshow"])[0]
+ item["title"] = unicode(os.path.splitext(item["title"])[0], "utf-8")
+ item["tvshow"] = unicode(os.path.splitext(item["tvshow"])[0], "utf-8")
def parse_rls_title(item):
- groups = re.findall(r"(.*)(?:s|season)(\d{2})(?:e|x|episode|\n)(\d{2})",
item["title"], re.I)
+ item["title"] = regexHelper.sub(' ', item["title"])
+ item["tvshow"] = regexHelper.sub(' ', item["tvshow"])
+
+ groups = re.findall(r"(.*)
(?:s|season|)(\d{1,2})(?:e|episode|x|\n)(\d{1,2})", item["title"], re.I)
if len(groups) == 0:
- groups =
re.findall(r"(.*)(?:s|season)(\d{2})(?:e|x|episode|\n)(\d{2})", item["tvshow"],
re.I)
+ groups = re.findall(r"(.*)
(?:s|season|)(\d{1,2})(?:e|episode|x|\n)(\d{1,2})", item["tvshow"], re.I)
if len(groups) > 0 and len(groups[0]) == 3:
title, season, episode = groups[0]
- item["tvshow"] = re.sub('\W+', ' ', title, 0, re.UNICODE).strip()
+ item["tvshow"] = regexHelper.sub(' ', title).strip()
item["season"] = str(int(season))
item["episode"] = str(int(episode))
log(__scriptname__, "TV Parsed Item: %s" % (item,))
@@ -63,7 +67,7 @@ def parse_rls_title(item):
groups = re.findall(r"(.*)(\d{4})", item["title"], re.I)
if len(groups) > 0 and len(groups[0]) >= 1:
title = groups[0][0]
- item["title"] = re.sub('\W+', ' ', title, 0, re.UNICODE).strip()
+ item["title"] = regexHelper.sub(' ', title).strip()
item["year"] = groups[0][1] if len(groups[0]) == 2 else
item["year"]
log(__scriptname__, "MOVIE Parsed Item: %s" % (item,))
@@ -79,7 +83,7 @@ def log(module, msg):
def get_cache_key(prefix="", str=""):
- str = re.sub('\W+', '_', str.decode("utf-8"), 0, re.UNICODE).lower()
+ str = regexHelper.sub('_', str).lower()
return prefix + str
@@ -108,7 +112,7 @@ class SubscenterHelper:
results = eval(results)
if not results:
- query = {"q": search_string.lower() + "'"} # hack to prevent
redirection in hebrew search
+ query = {"q": search_string.encode("utf-8").lower() + "'"} # hack
to prevent redirection in hebrew search
search_result = self.urlHandler.request(self.BASE_URL +
"/he/subtitle/search/?" + urllib.urlencode(query))
if search_result is None:
return results # return empty set
@@ -129,21 +133,21 @@ class SubscenterHelper:
def _filter_urls(self, urls, search_string, item):
filtered = []
- search_string = search_string.decode("utf-8").lower()
- search_string = re.sub('\W+', ' ', search_string, 0, re.UNICODE)
+ search_string = regexHelper.sub(' ', search_string.lower())
+
h = HTMLParser.HTMLParser()
log(__scriptname__, "urls: %s" % urls)
for i, (content_type, slug, heb_name, eng_name, year) in
enumerate(urls):
- eng_name = eng_name.decode("utf-8")
- heb_name = heb_name.decode("utf-8")
+ eng_name = unicode(eng_name, 'utf-8')
+ heb_name = unicode(heb_name, 'utf-8')
eng_name = h.unescape(eng_name).replace(' ...', '').lower()
heb_name = h.unescape(heb_name).replace(' ...', '')
- eng_name = re.sub('\W+', ' ', eng_name, 0, re.UNICODE)
- heb_name = re.sub('\W+', ' ', heb_name, 0, re.UNICODE)
+ eng_name = regexHelper.sub(' ', eng_name)
+ heb_name = regexHelper.sub(' ', heb_name)
if ((content_type == "movie" and not item["tvshow"]) or
(content_type == "series" and item["tvshow"])) and \
@@ -199,9 +203,9 @@ class SubscenterHelper:
file_name = os.path.basename(file_original_path)
folder_name = os.path.split(os.path.dirname(file_original_path))[-1]
- subsfile = re.sub('\W+', '.', subsfile).lower()
- file_name = re.sub('\W+', '.', file_name).lower()
- folder_name = re.sub('\W+', '.', folder_name).lower()
+ subsfile = re.sub(r'\W+', '.', subsfile).lower()
+ file_name = re.sub(r'\W+', '.', file_name).lower()
+ folder_name = re.sub(r'\W+', '.', folder_name).lower()
log(__scriptname__, "# Comparing Releases:\n [subtitle-rls] %s \n
[filename-rls] %s \n [folder-rls] %s" % (
subsfile, file_name, folder_name))
diff --git a/service.subtitles.subscenter/service.py
b/service.subtitles.subscenter/service.py
index 1fdef75..ab18121 100644
--- a/service.subtitles.subscenter/service.py
+++ b/service.subtitles.subscenter/service.py
@@ -17,10 +17,10 @@ __scriptname__ = __addon__.getAddonInfo('name')
__version__ = __addon__.getAddonInfo('version')
__language__ = __addon__.getLocalizedString
-__cwd__ = xbmc.translatePath(__addon__.getAddonInfo('path')).decode("utf-8")
-__profile__ =
xbmc.translatePath(__addon__.getAddonInfo('profile')).decode("utf-8")
-__resource__ = xbmc.translatePath(os.path.join(__cwd__, 'resources',
'lib')).decode("utf-8")
-__temp__ = xbmc.translatePath(os.path.join(__profile__,
'temp')).decode("utf-8")
+__cwd__ = unicode(xbmc.translatePath(__addon__.getAddonInfo('path')),'utf-8')
+__profile__ =
unicode(xbmc.translatePath(__addon__.getAddonInfo('profile')),'utf-8')
+__resource__ = unicode(xbmc.translatePath(os.path.join(__cwd__, 'resources',
'lib')),'utf-8')
+__temp__ = unicode(xbmc.translatePath(os.path.join(__profile__,
'temp')),'utf-8')
sys.path.append(__resource__)
@@ -96,6 +96,7 @@ def get_params(string=""):
params = get_params()
if params['action'] in ['search', 'manualsearch']:
+ log(__scriptname__, "Version: '%s'" % (__version__))
log(__scriptname__, "action '%s' called" % (params['action']))
if params['action'] == 'manualsearch':
@@ -112,10 +113,10 @@ if params['action'] in ['search', 'manualsearch']:
item['title'] = params['searchstring'] if params['action'] ==
'manualsearch' \
else normalizeString(xbmc.getInfoLabel("VideoPlayer.OriginalTitle")) #
try to get original title
item['file_original_path'] = urllib.unquote(
- xbmc.Player().getPlayingFile().decode('utf-8')) # Full path of a
playing file
+ unicode(xbmc.Player().getPlayingFile(),'utf-8')) # Full path of a
playing file
item['3let_language'] = []
- for lang in urllib.unquote(params['languages']).decode('utf-8').split(","):
+ for lang in
unicode(urllib.unquote(params['languages']),'utf-8').split(","):
item['3let_language'].append(xbmc.convertLanguage(lang,
xbmc.ISO_639_2))
if item['title'] == "":
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=4b0579786e8d206da75346f6f3f5c64200788eca
commit 4b0579786e8d206da75346f6f3f5c64200788eca
Author: Martijn Kaijser <[email protected]>
Date: Sun May 18 12:04:32 2014 +0200
[service.subtitles.subtitle] 4.2.1
diff --git a/service.subtitles.subtitle/addon.xml
b/service.subtitles.subtitle/addon.xml
index 9f1d0f6..2dbb298 100644
--- a/service.subtitles.subtitle/addon.xml
+++ b/service.subtitles.subtitle/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="service.subtitles.subtitle"
name="Subtitle.co.il"
- version="4.1.9"
+ version="4.2.1"
provider-name="CaTz">
<requires>
<import addon="xbmc.python" version="2.14.0"/>
diff --git a/service.subtitles.subtitle/changelog.txt
b/service.subtitles.subtitle/changelog.txt
index b8a0886..60b21f8 100644
--- a/service.subtitles.subtitle/changelog.txt
+++ b/service.subtitles.subtitle/changelog.txt
@@ -1,3 +1,10 @@
+4.2.1 - by CaTz 16/05/2014
+- Improvement of RLS title parsing
+
+4.2.0 - by maortal 14/05/2014
+- Performance boost replaced decode with unicode method (should be replaced
again if XBMC moves to python3)
+- Fix android issues with re.sub (duo to usage of python 2.6)
+
4.1.9 - by CaTz 11/05/2014
- Advanced Movie Title / TV-show parsing (includes release)
diff --git a/service.subtitles.subtitle/resources/lib/SUBUtilities.py
b/service.subtitles.subtitle/resources/lib/SUBUtilities.py
index 8458d60..9981d27 100644
--- a/service.subtitles.subtitle/resources/lib/SUBUtilities.py
+++ b/service.subtitles.subtitle/resources/lib/SUBUtilities.py
@@ -27,10 +27,11 @@ __addon__ = xbmcaddon.Addon()
__version__ = __addon__.getAddonInfo('version') # Module version
__scriptname__ = __addon__.getAddonInfo('name')
__language__ = __addon__.getLocalizedString
-__profile__ =
xbmc.translatePath(__addon__.getAddonInfo('profile')).decode("utf-8")
-__temp__ = xbmc.translatePath(os.path.join(__profile__,
'temp')).decode("utf-8")
+__profile__ = unicode(xbmc.translatePath(__addon__.getAddonInfo('profile')),
'utf-8')
+__temp__ = unicode(xbmc.translatePath(os.path.join(__profile__, 'temp')),
'utf-8')
cache = StorageServer.StorageServer(__scriptname__, int(24 * 364 / 2)) # 6
months
+regexHelper = re.compile('\W+', re.UNICODE)
#===============================================================================
# Private utility functions
@@ -42,19 +43,22 @@ def normalizeString(str):
def clean_title(item):
- item["title"] = os.path.splitext(item["title"])[0]
- item["tvshow"] = os.path.splitext(item["tvshow"])[0]
+ item["title"] = unicode(os.path.splitext(item["title"])[0], "utf-8")
+ item["tvshow"] = unicode(os.path.splitext(item["tvshow"])[0], "utf-8")
def parse_rls_title(item):
- groups = re.findall(r"(.*)(?:s|season)(\d{2})(?:e|x|episode|\n)(\d{2})",
item["title"], re.I)
+ item["title"] = regexHelper.sub(' ', item["title"])
+ item["tvshow"] = regexHelper.sub(' ', item["tvshow"])
+
+ groups = re.findall(r"(.*)
(?:s|season|)(\d{1,2})(?:e|episode|x|\n)(\d{1,2})", item["title"], re.I)
if len(groups) == 0:
- groups =
re.findall(r"(.*)(?:s|season)(\d{2})(?:e|x|episode|\n)(\d{2})", item["tvshow"],
re.I)
+ groups = re.findall(r"(.*)
(?:s|season|)(\d{1,2})(?:e|episode|x|\n)(\d{1,2})", item["tvshow"], re.I)
if len(groups) > 0 and len(groups[0]) == 3:
title, season, episode = groups[0]
- item["tvshow"] = re.sub('\W+', ' ', title, 0, re.UNICODE).strip()
+ item["tvshow"] = regexHelper.sub(' ', title).strip()
item["season"] = str(int(season))
item["episode"] = str(int(episode))
log(__scriptname__, "TV Parsed Item: %s" % (item,))
@@ -63,7 +67,7 @@ def parse_rls_title(item):
groups = re.findall(r"(.*)(\d{4})", item["title"], re.I)
if len(groups) > 0 and len(groups[0]) >= 1:
title = groups[0][0]
- item["title"] = re.sub('\W+', ' ', title, 0, re.UNICODE).strip()
+ item["title"] = regexHelper.sub(' ', title).strip()
item["year"] = groups[0][1] if len(groups[0]) == 2 else
item["year"]
log(__scriptname__, "MOVIE Parsed Item: %s" % (item,))
@@ -74,7 +78,7 @@ def log(module, msg):
def get_cache_key(prefix="", str=""):
- str = re.sub('\W+', '_', str.decode("utf-8"), 0, re.UNICODE).lower()
+ str = regexHelper.sub('_', str).lower()
return prefix + '_' + str
@@ -117,14 +121,13 @@ class SubtitleHelper:
# return list of tv-series from the site`s search
def _search_tvshow(self, item):
search_string = re.split(r'\s\(\w+\)$', item["tvshow"])[0]
- search_string = re.sub('\W+', ' ', search_string.decode("utf-8"), 0,
re.UNICODE).lower().encode("utf-8")
cache_key = get_cache_key("tv-show", search_string)
results = cache.get(cache_key)
if not results:
- query = {"q": search_string.lower(), "cs": "series"}
-
+ query = {"q": search_string.encode("utf-8").lower(), "cs":
"series"}
+ log(__scriptname__, query)
search_result = self.urlHandler.request(self.BASE_URL +
"/browse.php?" + urllib.urlencode(query))
if search_result is None:
return results # return empty set
@@ -145,7 +148,7 @@ class SubtitleHelper:
def _search_movie(self, item):
results = []
search_string = item["title"]
- query = {"q": search_string.lower(), "cs": "movies"}
+ query = {"q": search_string.encode("utf-8").lower(), "cs": "movies"}
if item["year"]:
query["fy"] = int(item["year"]) - 1
query["uy"] = int(item["year"]) + 1
@@ -163,8 +166,7 @@ class SubtitleHelper:
def _filter_urls(self, urls, search_string, item):
filtered = []
- search_string = search_string.decode("utf-8").lower()
- search_string = re.sub('\W+', ' ', search_string, 0, re.UNICODE)
+ search_string = regexHelper.sub(' ', search_string.lower())
h = HTMLParser.HTMLParser()
@@ -172,14 +174,14 @@ class SubtitleHelper:
if not item["tvshow"]:
for (id, heb_name, eng_name, year) in urls:
- eng_name = eng_name.decode("utf-8")
- heb_name = heb_name.decode("utf-8")
+ eng_name = unicode(eng_name, 'utf-8')
+ heb_name = unicode(heb_name, 'utf-8')
eng_name = h.unescape(eng_name).replace(' ...', '').lower()
heb_name = h.unescape(heb_name).replace(' ...', '')
- eng_name = re.sub('\W+', ' ', eng_name, 0, re.UNICODE)
- heb_name = re.sub('\W+', ' ', heb_name, 0, re.UNICODE)
+ eng_name = regexHelper.sub(' ', eng_name)
+ heb_name = regexHelper.sub(' ', heb_name)
if (search_string.startswith(eng_name) or
eng_name.startswith(search_string) or
search_string.startswith(heb_name) or
heb_name.startswith(search_string)) and \
@@ -190,14 +192,14 @@ class SubtitleHelper:
filtered.append({"name": eng_name, "id": id, "year": year})
else:
for (id, heb_name, eng_name) in urls:
- eng_name = eng_name.decode("utf-8")
- heb_name = heb_name.decode("utf-8")
+ eng_name = unicode(eng_name, 'utf-8')
+ heb_name = unicode(heb_name, 'utf-8')
eng_name = h.unescape(eng_name).replace(' ...', '').lower()
heb_name = h.unescape(heb_name).replace(' ...', '')
- eng_name = re.sub('\W+', ' ', eng_name, 0, re.UNICODE)
- heb_name = re.sub('\W+', ' ', heb_name, 0, re.UNICODE)
+ eng_name = regexHelper.sub(' ', eng_name)
+ heb_name = regexHelper.sub(' ', heb_name)
if (search_string.startswith(eng_name) or
eng_name.startswith(search_string) or
search_string.startswith(heb_name) or
heb_name.startswith(search_string)):
@@ -370,7 +372,8 @@ class SubtitleHelper:
def _is_logged_in(self, url):
content = self.urlHandler.request(url)
- if content is not None and (re.search(r'friends\.php', content) or not
re.search(r'login\.php', content)): #check if logged in
+ if content is not None and (
+ re.search(r'friends\.php', content) or not
re.search(r'login\.php', content)): #check if logged in
return content
elif self.login():
return self.urlHandler.request(url)
diff --git a/service.subtitles.subtitle/service.py
b/service.subtitles.subtitle/service.py
index e51e720..1c0e38f 100644
--- a/service.subtitles.subtitle/service.py
+++ b/service.subtitles.subtitle/service.py
@@ -17,10 +17,10 @@ __scriptname__ = __addon__.getAddonInfo('name')
__version__ = __addon__.getAddonInfo('version')
__language__ = __addon__.getLocalizedString
-__cwd__ = xbmc.translatePath(__addon__.getAddonInfo('path')).decode("utf-8")
-__profile__ =
xbmc.translatePath(__addon__.getAddonInfo('profile')).decode("utf-8")
-__resource__ = xbmc.translatePath(os.path.join(__cwd__, 'resources',
'lib')).decode("utf-8")
-__temp__ = xbmc.translatePath(os.path.join(__profile__,
'temp')).decode("utf-8")
+__cwd__ = unicode(xbmc.translatePath(__addon__.getAddonInfo('path')), 'utf-8')
+__profile__ = unicode(xbmc.translatePath(__addon__.getAddonInfo('profile')),
'utf-8')
+__resource__ = unicode(xbmc.translatePath(os.path.join(__cwd__, 'resources',
'lib')), 'utf-8')
+__temp__ = unicode(xbmc.translatePath(os.path.join(__profile__, 'temp')),
'utf-8')
sys.path.append(__resource__)
@@ -93,6 +93,7 @@ def get_params(string=""):
params = get_params()
if params['action'] in ['search', 'manualsearch']:
+ log(__scriptname__, "Version: '%s'" % (__version__))
log(__scriptname__, "action '%s' called" % (params['action']))
if params['action'] == 'manualsearch':
@@ -109,10 +110,10 @@ if params['action'] in ['search', 'manualsearch']:
item['title'] = params['searchstring'] if params['action'] ==
'manualsearch' \
else normalizeString(xbmc.getInfoLabel("VideoPlayer.OriginalTitle"))
# try to get original title
item['file_original_path'] = urllib.unquote(
- xbmc.Player().getPlayingFile().decode('utf-8')) # Full path of a
playing file
+ unicode(xbmc.Player().getPlayingFile(),'utf-8')) # Full path of a
playing file
item['3let_language'] = []
- for lang in urllib.unquote(params['languages']).decode('utf-8').split(","):
+ for lang in
unicode(urllib.unquote(params['languages']),'utf-8').split(","):
item['3let_language'].append(xbmc.convertLanguage(lang,
xbmc.ISO_639_2))
if item['title'] == "":
-----------------------------------------------------------------------
Summary of changes:
service.subtitles.subscenter/addon.xml | 2 +-
service.subtitles.subscenter/changelog.txt | 7 +++
.../resources/lib/SUBUtilities.py | 42 +++++++++-------
service.subtitles.subscenter/service.py | 13 +++--
service.subtitles.subtitle/addon.xml | 2 +-
service.subtitles.subtitle/changelog.txt | 7 +++
.../resources/lib/SUBUtilities.py | 51 ++++++++++---------
service.subtitles.subtitle/service.py | 13 +++--
8 files changed, 80 insertions(+), 57 deletions(-)
hooks/post-receive
--
Scripts
------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons