The branch, gotham has been updated
       via  b3e2a04e7ea5fa48e91ce9fc7d3982bb0c1dcaf2 (commit)
      from  d87f6e8278ee85be93a416a9a61709e30c4b4e97 (commit)

- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=b3e2a04e7ea5fa48e91ce9fc7d3982bb0c1dcaf2

commit b3e2a04e7ea5fa48e91ce9fc7d3982bb0c1dcaf2
Author: Martijn Kaijser <mcm.kaij...@gmail.com>
Date:   Wed Aug 20 18:13:19 2014 +0200

    [service.subtitles.supersubtitles] 0.0.15

diff --git a/service.subtitles.supersubtitles/addon.xml 
b/service.subtitles.supersubtitles/addon.xml
index 064f20f..1966a69 100644
--- a/service.subtitles.supersubtitles/addon.xml
+++ b/service.subtitles.supersubtitles/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="service.subtitles.supersubtitles"
        name="Super Subtitles"
-       version="0.0.12"
+       version="0.0.15"
        provider-name="fape">
   <requires>
     <import addon="xbmc.python" version="2.14.0"/>
diff --git a/service.subtitles.supersubtitles/changelog.txt 
b/service.subtitles.supersubtitles/changelog.txt
index ce8c1cd..ef36688 100644
--- a/service.subtitles.supersubtitles/changelog.txt
+++ b/service.subtitles.supersubtitles/changelog.txt
@@ -1,3 +1,14 @@
+0.0.15
+- same titled tvshow support
+- small fixes
+
+0.0.14
+- use preferred language for sorting (helix only)
+
+0.0.13
+- season pack handling
+- search and download improvements
+
 0.0.12
 - filename character encoding fix in url
 - more sophisticated exception handling
diff --git 
a/service.subtitles.supersubtitles/resources/language/English/strings.po 
b/service.subtitles.supersubtitles/resources/language/English/strings.po
index 6d057bf..d295f56 100644
--- a/service.subtitles.supersubtitles/resources/language/English/strings.po
+++ b/service.subtitles.supersubtitles/resources/language/English/strings.po
@@ -21,3 +21,7 @@ msgstr ""
 msgctxt "#32502"
 msgid "Manual search not supported"
 msgstr ""
+
+msgctxt "#32503"
+msgid "Season pack"
+msgstr ""
diff --git a/service.subtitles.supersubtitles/service.py 
b/service.subtitles.supersubtitles/service.py
index 5bc7eab..94c329d 100644
--- a/service.subtitles.supersubtitles/service.py
+++ b/service.subtitles.supersubtitles/service.py
@@ -39,7 +39,7 @@ __temp__ = xbmc.translatePath(os.path.join(__profile__, 
'temp')).decode("utf-8")
 BASE_URL = 'http://www.feliratok.info/index.php'
 
 TAGS = [
-    'WEB\-DL',
+    'WEB-DL',
     'PROPER',
     'REPACK'
 ]
@@ -186,36 +186,42 @@ def notification(id):
     )
 
 
-def get_showid(item):
-    ret = None
-    qparams = {'action': 'autoname', 'nyelv': '0', 'term': item['tvshow']}
-    datas = query_data(qparams)
-    if datas:
-        if item['year']:
-            year = str(item['year'])
-            for data in datas:
-                if year in data['name']:
-                    ret = data['ID']
-                    break
-        else:
-            ret = datas[0]['ID']
-
-    if ret and '-100' in ret:
-        ret = None
+def get_showids(item):
+    ret = []
+    pattern = r'^(?P<term>[^\(]*)(\s+\((\w{2,3})\))?$'
+    match = re.search(pattern, item['tvshow'], re.I)
+    if match:
+        term = match.group('term')
+        qparams = {'action': 'autoname', 'nyelv': '0', 'term': term}
+        datas = query_data(qparams)
+        if datas:
+            if item['year']:
+                year = str(item['year'])
+                for data in datas:
+                    if year in data['name']:
+                        ret.append(data['ID'])
+                        break
+            else:
+                ret = map(lambda x: x['ID'], datas)
+
+        if '-100' in ret:
+            ret = []
+
+    ret.sort(reverse=True)
 
     return ret
 
 
 def convert(item):
-    ret = {'filename': item['fnev'], 'name': item['nev'], 'language_hun': 
item['language'], 'id': item['felirat'],
-           'uploader': item['feltolto'], 'hearing': False, 'language_eng': 
lang_hun2eng(item['language'])}
+    ret = {'filename': item['fnev'], 'name': item['nev'].strip(), 
'language_hun': item['language'], 'id': item['felirat'],
+           'uploader': item['feltolto'].strip(), 'hearing': False, 
'language_eng': lang_hun2eng(item['language'])}
 
     score = int(item['pontos_talalat'], 2)
     ret['score'] = score
     ret['rating'] = str(score * 5 / 7)
     ret['sync'] = score >= 6
     ret['flag'] = xbmc.convertLanguage(ret['language_eng'], xbmc.ISO_639_1)
-    ret['seasonpack'] = bool(item['evadpakk'])
+    ret['seasonpack'] = item['evadpakk'] == '1'
 
     return ret
 
@@ -239,21 +245,21 @@ def remove_duplications(items):
     return ret.values()
 
 
-def search_subtitles(item):
-    if not item['season'] and not item['episode']:
-        debuglog("No season or episode info found for %s" % item['tvshow'])
-        return None
+def convert_and_filter(items, episode):
+    data = filter(lambda x: int(x['ep']) == int(item['episode']) or 
x['evadpakk'] == '1', items)
+    data = map(convert, data)
+    data = filter(lambda x: x['language_eng'] in item['languages'], data)
+    data = remove_duplications(data)
+    return data
 
