The branch, dharma has been updated
via 935e74392ce34808df38bf49ef505d4dd7efc84f (commit)
from ee6d729e3a96894ee3be149254e4d56e7271b2bd (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=935e74392ce34808df38bf49ef505d4dd7efc84f
commit 935e74392ce34808df38bf49ef505d4dd7efc84f
Author: amet <[email protected]>
Date: Fri Nov 18 01:15:38 2011 +0400
[script.xbmc.subtitles] -v 2.5.14
2.5.14
- fixed searching for some tvshows in Titulky.com service, thx Libor
2.5.13
- fixed: Turkish translation, thx queeup
diff --git a/script.xbmc.subtitles/addon.xml b/script.xbmc.subtitles/addon.xml
index f88995a..865d476 100644
--- a/script.xbmc.subtitles/addon.xml
+++ b/script.xbmc.subtitles/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="script.xbmc.subtitles"
name="XBMC Subtitles"
- version="2.5.12"
+ version="2.5.14"
provider-name="Amet, mr_blobby">
<requires>
<import addon="xbmc.python" version="1.0"/>
diff --git a/script.xbmc.subtitles/changelog.txt
b/script.xbmc.subtitles/changelog.txt
index c16b07f..512eec2 100644
--- a/script.xbmc.subtitles/changelog.txt
+++ b/script.xbmc.subtitles/changelog.txt
@@ -1,3 +1,9 @@
+2.5.14
+- fixed searching for some tvshows in Titulky.com service, thx Libor
+
+2.5.13
+- fixed: Turkish translation, thx queeup
+
2.5.12
- fixed: Napisy24pl, thx mrto
diff --git a/script.xbmc.subtitles/resources/language/Turkish/strings.xml
b/script.xbmc.subtitles/resources/language/Turkish/strings.xml
index 0bb5aad..a7cdab7 100644
--- a/script.xbmc.subtitles/resources/language/Turkish/strings.xml
+++ b/script.xbmc.subtitles/resources/language/Turkish/strings.xml
@@ -4,15 +4,15 @@
<!-- Türkçe -->
<string id="610">Ara </string>
- <string id="612">Elle arama dizisi düzenleme</string>
+ <string id="612">El ile arama dizesi gir</string>
<string id="642">%s Altyazı aranıyor</string>
<string id="646">BaÄlanıyor...</string>
<string id="649">Altyazılar indiriliyor...</string>
- <string id="652">Alt yazı dosyası indirildi ve açıldı</string>
+ <string id="652">Altyazı dosyası indirildi ve açıldı</string>
<string id="653">BaÄlantı hatası</string>
<string id="654">Altyazı açma hatası</string>
<string id="655">Yerel altyazı mevcut</string>
- <string id="656">Servis zaman aÅımı süresi içinde yanıt
vermedi</string>
+ <string id="656">Hizmet zaman aÅımı süresi içinde yanıt
vermedi</string>
<string id="657">Altyazı Bulunamadı!</string>
<string id="744">için altyazılar bulundu</string>
<string id="747">Ãst Klasörleri Kullanarak Ara</string>
@@ -24,26 +24,26 @@
<string id="757">Sunucu resim kodunun tekrar girilmesini
gerektiriyor</string>
<string id="758">Lütfen bildirim alanına bakın</string>
<string id="759">Bildirim alanıdaki resim kodunu girin</string>
- <string id="760">Mevcut Servisler</string>
+ <string id="760">Mevcut Hizmetler</string>
<string id="761">Bu altyazıları indirebilmek için giriÅ
yapmalısınız,[CR]eklenti yapılandırmasında ayarlarınızı
doÄrulayın</string>
<string id="762">Eklenti Ayarları</string>
<string id="763">Otomatik olarak ilk 'sync' altyazıyı indir</string>
<!-- Script Settings -->
- <string id="30100">Dilleri Seçiniz</string>
- <string id="30101">Tercih Edilen Dil</string>
+ <string id="30100">Diller</string>
+ <string id="30101">Birincil Dil</string>
<string id="30102">İkincil Dil</string>
- <string id="30103">Servisleri Seçiniz</string>
+ <string id="30103">Hizmetler</string>
<string id="30104">- Podnapisi.net Kullanıcı Adı</string>
<string id="30105">- Podnapisi.net Parola</string>
<string id="30106">GeliÅmiÅ Seçenekler</string>
<string id="30107">Altyazıyı Film Klasörüne İndir</string>
<string id="30108">- Ãzel Altyazı İndirme Yolunu Ayarla</string>
- <string id="30110">Elle Arama Dizisi Girme</string>
+ <string id="30110">El İle Arama Dizesi Gir</string>
<string id="30111">Ãçüncü Dil</string>
- <string id="30113">Varsayılan Film Servisini Seç</string>
- <string id="30114">Varsayılan Dizi Servisini Seç</string>
+ <string id="30113">Varsayılan Film Hizmetini Seç</string>
+ <string id="30114">Varsayılan Dizi Hizmetini Seç</string>
<string id="30118">Sonuç sayfasında dosya adını göster</string>
<string id="30119">Ãst Klasörleri Kullanarak Ara</string>
<string id="30121">Dil Kodunu Dosya Adına Ekle </string>
@@ -55,7 +55,7 @@
<string id="30127">- Itasa Parola</string>
<string id="30128">- Titulky Kullanıcı Adı</string>
<string id="30129">- Titulky Parola</string>
- <string id="30130">EÄer sonuç bulunamazsa mevcut olan sonraki serviste
ara</string>
+ <string id="30130">EÄer sonuç bulunamazsa mevcut olan sonraki hizmette
ara</string>
<string id="30131">Otomatik olarak ilk 'sync' altyazıyı indir</string>
<string id="30132">- LegendasDivx Kullanıcı Adı</string>
<string id="30133">- LegendasDivx Parola</string>
diff --git a/script.xbmc.subtitles/resources/lib/services/Titulky/service.py
b/script.xbmc.subtitles/resources/lib/services/Titulky/service.py
index a1f99be..c8431bc 100644
--- a/script.xbmc.subtitles/resources/lib/services/Titulky/service.py
+++ b/script.xbmc.subtitles/resources/lib/services/Titulky/service.py
@@ -16,36 +16,6 @@ __scriptname__ = sys.modules[ "__main__" ].__scriptname__
__cwd__ = sys.modules[ "__main__" ].__cwd__
__settings__ = sys.modules[ "__main__" ].__settings__
-"""
-<tr class="r1">
- <td><a href="Animal-Farm-96061.htm" >Animal Farm</a></td>
- <td align="center"><a class="fixedTip"
title="Animal.Farm.1954.DVDRip.XViD.iNT-JoLLyRoGeR"><img
src="css/new/verze-release.png" atl="release"/></a></td>
- <td> </td>
- <td>1954</td>
- <td>15.2.2008</td>
- <td align="right">2415</td>
- <td><img alt="CZ" src="css/new/flag-CZ-small.gif" /></td>
- <td>1</td>
- <td align="right">699.16MB</td>
- <td>
- <a href="javascript:void(0)"
onclick="UD('126284');return false;" > DaftXK</a>
- </td>
- </tr>
-
-
-"""
-
-subtitle_pattern='<tr class=\"r[12]*\">\s+<td[^>]*><a
href=\"[\w-]+-(?P<id>\d+).htm\"[
]?>(?P<title>[^<]+)</a></td>\s+?<td[^>]*>(<a?[=
\w\"]+title=\"(?P<sync>[^\"]+)\"><img[^>]+></a>)?</td>\s+?<td[^>]*>(?P<tvshow>[^<]+)</td>\s+<td[^>]*>(?P<year>\d+)</td>\s+<td[^<]+</td>\s+<td[^>]*>(?P<downloads>\d+)</td>\s+<td?[^>]*><img
alt=\"(?P<lang>\w{2})\"[^\>]+></td>\s+<td>(?P<cds>\w+)</td>\s+<td[^>]+>(?P<size>[\w\.]+)MB</td>\s+<td>\s+(<a[^<]+</a>)?(<i[^<]+</i>)?\s+</td>\s+</tr>'
-
-control_image_pattern='(secode.php\?[\w\d=]+)'
-session_id_pattern='secode.php\?PHPSESSID=([\w\d]+)'
-countdown_pattern='CountDown\((\d+)\)'
-
-"""
-<a rel="nofollow" id="downlink"
href="/idown.php?id=48504441">www.titulky.com/idown.php?id=48504441</a>
-"""
-
-sublink_pattern='<a?[= \w\"]+href="([^\"]+)\"'
def search_subtitles( file_original_path, title, tvshow, year, season,
episode, set_temp, rar, lang1, lang2, lang3, stack ): #standard input
# need to filter titles like <Localized movie name> (<Movie name>)
br_index = title.find('(')
@@ -163,6 +133,7 @@ class TitulkyClient(object):
response = urllib2.urlopen(request).read()
log(__name__,'Got response')
return not response.find('BadLogin')>-1
+
def search_subtitles(self, file_original_path, title, tvshow, year,
season, episode, set_temp, rar, lang1, lang2, lang3 ):
url =
self.server_url+'/index.php?'+urllib.urlencode({'Fulltext':title,'FindUser':''})
if not (tvshow == None or tvshow == ''):
@@ -172,7 +143,7 @@ class TitulkyClient(object):
try:
file_size='%.2f' %
(float(os.path.getsize(file_original_path))/(1024*1024))
except:
- file_size=''
+ file_size='-1'
log(__name__,'Opening %s' % (url))
response = urllib2.urlopen(req)
content = response.read()
@@ -180,52 +151,86 @@ class TitulkyClient(object):
log(__name__,'Done')
subtitles_list = []
max_downloads=1
- for matches in re.finditer(subtitle_pattern, content,
re.IGNORECASE | re.DOTALL):
- # print matches.group('id') +' '
+matches.group('title')+' '+ str(matches.group('sync'))+' '+
matches.group('tvshow')+' '+ matches.group('year')+' '+
matches.group('downloads')+' '+ matches.group('lang')+' '+
matches.group('cds')+' '+matches.group('size')
- file_name = matches.group('sync')
- if file_name == None: # if no sync info is found, just
use title instead of None
- file_name = matches.group('title')
- flag_image = "flags/%s.gif" %
(lang2_opensubtitles(matches.group('lang')))
+ log(__name__,'Searching for subtitles')
+ for row in re.finditer('<tr class=\"r(.+?)</tr>', content,
re.IGNORECASE | re.DOTALL):
+ item = {}
+ log(__name__,'New subtitle found')
+ try:
+ item['ID'] = re.search('[^<]+<td[^<]+<a
href=\"[\w-]+-(?P<data>\d+).htm\"',row.group(1),re.IGNORECASE | re.DOTALL
).group('data')
+ item['title'] =
re.search('[^<]+<td[^<]+<a[^>]+>(<div[^>]+>)?(?P<data>[^<]+)',row.group(1),re.IGNORECASE
| re.DOTALL ).group('data')
+ item['sync'] = ''
+ sync_found =
re.search('((.+?)</td>)[^>]+>[^<]*<a(.+?)title=\"(?P<data>[^\"]+)',row.group(1),re.IGNORECASE
| re.DOTALL )
+ if sync_found:
+ item['sync'] = sync_found.group('data')
+ item['tvshow'] =
re.search('((.+?)</td>){2}[^>]+>(?P<data>[^<]+)',row.group(1),re.IGNORECASE |
re.DOTALL ).group('data')
+ item['year'] =
re.search('((.+?)</td>){3}[^>]+>(?P<data>[^<]+)',row.group(1),re.IGNORECASE |
re.DOTALL ).group('data')
+ item['downloads'] =
re.search('((.+?)</td>){5}[^>]+>(?P<data>[^<]+)',row.group(1),re.IGNORECASE |
re.DOTALL ).group('data')
+ item['lang'] =
re.search('((.+?)</td>){6}[^>]+><img
alt=\"(?P<data>\w{2})\"',row.group(1),re.IGNORECASE | re.DOTALL ).group('data')
+ item['numberOfDiscs'] =
re.search('((.+?)</td>){7}[^>]+>(?P<data>[^<]+)',row.group(1),re.IGNORECASE |
re.DOTALL ).group('data')
+ item['size'] =
re.search('((.+?)</td>){8}[^>]+>(?P<data>[\d\.]+)',row.group(1),re.IGNORECASE |
re.DOTALL ).group('data')
+ except:
+ log(__name__,'Exception when parsing subtitle,
all I got is %s' % str(item))
+ continue
+ if item['sync'] == '': # if no sync info is found, just
use title instead of None
+ item['filename'] = item['title']
+ else:
+ item['filename'] = item['sync']
+ item['language_flag'] = "flags/%s.gif" %
(lang2_opensubtitles(item['lang']))
+
sync = False
- matches_sync=matches.group('sync')
- if not matches_sync == None and
file_original_path.find(matches_sync) > -1:
+ if not item['sync'] == '' and
file_original_path.find(item['sync']) > -1:
+ log(__name__,'found sync : filename match')
sync = True
- if file_size==matches.group('size'):
+ if file_size==item['size']:
+ log(__name__,'found sync : size match')
sync = True
+ item['sync'] = sync
+
try:
- downloads = int(matches.group('downloads'))
+ downloads = int(item['downloads'])
if downloads>max_downloads:
max_downloads=downloads
except:
downloads=0
+ item['downloads'] = downloads
+
if not year == '':
- if not matches.group('year') == year:
+ if not item['year'] == year:
+ log(__name__,'year does not match,
ignoring %s' % str(item))
continue
- lang = lang_titulky2xbmclang(matches.group('lang'))
- if lang == lang1 or lang == lang2 or lang == lang3:
- subtitles_list.append( { 'title' :
matches.group('title'), 'year' : matches.group('year'), "filename" : file_name,
'language_name' : lang_titulky2xbmclang(matches.group('lang')), 'ID' :
matches.group('id'), "mediaType" : 'mediaType', "numberOfDiscs" : '1',
"downloads" : downloads, "sync" : sync, "rating" :'0',
"language_flag":flag_image } )
+ lang = lang_titulky2xbmclang(item['lang'])
+
+ item['language_name'] = lang
+ item['mediaType'] = 'mediaType'
+ item['rating'] = '0'
+
+ if lang in [lang1,lang2,lang3]:
+ subtitles_list.append(item)
+ else:
+ log(__name__,'language does not match, ignoring
%s' % str(item))
# computing ratings is based on downloads
for subtitle in subtitles_list:
subtitle['rating'] =
str((subtitle['downloads']*10/max_downloads))
return subtitles_list
+
def get_cannot_download_error(self,content):
if content.find('CHYBA') > -1:
return True
def get_waittime(self,content):
- for matches in re.finditer(countdown_pattern, content,
re.IGNORECASE | re.DOTALL):
+ for matches in re.finditer('CountDown\((\d+)\)', content,
re.IGNORECASE | re.DOTALL):
return int(matches.group(1))
def get_link(self,content):
- for matches in re.finditer(sublink_pattern, content,
re.IGNORECASE | re.DOTALL):
+ for matches in re.finditer('<a?[= \w\"]+href="([^\"]+)\"',
content, re.IGNORECASE | re.DOTALL):
return str(matches.group(1))
def _get_session_id(self,content):
- for matches in re.finditer(session_id_pattern, content,
re.IGNORECASE | re.DOTALL):
+ for matches in re.finditer('secode.php\?PHPSESSID=([\w\d]+)',
content, re.IGNORECASE | re.DOTALL):
return str(matches.group(1))
def get_control_image(self,content):
- for matches in re.finditer(control_image_pattern, content,
re.IGNORECASE | re.DOTALL):
+ for matches in re.finditer('(secode.php\?[\w\d=]+)', content,
re.IGNORECASE | re.DOTALL):
return '/'+str(matches.group(1))
return None
-----------------------------------------------------------------------
Summary of changes:
script.xbmc.subtitles/addon.xml | 2 +-
script.xbmc.subtitles/changelog.txt | 6 +
.../resources/language/Turkish/strings.xml | 22 ++--
.../resources/lib/services/Titulky/service.py | 103 ++++++++++---------
4 files changed, 72 insertions(+), 61 deletions(-)
hooks/post-receive
--
Scripts
------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure
contains a definitive record of customers, application performance,
security threats, fraudulent activity, and more. Splunk takes this
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons