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