The branch, dharma has been updated
via 7673df35695d0bd124249881d42cc7367dd1dc49 (commit)
from 838545c483ab91ff9cbb3c000aacd74251b1b51b (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=7673df35695d0bd124249881d42cc7367dd1dc49
commit 7673df35695d0bd124249881d42cc7367dd1dc49
Author: amet <[email protected]>
Date: Sat Jul 2 13:23:50 2011 +0400
[script.xbmc.subtitles] -v2.5.4
- fixed: OpenSubtitles search
- added: SuperSubtitles service, thx kispaljr and mukka
diff --git a/script.xbmc.subtitles/addon.xml b/script.xbmc.subtitles/addon.xml
index 59131c3..1373a46 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.3"
+ version="2.5.4"
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 3b681e8..b51a35c 100644
--- a/script.xbmc.subtitles/changelog.txt
+++ b/script.xbmc.subtitles/changelog.txt
@@ -1,3 +1,7 @@
+2.5.4
+- fixed: OpenSubtitles search
+- added: SuperSubtitles service, thx kispaljr and mukka
+
2.5.3
- fixed: ordering of OpenSubtitles results, thx to cidus
- fixed: Undertexter, it will now find Swedish subs
diff --git
a/script.xbmc.subtitles/resources/lib/services/OpenSubtitles/os_utilities.py
b/script.xbmc.subtitles/resources/lib/services/OpenSubtitles/os_utilities.py
index af25830..faeb689 100644
--- a/script.xbmc.subtitles/resources/lib/services/OpenSubtitles/os_utilities.py
+++ b/script.xbmc.subtitles/resources/lib/services/OpenSubtitles/os_utilities.py
@@ -1,144 +1,75 @@
# -*- coding: utf-8 -*-
-import sys
import os
+import sys
+import xbmc
import xmlrpclib
from utilities import *
-import xbmc
-from xml.dom import minidom
-import urllib
-_ = sys.modules[ "__main__" ].__language__
+
+_ = sys.modules[ "__main__" ].__language__
+__scriptname__ = sys.modules[ "__main__" ].__scriptname__
BASE_URL_XMLRPC = u"http://api.opensubtitles.org/xml-rpc"
-BASE_URL_HASH =
u"http://www.opensubtitles.org/en/search/sublanguageid-%s/moviebytesize-%s/moviehash-%s/simplexml"
-BASE_URL_NAME =
u"http://www.opensubtitles.com/en/search/sublanguageid-%s/moviename-%s/simplexml"
class OSDBServer:
-###-------------------------- Merge Subtitles All -------------################
-
-
- def mergesubtitles( self ):
- self.subtitles_list = []
- if( len ( self.subtitles_hash_list ) > 0 ):
- for item in self.subtitles_hash_list:
- if item["format"].find( "srt" ) == 0 or item["format"].find(
"sub" ) == 0:
- self.subtitles_list.append( item )
-
-
- if( len ( self.subtitles_list ) > 0 ):
- self.subtitles_list.sort(key=lambda x: [not
x['sync'],x['lang_index']])
-
-###-------------------------- Sort Subtitles -------------################
-
- def sortsubtitles(self, subtitle, hashed, url_base):
+ def mergesubtitles( self ):
+ self.subtitles_list = []
+ if( len ( self.subtitles_hash_list ) > 0 ):
+ for item in self.subtitles_hash_list:
+ if item["format"].find( "srt" ) == 0 or item["format"].find( "sub" )
== 0:
+ self.subtitles_list.append( item )
- filename = movie = lang_name = subtitle_id = lang_id = link = ""
- flag_image = "-.gif"
- lang_index=3
-
- if subtitle.getElementsByTagName("releasename")[0].firstChild:
- filename =
subtitle.getElementsByTagName("releasename")[0].firstChild.data
- if subtitle.getElementsByTagName("format")[0].firstChild:
- format = subtitle.getElementsByTagName("format")[0].firstChild.data
- filename = "%s.%s" % ( filename,format, )
- if subtitle.getElementsByTagName("movie")[0].firstChild:
- movie = subtitle.getElementsByTagName("movie")[0].firstChild.data
- if subtitle.getElementsByTagName("language")[0].firstChild:
- lang_name =
subtitle.getElementsByTagName("language")[0].firstChild.data
- if subtitle.getElementsByTagName("idsubtitle")[0].firstChild:
- subtitle_id =
subtitle.getElementsByTagName("idsubtitle")[0].firstChild.data
- if subtitle.getElementsByTagName("iso639")[0].firstChild:
- lang_id =
subtitle.getElementsByTagName("iso639")[0].firstChild.data
- flag_image = "flags/%s.gif" % (lang_id,)
- lang_index=0
- for user_lang_id in self.langs_ids:
- if user_lang_id == lang_id:
- break
- lang_index+=1
- if subtitle.getElementsByTagName("download")[0].firstChild:
- link = subtitle.getElementsByTagName("download")[0].firstChild.data
- link = url_base + link
- if subtitle.getElementsByTagName("subrating")[0].firstChild:
- rating =
subtitle.getElementsByTagName("subrating")[0].firstChild.data
-
-
self.subtitles_hash_list.append({'lang_index':lang_index,'filename':filename,'link':link,'language_name':lang_name,'language_id':lang_id,'language_flag':flag_image,'movie':movie,"ID":subtitle_id,"rating":str(
int( rating[0] ) ),"format":format,"sync":hashed})
-
-
- def get_results ( self, search_url ):
- socket = urllib.urlopen( search_url )
- log( __name__ , "Search url [ %s ]" % (search_url,))
- result = socket.read()
- socket.close()
- return result
+ if( len ( self.subtitles_list ) > 0 ):
+ self.subtitles_list.sort(key=lambda x: [not x['sync'],x['lang_index']])
-###-------------------------- Opensubtitles Search
-------------################
-
+ def searchsubtitles( self, srch_string , lang1,lang2,lang3,hash_search,
_hash = "000000000", size = "000000000"):
+ msg = ""
+ lang_index = 3
+ searchlist = []
+ self.subtitles_hash_list = []
+ self.langs_ids = [toOpenSubtitles_two(lang1),
toOpenSubtitles_two(lang2), toOpenSubtitles_two(lang3)]
+
+ language = toOpenSubtitlesId(lang1)
+ if lang1 != lang2:
+ language += "," + toOpenSubtitlesId(lang2)
+ if lang3 != lang1 and lang3 != lang2:
+ language += "," + toOpenSubtitlesId(lang3)
+
+ self.server = xmlrpclib.Server( BASE_URL_XMLRPC, verbose=0 )
+ login = self.server.LogIn("", "", "en", __scriptname__.replace(" ","_"))
+
+ self.osdb_token = login[ "token" ]
+ log( __name__ ,"Token:[%s]" % str(self.osdb_token))
+
+ try:
+ if ( self.osdb_token ) :
+ if hash_search:
+ searchlist.append({'sublanguageid':language, 'moviehash':_hash,
'moviebytesize':str( size ) })
+ searchlist.append({'sublanguageid':language, 'query':srch_string })
+ search = self.server.SearchSubtitles( self.osdb_token, searchlist )
+ if search["data"]:
+ for item in search["data"]:
+ if item["ISO639"]:
+ lang_index=0
+ for user_lang_id in self.langs_ids:
+ if user_lang_id == item["ISO639"]:
+ break
+ lang_index+=1
+ flag_image = "flags/%s.gif" % item["ISO639"]
+ else:
+ flag_image = "-.gif"
- def searchsubtitles( self, srch_string , lang1,lang2,lang3,hash_search,
_hash = "000000000", size = "000000000"):
-
- self.subtitles_hash_list = []
- self.subtitles_list =[]
- self.langs_ids = [toOpenSubtitles_two(lang1),
toOpenSubtitles_two(lang2), toOpenSubtitles_two(lang3)]
- search_url1 = None
- search_url2 = None
- msg = ""
-
- language = toOpenSubtitlesId(lang1)
- if lang1 != lang2:
- language += "," + toOpenSubtitlesId(lang2)
- search_url1 = BASE_URL_NAME %
(toOpenSubtitlesId(lang2),srch_string,)
- if lang3 != lang1 and lang3 != lang2:
- language += "," + toOpenSubtitlesId(lang3)
- search_url2 = BASE_URL_NAME %
(toOpenSubtitlesId(lang3),srch_string,)
- try:
- if hash_search:
- search_url = BASE_URL_HASH % (language,size, _hash,)
- result = self.get_results( search_url )
- test = True
- if result.find('<?xml version=') < 0:
- msg = _( 755 )
- else:
- xmldoc = minidom.parseString(result)
- subtitles_alt = xmldoc.getElementsByTagName("subtitle")
- if subtitles_alt:
- url_base =
xmldoc.childNodes[0].childNodes[1].firstChild.data
- for subtitle in subtitles_alt:
- self.sortsubtitles(subtitle, True, url_base)
+ if str(item["MatchedBy"]) == "moviehash":
+ sync = True
+ else:
+ sync = False
- if (not hash_search) or (not self.subtitles_hash_list):
- search_url = BASE_URL_NAME %
(toOpenSubtitlesId(lang1),srch_string,)
- result = self.get_results( search_url )
- if result.find('<?xml version=') < 0:
- msg = _( 755 )
- else:
- xmldoc = minidom.parseString(result)
- subtitles_alt = xmldoc.getElementsByTagName("subtitle")
-
- if search_url1 != None :
- result = self.get_results( search_url1 )
- if result.find('<?xml version=') < 0:
- msg = _( 755 )
- else:
- xmldoc = minidom.parseString(result)
- subtitles_alt +=
xmldoc.getElementsByTagName("subtitle")
-
- if search_url2 != None :
- result = self.get_results( search_url2 )
- if result.find('<?xml version=') < 0:
- msg = _( 755 )
- else:
- xmldoc = minidom.parseString(result)
- subtitles_alt +=
xmldoc.getElementsByTagName("subtitle")
-
- if subtitles_alt:
- url_base = xmldoc.childNodes[0].childNodes[1].firstChild.data
- for subtitle in subtitles_alt:
- self.sortsubtitles(subtitle, False, url_base)
-
- except:
- pass
-
- self.mergesubtitles()
- return self.subtitles_list, msg
+
self.subtitles_hash_list.append({'lang_index':lang_index,'filename':item["SubFileName"],'link':item["ZipDownloadLink"],"language_name":item["LanguageName"],"language_flag":flag_image,"language_id":item["SubLanguageID"],"ID":item["IDSubtitle"],"rating":str(
int( item["SubRating"][0] ) ),"format":item["SubFormat"],"sync":sync})
+
+ except:
+ msg = "Error Searching For Subs"
+
+ self.mergesubtitles()
+ return self.subtitles_list, msg
diff --git a/script.xbmc.subtitles/resources/settings.xml
b/script.xbmc.subtitles/resources/settings.xml
index df01405..076bfb3 100644
--- a/script.xbmc.subtitles/resources/settings.xml
+++ b/script.xbmc.subtitles/resources/settings.xml
@@ -43,6 +43,7 @@
<setting id="Subscenter" type="bool" label="Subscenter.org"
default="false"/>
<setting id="AsiaTeam" type="bool" label="Asia-Team.net"
default="false"/>
<setting id="Sratim" type="bool" label="Sratim.co.il" default="false"/>
+ <setting id="SuperSubtitles" type="bool" label="SuperSubtitles
(Feliratok.info)" default="false"/>
<setting id="LegendasZone" type="bool" label="Legendas-Zone.org"
default="false"/>
<setting id="LZuser" type="text" visible= "eq(-1,true)"
enable="eq(-1,true)" label="30138" default=""/>
<setting id="LZpass" type="text" option = "hidden" visible=
"eq(-2,true)" enable="eq(-2,true)" label="30139" default=""/>
-----------------------------------------------------------------------
Summary of changes:
script.xbmc.subtitles/addon.xml | 2 +-
script.xbmc.subtitles/changelog.txt | 4 +
.../lib/services/OpenSubtitles/os_utilities.py | 189 +++++---------
.../lib/services/SuperSubtitles}/__init__.py | 0
.../resources/lib/services/SuperSubtitles/logo.png | Bin 0 -> 22540 bytes
.../lib/services/SuperSubtitles/service.py | 277 ++++++++++++++++++++
.../lib/services/SuperSubtitles/subenv.py | 19 ++
.../lib/services/SuperSubtitles/subutils.py | 103 ++++++++
script.xbmc.subtitles/resources/settings.xml | 1 +
9 files changed, 465 insertions(+), 130 deletions(-)
copy {script.cu.lyrics/resources/lib/scrapers =>
script.xbmc.subtitles/resources/lib/services/SuperSubtitles}/__init__.py (100%)
create mode 100644
script.xbmc.subtitles/resources/lib/services/SuperSubtitles/logo.png
create mode 100644
script.xbmc.subtitles/resources/lib/services/SuperSubtitles/service.py
create mode 100644
script.xbmc.subtitles/resources/lib/services/SuperSubtitles/subenv.py
create mode 100644
script.xbmc.subtitles/resources/lib/services/SuperSubtitles/subutils.py
hooks/post-receive
--
Scripts
------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of 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-d2d-c2
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons