Skip to content

Commit

Permalink
some more cleanups
Browse files Browse the repository at this point in the history
  • Loading branch information
amet committed Mar 22, 2011
1 parent 4f835f8 commit 53d4ac4
Show file tree
Hide file tree
Showing 4 changed files with 167 additions and 179 deletions.
Expand Up @@ -22,119 +22,113 @@ 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 = sorted(self.subtitles_list, compare_columns)
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 = sorted(self.subtitles_list, compare_columns)

###-------------------------- Sort Subtitles -------------################

def sortsubtitles(self, subtitle, hashed, url_base):

filename = movie = lang_name = subtitle_id = lang_id = link = ""
flag_image = "-.gif"

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,)
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({'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
def sortsubtitles(self, subtitle, hashed, url_base):
filename = movie = lang_name = subtitle_id = lang_id = link = ""
flag_image = "-.gif"
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,)
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({'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

###-------------------------- Opensubtitles Search -------------################


def searchsubtitles( self, srch_string , lang1,lang2,lang3,hash_search, _hash = "000000000", size = "000000000"):

self.subtitles_hash_list = []
self.subtitles_list =[]
search_url1 = None
search_url2 = None
msg = ""

language = languageTranslate(lang1,0,3)
if lang1 != lang2:
language += "," + languageTranslate(lang2,0,3)
search_url1 = BASE_URL_NAME % (languageTranslate(lang2,0,3),srch_string,)
if lang3 != lang1 and lang3 != lang2:
language += "," + languageTranslate(lang3,0,3)
search_url2 = BASE_URL_NAME % (languageTranslate(lang3,0,3),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 (not hash_search) or (not self.subtitles_hash_list):
search_url = BASE_URL_NAME % (languageTranslate(lang1,0,3),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")


def searchsubtitles( self, srch_string , lang1,lang2,lang3,hash_search, _hash = "000000000", size = "000000000"):
msg = ""
search_url1 = None
search_url2 = None
self.subtitles_list =[]
self.subtitles_hash_list = []
language = languageTranslate(lang1,0,3)
if lang1 != lang2:
language += "," + languageTranslate(lang2,0,3)
search_url1 = BASE_URL_NAME % (languageTranslate(lang2,0,3),srch_string,)
if lang3 != lang1 and lang3 != lang2:
language += "," + languageTranslate(lang3,0,3)
search_url2 = BASE_URL_NAME % (languageTranslate(lang3,0,3),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 (not hash_search) or (not self.subtitles_hash_list):
search_url = BASE_URL_NAME % (languageTranslate(lang1,0,3),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)

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
except:
pass

self.mergesubtitles()
return self.subtitles_list, msg
Expand Up @@ -10,61 +10,57 @@
_ = sys.modules[ "__main__" ].__language__

def search_subtitles( file_original_path, title, tvshow, year, season, episode, set_temp, rar, lang1, lang2, lang3, stack ): #standard input
ok = False
msg = ""
ok = False
msg = ""
hash_search = False
osdb_server = OSDBServer()
subtitles_list = []
if len(tvshow) > 0: # TvShow
OS_search_string = ("%s S%.2dE%.2d" % (tvshow, int(season), int(episode),)).replace(" ","+")
else: # Movie or not in Library
if str(year) == "": # Not in Library
title, year = xbmc.getCleanMovieTitle( title )
else: # Movie in Library
year = year
title = title
OS_search_string = title.replace(" ","+")
log( __name__ , "Search String [ %s ]" % (OS_search_string,))

if set_temp :
hash_search = False
osdb_server = OSDBServer()
subtitles_list = []
if len(tvshow) > 0: # TvShow

OS_search_string = ("%s S%.2dE%.2d" % (tvshow, int(season), int(episode),)).replace(" ","+")
else: # Movie or not in Library

if str(year) == "": # Not in Library
title, year = xbmc.getCleanMovieTitle( title )
else: # Movie in Library
year = year
title = title
OS_search_string = title.replace(" ","+")

log( __name__ , "Search String [ %s ]" % (OS_search_string,))

if set_temp :
hash_search = False
file_size = "000000000"
hashTry = "000000000000"
else:
try:
file_size, SubHash = xbmc.subHashAndFileSize(file_original_path)
log( __name__ ,"xbmc module hash and size")
hash_search = True
except:
file_size = ""
SubHash = ""
hash_search = False

if file_size != "" and SubHash != "":
log( __name__ ,"File Size [%s]" % file_size )
log( __name__ ,"File Hash [%s]" % SubHash)

log( __name__ ,"Search by hash and name %s" % (os.path.basename( file_original_path ),))

subtitles_list, msg = osdb_server.searchsubtitles( OS_search_string, lang1, lang2, lang3, hash_search, SubHash, file_size )

return subtitles_list, "", msg #standard output

file_size = "000000000"
hashTry = "000000000000"
else:
try:
file_size, SubHash = xbmc.subHashAndFileSize(file_original_path)
log( __name__ ,"xbmc module hash and size")
hash_search = True
except:
file_size = ""
SubHash = ""
hash_search = False

if file_size != "" and SubHash != "":
log( __name__ ,"File Size [%s]" % file_size )
log( __name__ ,"File Hash [%s]" % SubHash)

log( __name__ ,"Search by hash and name %s" % (os.path.basename( file_original_path ),))
subtitles_list, msg = osdb_server.searchsubtitles( OS_search_string, lang1, lang2, lang3, hash_search, SubHash, file_size )

return subtitles_list, "", msg #standard output



def download_subtitles (subtitles_list, pos, zip_subs, tmp_sub_dir, sub_folder, session_id): #standard input
import urllib
f = urllib.urlopen(subtitles_list[pos][ "link" ])
local_file = open(zip_subs, "w" + "b")
import urllib
f = urllib.urlopen(subtitles_list[pos][ "link" ])
local_file = open(zip_subs, "w" + "b")

local_file.write(f.read())
local_file.close()
language = subtitles_list[pos][ "language_name" ]
return True,language, "" #standard output
local_file.write(f.read())
local_file.close()

language = subtitles_list[pos][ "language_name" ]
return True,language, "" #standard output



Expand Down
Expand Up @@ -118,34 +118,24 @@ def searchsubtitlesbyname_pod( self, name, tvshow, season, episode, lang1, lang2
search_url2 = None
name = urllib.quote(name.replace(" ","+"))

search_url = "http://www.podnapisi.net/ppodnapisi/search?tbsl=1&sK=" + name + "&sJ=" +str(lang1)+ "&sY=" + str(year)+ "&sTS=" + str(season) + "&sTE=" + str(episode) + "&sXML=1&lang=0"
search_url_base = "http://www.podnapisi.net/ppodnapisi/search?tbsl=1&sK=%s&sJ=%s&sY=%s&sTS=%s&sTE=%s&sXML=1&lang=0" % (name, "%s", str(year), str(season), str(episode))

search_url = search_url_base % str(lang1)
log( __name__ ,"%s - Language 1" % search_url)
if lang2!=lang1:
search_url1 = "http://www.podnapisi.net/ppodnapisi/search?tbsl=1&sK=" + name + "&sJ=" +str(lang2)+ "&sY=" + str(year)+ "&sTS=" + str(season) + "&sTE=" + str(episode) + "&sXML=1&lang=0"
search_url1 = search_url_base % str(lang2)
log( __name__ ,"%s - Language 2" % search_url1)
if lang3!=lang1 and lang3!=lang2:
search_url2 = "http://www.podnapisi.net/ppodnapisi/search?tbsl=1&sK=" + name + "&sJ=" +str(lang3)+ "&sY=" + str(year)+ "&sTS=" + str(season) + "&sTE=" + str(episode) + "&sXML=1&lang=0"
search_url2 = search_url_base % str(lang3)
log( __name__ ,"%s - Language 3" % search_url2)
try:
socket = urllib.urlopen( search_url )
result = socket.read()
socket.close()
xmldoc = minidom.parseString(result)
subtitles = xmldoc.getElementsByTagName("subtitle")
subtitles = self.fetch(search_url)
if search_url1 is not None:
socket = urllib.urlopen( search_url1 )
result = socket.read()
socket.close()
xmldoc = minidom.parseString(result)
subtitles1 = xmldoc.getElementsByTagName("subtitle")
subtitles1 = self.fetch(search_url1)
if subtitles1:
subtitles = subtitles + subtitles1
if search_url2 is not None:
socket = urllib.urlopen( search_url2 )
result = socket.read()
socket.close()
xmldoc = minidom.parseString(result)
subtitles1 = xmldoc.getElementsByTagName("subtitle")
subtitles2 = self.fetch(search_url2)
if subtitles1:
subtitles = subtitles + subtitles1
if subtitles:
Expand Down Expand Up @@ -184,4 +174,11 @@ def searchsubtitlesbyname_pod( self, name, tvshow, season, episode, lang1, lang2
return self.subtitles_list
except :
return self.subtitles_list



def fetch(self,url):
socket = urllib.urlopen( url )
result = socket.read()
socket.close()
xmldoc = minidom.parseString(result)
return xmldoc.getElementsByTagName("subtitle")
1 change: 1 addition & 0 deletions script.xbmc.subtitles/resources/lib/utilities.py
Expand Up @@ -64,6 +64,7 @@
("English (UK)" , "2", "en", "eng", "100"),
("Portuguese (Brazilian)" , "48", "pt-br", "pob", "100"),
("Portuguese (Brazil)" , "48", "pb", "pob", "32" ),
("Portuguese-BR" , "48", "pb", "pob", "32" ),
("Brazilian" , "48", "pb", "pob", "32" ),
("Español (Latinoamérica)" , "28", "es", "spa", "100"),
("Español (España)" , "28", "es", "spa", "100"),
Expand Down

0 comments on commit 53d4ac4

Please sign in to comment.