Пример #1
0
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