-    showid = get_showid(item)
-    if not showid:
-        debuglog("No id found for %s" % item['tvshow'])
-        return None
 
-    qparams = {'action': 'xbmc', 'sid': showid, 'ev': item['season'], 'rtol': 
item['episode']};
+def search_subtitles_for_show(item, showid):
+    #qparams = {'action': 'xbmc', 'sid': showid, 'ev': item['season'], 'rtol': 
item['episode']};
+    qparams = {'action': 'xbmc', 'sid': showid, 'ev': item['season']}
 
     set_param_if_filename_contains(item, qparams, 'relj', TAGS)
     set_param_if_filename_contains(item, qparams, 'relf', QUALITIES)
-    set_param_if_filename_contains(item, qparams, 'relr', RELEASERS)
+    releaser = set_param_if_filename_contains(item, qparams, 'relr', RELEASERS)
 
     data = query_data(qparams)
 
@@ -265,15 +271,31 @@ def search_subtitles(item):
     if type(data) is dict:
         data = data.values()
 
-    searchlist = []
-    for st in data:
-        converted = convert(st)
-        if converted['language_eng'] in item['languages']:
-            searchlist.append(converted)
+    searchlist = convert_and_filter(data, item['episode'])
+
+    searchlist.sort(key=lambda x: (x['score'], x['language_eng'] == 
item['preferredlanguage'], x['language_eng'],
+                                   releaser.lower() in x['filename'].lower() 
if releaser else x['filename']),
+                    reverse=True)
+
+    return searchlist
+
+
+def search_subtitles(item):
+    if not item['season'] and not item['episode']:
+        debuglog("No season or episode info found for %s" % item['tvshow'])
+        return None
 
-    searchlist = remove_duplications(searchlist)
+    showids = get_showids(item)
+    if not showids:
+        debuglog("No ids found for %s" % item['tvshow'])
+        return None
+
+    searchlist = []
+    for showid in showids:
+        subtitles = search_subtitles_for_show(item, showid)
+        if subtitles:
+            searchlist.extend(subtitles)
 
-    searchlist.sort(key=lambda k: (k['score'], k['language_eng']), 
reverse=True)
     return searchlist
 
 
@@ -287,6 +309,10 @@ def search(item):
             index += 1
             #label="%s | %s | %s"%(it['name'], it['filename'], it['uploader'])
             label = "%s [%s]" % (it['filename'], it['uploader'])
+
+            if it['seasonpack']:
+                label += (' (%s)' % (__language__(32503)))
+
             listitem = xbmcgui.ListItem(label=it['language_eng'],
                                         label2=label,
                                         iconImage=it['rating'],
@@ -314,11 +340,18 @@ def extract(archive):
     basename = os.path.basename(archive).replace('.', '_')
     extracted = os.path.join(__temp__, basename)
     xbmc.executebuiltin(('XBMC.Extract("%s","%s")' % (archive, 
extracted)).encode('utf-8'), True)
-    return extracted
+
+    if xbmcvfs.exists(extracted):
+        return extracted
+    else:
+        errorlog('Error while extracting %s' % archive)
+        return None
+
 
 
 def download_file(item):
-    localfile = os.path.join(__temp__, item['filename'].decode("utf-8"))
+    filename = urllib.unquote_plus(item['filename'].decode("utf-8")).replace(' 
', '_')
+    localfile = os.path.join(__temp__, filename)
     qparams = {'action': 'letolt', 'felirat': item['id']}
 
     response = send_request(qparams)
@@ -346,19 +379,34 @@ def is_match(item, filename):
     return False
 
 
+def recursive_search(path):
+    (dirs, files) = xbmcvfs.listdir(path)
+
+    if files:
+        for file in files:
+            file = os.path.join(path, file.decode('utf-8'))
+            filename = os.path.basename(file)
+            if is_match(item, filename):
+                return file
+
+    if dirs:
+        for dir in dirs:
+            file = recursive_search(os.path.join(path, dir.decode('utf-8')))
+            if file:
+                return file
+
+    return None
+
 def download(item):
     debuglog(item)
     subtitle = None
     downloaded = download_file(item)
 
     if is_archive(downloaded):
+        debuglog('Downloaded file is an archive')
         extracted = extract(downloaded)
-        for file in xbmcvfs.listdir(extracted)[1]:
-            file = os.path.join(extracted, file.decode('utf-8'))
-            filename = os.path.basename(file)
-            if is_match(item, filename):
-                subtitle = file
-                break
+        if extracted:
+            subtitle = recursive_search(extracted)
     else:
         subtitle = downloaded
 
@@ -448,10 +496,9 @@ params = get_params()
 debuglog(params)
 
 if params['action'] == 'search':
-    debuglog("action 'search' called")
     item = {'temp': False, 'rar': False, 'stack': False, 'year': 
xbmc.getInfoLabel("VideoPlayer.Year"),
             'title': 
normalize_string(xbmc.getInfoLabel("VideoPlayer.OriginalTitle")),
-            'languages': []}
+            'languages': [], 'preferredlanguage': 
params.get('preferredlanguage')}
 
     for lang in urllib.unquote(params['languages']).decode('utf-8').split(","):
         item['languages'].append(lang)

-----------------------------------------------------------------------

Summary of changes:
 service.subtitles.supersubtitles/addon.xml         |    2 +-
 service.subtitles.supersubtitles/changelog.txt     |   11 ++
 .../resources/language/English/strings.po          |    4 +
 service.subtitles.supersubtitles/service.py        |  141 +++++++++++++-------
 4 files changed, 110 insertions(+), 48 deletions(-)


hooks/post-receive
-- 
Scripts

------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Xbmc-addons mailing list
Xbmc-addons@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to