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