class GUI(xbmcgui.WindowXMLDialog): socket.setdefaulttimeout(10.0) # seconds def __init__(self, *args, **kwargs): pass def set_lang(self, lang1, lang2): self.lang1 = toOpenSubtitlesId(lang1) LOG(LOG_INFO, "Language 1: [%s]", self.lang1) self.lang2 = toOpenSubtitlesId(lang2) LOG(LOG_INFO, "Language 2: [%s]", self.lang2) def set_session(self, session_id): self.session_id = session_id def set_service(self, service): self.service = service LOG(LOG_INFO, "Service used: [%s]", self.service) def set_temp(self, temp): self.set_temp = temp def set_sub_folder(self, sub_folder): self.sub_folder = sub_folder LOG(LOG_INFO, "Subtitle Folder: [%s]", self.sub_folder) def set_filepath(self, path): self.file_original_path = path if not (path.find("special://") > -1): self.file_path = path[path.find(os.sep) : len(path)] else: self.file_path = path LOG(LOG_INFO, "File Path: [%s]", self.file_path) def set_filehash(self, hash): LOG(LOG_INFO, "File Hash: [%s]", (hash)) self.file_hash = hash def set_filesize(self, size): LOG(LOG_INFO, "File Size: [%s]", (size)) self.file_size = size def set_searchstring(self, search): LOG(LOG_INFO, "Search String: [%s]", (search)) self.search_string = search def set_subtitles(self, subtitles): self.subtitles = subtitles def onInit(self): LOG(LOG_INFO, "onInit") self.setup_all() if self.service == "OpenSubtitles": self.connThread = threading.Thread(target=self.connect, args=()) self.connThread.start() else: self.connect() def setup_all(self): self.setup_variables() self.getControl(300).setLabel(_(601)) self.getControl(301).setLabel(_(602)) def setup_variables(self): # try: xbox = xbmc.getInfoLabel( "system.xboxversion") xbox = "" if xbox == "": self.set_xbox = False else: self.set_xbox = True LOG(LOG_INFO, "XBOX System: [%s]", xbox) self.controlId = -1 self.allow_exception = False self.osdb_server = OSDBServer() self.osdb_server.Create() self.manuall = False def connect(self): self.getControl(SUBTITLES_LIST).reset() self.getControl(110).setVisible(False) self.getControl(111).setVisible(False) self.getControl(STATUS_LABEL).setLabel(_(646)) if self.service == "OpenSubtitles": self.getControl(110).setVisible(True) ok, msg = self.osdb_server.connect(OSDB_SERVER, "", "") if not ok: self.getControl(STATUS_LABEL).setLabel(_(653)) LOG(LOG_INFO, "Login Failed: [%s]", msg) # label = "" # label2 = "[COLOR=FFFF0000]%s[/COLOR]" % ( _( 611 ) ) # listitem = xbmcgui.ListItem( label,label2 ) # self.getControl( SUBTITLES_LIST ).addItem( listitem ) # label2 = "[COLOR=FF00FF00]%s[/COLOR]" % ( _( 612 ) ) # listitem = xbmcgui.ListItem( label,label2 ) # self.getControl( SUBTITLES_LIST ).addItem( listitem ) self.getControl(STATUS_LABEL).setLabel(_(635)) self.search_subtitles() self.getControl(STATUS_LABEL).setVisible(True) else: self.getControl(STATUS_LABEL).setLabel(_(635)) LOG(LOG_INFO, "Login Sucessful: [%s]", msg) ##self.osdb_server.getlanguages() self.search_subtitles() self.getControl(STATUS_LABEL).setVisible(True) else: self.getControl(111).setVisible(True) self.getControl(STATUS_LABEL).setLabel(_(646)) self.search_subtitles_sub() def search_subtitles(self): ok = False ok2 = False ok3 = False msg = "" self.getControl(STATUS_LABEL).setLabel(_(646)) try: if (len(self.file_path) > 0) and not self.file_original_path.find("http") > -1 and not self.set_xbox: LOG(LOG_INFO, "Search by hash " + os.path.basename(self.file_original_path)) self.getControl(STATUS_LABEL).setLabel(_(642) % ("...",)) self.set_filehash(hashFile(self.file_original_path)) self.set_filesize(os.path.getsize(self.file_original_path)) try: ok, msg = self.osdb_server.searchsubtitles( self.file_original_path, self.file_hash, self.file_size, self.lang1, self.lang2 ) # , "en" ) except: ok = False LOG(LOG_INFO, "Hash Search: " + msg) if len(self.search_string) > 0: LOG(LOG_INFO, "Search by name " + self.search_string) self.getControl(STATUS_LABEL).setLabel(_(642) % ("......",)) ok2, msg2 = self.osdb_server.searchsubtitlesbyname(self.search_string, self.lang1) # , "en" ) LOG(LOG_INFO, "Name Search: " + msg2) ok3, msg3 = self.osdb_server.searchsubtitlesbyname_alt( self.search_string, self.lang2, self.lang1 ) # , "en" ) LOG(LOG_INFO, "Name 2 Search: " + msg3) self.osdb_server.mergesubtitles() if not ok and not ok2 and not ok3: self.getControl(STATUS_LABEL).setLabel(_(634) % (msg,)) if self.osdb_server.subtitles_list: label = "" label2 = "[COLOR=FFFF0000]%s[/COLOR]" % (_(611)) listitem = xbmcgui.ListItem(label, label2) self.getControl(SUBTITLES_LIST).addItem(listitem) label2 = "[COLOR=FF00FF00]%s[/COLOR]" % (_(612)) listitem = xbmcgui.ListItem(label, label2) self.getControl(SUBTITLES_LIST).addItem(listitem) for item in self.osdb_server.subtitles_list: listitem = xbmcgui.ListItem( label=item["language_name"], label2=item["filename"], iconImage=item["rating"], thumbnailImage=item["language_flag"], ) if item["sync"]: listitem.setProperty("sync", "true") else: listitem.setProperty("sync", "false") self.getControl(SUBTITLES_LIST).addItem(listitem) else: label = "" label2 = "[COLOR=FFFF0000]%s[/COLOR]" % (_(611)) listitem = xbmcgui.ListItem(label, label2) self.getControl(SUBTITLES_LIST).addItem(listitem) label2 = "[COLOR=FF00FF00]%s[/COLOR]" % (_(612)) listitem = xbmcgui.ListItem(label, label2) self.getControl(SUBTITLES_LIST).addItem(listitem) movie_title1 = self.search_string.replace("+", " ") self.getControl(STATUS_LABEL).setLabel(_(744) % (str(len(self.osdb_server.subtitles_list)), movie_title1)) self.setFocus(self.getControl(SUBTITLES_LIST)) self.getControl(SUBTITLES_LIST).selectItem(0) except Exception, e: error = _(634) % ("search_subtitles:" + str(e)) LOG(LOG_ERROR, error) return False, error
class GUI(xbmcgui.WindowXMLDialog): socket.setdefaulttimeout(10.0) #seconds def __init__(self, *args, **kwargs): pass def set_lang(self, lang1, lang2): self.lang1 = toOpenSubtitlesId(lang1) LOG(LOG_INFO, "Language 1: [%s]", self.lang1) self.lang2 = toOpenSubtitlesId(lang2) LOG(LOG_INFO, "Language 2: [%s]", self.lang2) def set_session(self, session_id): self.session_id = session_id def set_service(self, service): self.service = service LOG(LOG_INFO, "Service used: [%s]", self.service) def set_temp(self, temp): self.set_temp = temp def set_sub_folder(self, sub_folder): self.sub_folder = sub_folder LOG(LOG_INFO, "Subtitle Folder: [%s]", self.sub_folder) def set_filepath(self, path): self.file_original_path = path if not (path.find("special://") > -1): self.file_path = path[path.find(os.sep):len(path)] else: self.file_path = path LOG(LOG_INFO, "File Path: [%s]", self.file_path) def set_filehash(self, hash): LOG(LOG_INFO, "File Hash: [%s]", (hash)) self.file_hash = hash def set_filesize(self, size): LOG(LOG_INFO, "File Size: [%s]", (size)) self.file_size = size def set_searchstring(self, search): LOG(LOG_INFO, "Search String: [%s]", (search)) self.search_string = search def set_subtitles(self, subtitles): self.subtitles = subtitles def onInit(self): LOG(LOG_INFO, "onInit") self.setup_all() if self.service == "OpenSubtitles": self.connThread = threading.Thread(target=self.connect, args=()) self.connThread.start() else: self.connect() def setup_all(self): self.setup_variables() self.getControl(300).setLabel(_(601)) self.getControl(301).setLabel(_(602)) def setup_variables(self): #try: xbox = xbmc.getInfoLabel( "system.xboxversion") xbox = "" if xbox == "": self.set_xbox = False else: self.set_xbox = True LOG(LOG_INFO, "XBOX System: [%s]", xbox) self.controlId = -1 self.allow_exception = False self.osdb_server = OSDBServer() self.osdb_server.Create() self.manuall = False def connect(self): self.getControl(SUBTITLES_LIST).reset() self.getControl(110).setVisible(False) self.getControl(111).setVisible(False) self.getControl(STATUS_LABEL).setLabel(_(646)) if self.service == "OpenSubtitles": self.getControl(110).setVisible(True) ok, msg = self.osdb_server.connect(OSDB_SERVER, "", "") if not ok: self.getControl(STATUS_LABEL).setLabel(_(653)) LOG(LOG_INFO, "Login Failed: [%s]", msg) # label = "" # label2 = "[COLOR=FFFF0000]%s[/COLOR]" % ( _( 611 ) ) # listitem = xbmcgui.ListItem( label,label2 ) # self.getControl( SUBTITLES_LIST ).addItem( listitem ) # label2 = "[COLOR=FF00FF00]%s[/COLOR]" % ( _( 612 ) ) # listitem = xbmcgui.ListItem( label,label2 ) # self.getControl( SUBTITLES_LIST ).addItem( listitem ) self.getControl(STATUS_LABEL).setLabel(_(635)) self.search_subtitles() self.getControl(STATUS_LABEL).setVisible(True) else: self.getControl(STATUS_LABEL).setLabel(_(635)) LOG(LOG_INFO, "Login Sucessful: [%s]", msg) ##self.osdb_server.getlanguages() self.search_subtitles() self.getControl(STATUS_LABEL).setVisible(True) else: self.getControl(111).setVisible(True) self.getControl(STATUS_LABEL).setLabel(_(646)) self.search_subtitles_sub() def search_subtitles(self): ok = False ok2 = False ok3 = False msg = "" self.getControl(STATUS_LABEL).setLabel(_(646)) try: if (len(self.file_path) > 0) and not self.file_original_path.find( "http") > -1 and not self.set_xbox: LOG( LOG_INFO, "Search by hash " + os.path.basename(self.file_original_path)) self.getControl(STATUS_LABEL).setLabel(_(642) % ("...", )) self.set_filehash(hashFile(self.file_original_path)) self.set_filesize(os.path.getsize(self.file_original_path)) try: ok, msg = self.osdb_server.searchsubtitles( self.file_original_path, self.file_hash, self.file_size, self.lang1, self.lang2) #, "en" ) except: ok = False LOG(LOG_INFO, "Hash Search: " + msg) if (len(self.search_string) > 0): LOG(LOG_INFO, "Search by name " + self.search_string) self.getControl(STATUS_LABEL).setLabel(_(642) % ("......", )) ok2, msg2 = self.osdb_server.searchsubtitlesbyname( self.search_string, self.lang1) #, "en" ) LOG(LOG_INFO, "Name Search: " + msg2) ok3, msg3 = self.osdb_server.searchsubtitlesbyname_alt( self.search_string, self.lang2, self.lang1) #, "en" ) LOG(LOG_INFO, "Name 2 Search: " + msg3) self.osdb_server.mergesubtitles() if not ok and not ok2 and not ok3: self.getControl(STATUS_LABEL).setLabel(_(634) % (msg, )) if self.osdb_server.subtitles_list: label = "" label2 = "[COLOR=FFFF0000]%s[/COLOR]" % (_(611)) listitem = xbmcgui.ListItem(label, label2) self.getControl(SUBTITLES_LIST).addItem(listitem) label2 = "[COLOR=FF00FF00]%s[/COLOR]" % (_(612)) listitem = xbmcgui.ListItem(label, label2) self.getControl(SUBTITLES_LIST).addItem(listitem) for item in self.osdb_server.subtitles_list: listitem = xbmcgui.ListItem( label=item["language_name"], label2=item["filename"], iconImage=item["rating"], thumbnailImage=item["language_flag"]) if item["sync"]: listitem.setProperty("sync", "true") else: listitem.setProperty("sync", "false") self.getControl(SUBTITLES_LIST).addItem(listitem) else: label = "" label2 = "[COLOR=FFFF0000]%s[/COLOR]" % (_(611)) listitem = xbmcgui.ListItem(label, label2) self.getControl(SUBTITLES_LIST).addItem(listitem) label2 = "[COLOR=FF00FF00]%s[/COLOR]" % (_(612)) listitem = xbmcgui.ListItem(label, label2) self.getControl(SUBTITLES_LIST).addItem(listitem) movie_title1 = self.search_string.replace("+", " ") self.getControl(STATUS_LABEL).setLabel( _(744) % ( str(len(self.osdb_server.subtitles_list)), movie_title1, )) self.setFocus(self.getControl(SUBTITLES_LIST)) self.getControl(SUBTITLES_LIST).selectItem(0) except Exception, e: error = _(634) % ("search_subtitles:" + str(e)) LOG(LOG_ERROR, error) return False, error
class GUI( xbmcgui.WindowXMLDialog ): socket.setdefaulttimeout(10.0) #seconds def __init__( self, *args, **kwargs ): pass def set_filepath( self, path ): LOG( LOG_INFO, "set_filepath [%s]" , ( path ) ) self.file_original_path = path self.file_path = path[path.find(os.sep):len(path)] def set_filehash( self, hash ): LOG( LOG_INFO, "set_filehash [%s]" , ( hash ) ) self.file_hash = hash def set_filesize( self, size ): LOG( LOG_INFO, "set_filesize [%s]" , ( size ) ) self.file_size = size def set_searchstring( self, search ): LOG( LOG_INFO, "set_searchstring [%s]" , ( search ) ) self.search_string = search def onInit( self ): LOG( LOG_INFO, "onInit" ) self.setup_all() if self.file_path or self.search_string: #self.timer = threading.Timer( 0.5, self.connect(), () ) #self.timer.start() self.connThread = threading.Thread( target=self.connect, args=() ) self.connThread.start() def setup_all( self ): self.setup_variables() def setup_variables( self ): self.controlId = -1 self.allow_exception = False self.osdb_server = OSDBServer() self.osdb_server.Create() if xbmc.Player().isPlayingVideo(): self.set_filepath( xbmc.Player().getPlayingFile() ) def connect( self ): self.getControl( LOADING_IMAGE ).setVisible( True ) self.getControl( STATUS_LABEL ).setLabel( _( 646 ) ) ok,msg = self.osdb_server.connect( "", "" ) if not ok: self.getControl( STATUS_LABEL ).setLabel( _( 653 ) ) self.getControl( LOADING_IMAGE ).setVisible( False ) return else: self.getControl( STATUS_LABEL ).setLabel( _( 635 ) ) self.osdb_server.getlanguages() self.search_subtitles() self.getControl( LOADING_IMAGE ).setVisible( False ) self.getControl( STATUS_LABEL ).setVisible( False ) def search_subtitles( self ): try: if ( len( self.file_path ) > 0 ): LOG( LOG_INFO, _( 642 ) % ( os.path.basename( self.file_path ), ) ) self.getControl( STATUS_LABEL ).setLabel( _( 642 ) % ( "...", ) ) #ok,msg = self.osdb_server.searchsubtitlesbyhash( self.file_path )#, "en" ) self.set_filehash( xbmc.getFileHash( self.file_original_path ) ) self.set_filesize( xbmc.getFileSize( self.file_original_path ) ) ok,msg = self.osdb_server.searchsubtitles( self.file_path, self.file_hash, self.file_size )#, "en" ) LOG( LOG_INFO, msg ) if ( len( self.search_string ) > 0 ): LOG( LOG_INFO, _( 642 ) % ( os.path.basename( self.search_string ), ) ) self.getControl( STATUS_LABEL ).setLabel( _( 642 ) % ( "......", ) ) ok2,msg2 = self.osdb_server.searchsubtitlesbyname( self.search_string )#, "en" ) LOG( LOG_INFO, msg2 ) self.osdb_server.mergesubtitles() if not ok and not ok2: self.getControl( STATUS_LABEL ).setLabel( _( 634 ) % ( msg, ) ) elif self.osdb_server.subtitles_list: for item in self.osdb_server.subtitles_list: listitem = xbmcgui.ListItem( label=item["language_name"], label2=item["filename"], iconImage=item["rating"], thumbnailImage=item["language_flag"] ) #self.getControl( SUBTITLES_LIST ).addItem( xbmcgui.ListItem( item["filename"], item["language_name"], iconImage=item["rating"], thumbnailImage = item["language_flag"] ) ) if item["sync"]: listitem.setProperty( "sync", "true" ) else: listitem.setProperty( "sync", "false" ) self.getControl( SUBTITLES_LIST ).addItem( listitem ) # elif msg: # self.getControl( STATUS_LABEL ).setLabel( msg ) self.setFocus( self.getControl( SUBTITLES_LIST ) ) self.getControl( SUBTITLES_LIST ).selectItem( 0 ) except Exception, e: error = _( 634 ) % ( "search_subtitles:" + str ( e ) ) LOG( LOG_ERROR, error ) return False, error