コード例 #1
0
ファイル: util.py プロジェクト: HoracioXel/janeDroidAssistant
    def listarapps(
        self
    ):  # Lista todos aplicativos do dispositivo no formato App/Atividade Principal/ Nome do pacote
        apps = droid.getLaunchableApplications(
        )  # Obtém a lista das ativiades e nome dos apps

        # Como não estamos trabalhando diretamente com Java não é possivel usar "getpackagemanager" para o obeter o nome dos pacotes, por isso é preciso muito mais código para conseguir um resultado semelhante
        listaapps = []

        for i in apps[1]:  # Ciclo que organiza as coisas
            cl = Classificador()
            nomeapp = cl.normalizar(
                i
            )  # O nome do app deve ficar em minúsculo para agilizar comparações futuramente
            atividade = apps[1][i]

            listaapps.append([nomeapp, atividade])

        self.listaapps = sorted(
            listaapps
        )  # A variável global recebe a local só que organizada em ordem alfabética

        lapps = self.listaapps
        lpacotes = self.pacotes

        for j in lapps:  # Ciclo para adicionar os pacotes que foram listados no instaciamento da classe
            for i in lpacotes:
                if (i in j[1]):
                    self.listaapps[self.listaapps.index(j)].append(
                        i
                    )  # O app correspondente recebe o nome do pacote agora
                    lpacotes.pop(
                        lpacotes.index(i)
                    )  # Retira o pacote para não acabar sendo associado a outro app

        self.listaapps = lapps  # Adicionando á variavél global

        # A lista a seguir é o conjunto de nomes de pacotes que não puderam ser identificados pelo código e vão ter que ser adicionados manualmente
        listanegra = [
            ["com.google.android.apps.youtube.creator", "yt studio"],
            ["com.socialnmobile.dictapps.notepad.color.note", "colornote"],
            ["com.cyberlink.powerdirector.DRA140225_01", "powerdirector"],
            ["com.estrongs.android.pop.pro", "es file explorer pro"],
            ["com.iudesk.android.photo.editor", "editor de fotos"],
            ["com.zeptolab.thieves.google", "king of thieves"],
            ["com.touchtype.swiftkey", "teclado swiftKey"],
            ["com.google.android.videos", "play filmes"],
            ["com.google.android.music", "play música"],
            ["com.google.android.youtube", "youtube"],
            ["com.google.android.apps.maps", "maps"],
            ["pl.solidexplorer2", "solid explorer"]
        ]

        for i in listanegra:  # Vamos adicionar o nome dos pacotes da lista negra a lista global de apps
            for j in self.listaapps:
                if i[1] == j[
                        0]:  # Se tiver o mesmo nome, adicionar o nome do pacote a lista
                    self.listaapps[self.listaapps.index(j)].append(i[0])

        return
コード例 #2
0
ファイル: chatbot.py プロジェクト: zakkarias12/IADoxo
    def aprender1(self, entrada
                  ):  # Responsável apenas por cadastrar uma saida para entrada
        v = Voz()
        cl = Classificador()

        v.fale("Quer Cadastrar uma agora?")
        saida = (v.escute())
        saida = cl.normalizar(saida)

        sim = [
            "sim", "claro", "com certeza", "óbvio que sim", "por favor",
            "correto", "certo", "isso mesmo", "pode pá"
        ]

        for i in sim:
            if (saida in i):
                while (
                        True
                ):  #Looping infinito que só é encerrado quando uma entrada é gravada
                    v.fale("Qual a resposta?")
                    saida = (v.escute())

                    v.fale("Então a sua entrada é:, " + entrada)
                    v.fale("E a saída é:, " + saida)
                    v.fale("Correto?")
                    resp = (v.escute())

                    for i in sim:
                        if (resp in i):
                            v.fale("Ok, gravando resposta")

                            entrada = cl.normalizar(
                                entrada
                            )  # Normalizando a entrada, por enquanto isso apenas deixa tudo em minúsculo
                            saida = cl.normalizar(saida)

                            arq = Arquivo()
                            arq.gravar("/BD/txt/i.txt", entrada)
                            arq.gravar("/BD/txt/o.txt", saida)

                            return

                    # Mas caso o usuário diga qualquer outra coisa, reiniciar...
                    v.fale("Você pode repitir por favor?")
                    v.fale("Qual é a pergunta?")
                    entrada = (v.escute())

        v.fale("Ok, fica para próxima")
        return  # Saia caso o usuário não queria cadastrar uma resposta
コード例 #3
0
    def interagir(self, entrada, log=[] ): # Recebe uma string, busca no txt e se houver uma resposta devolve
       
        cl=Classificador()
        entrada=cl.normalizar(entrada) # Normalizando a entrada, por enquanto isso apenas deixa tudo em minúsculo

        resposta = "Infelizmente não tenho nenhuma resposta para isso" 

	   
        if("pare" == entrada or "sair" in entrada): exit() # Força a parada do app logo de cara se necessário

        # É verificado se a reposta é idêntica as últimas e qual ação tomar a partir dali através do módulo impaciência. 
        paciencia=Paciencia() 
        resp=paciencia.ent_rep(self.entradasrecentes,entrada)
        if(resp[1]==True): # Se a paciência já passou do limite 
            self.entradasrecentes=[]
            return resp # Reposta já está no formatado de trabalho da classe principal
        self.entradasrecentes.append(entrada) 


        # Deixa mais dinâmico no futuro essa parte sobre repetir a última coisa falada
        repita=["repita", "repete", "o que você disse", "repete por favor"]
        
        for r in repita:
            if(r==entrada and len(log)!=0): # Se o usuário quiser saber sua última resposta e ela existir
                
                return log[len(log)-1][1],True
            
        # É feito uma busca rápida por ações
        numop=cl.idacao(entrada)
        if(numop[0]!=0): # Se existir uma ação para ser executada:   
            resp=cl.execacao(entrada,numop)
            if(resp[0]!=0):
                return resp,True
                     
        
        # Se chegar até aqui sem uma reposta, é hora de buscar no banco
        arq=Arquivo()

        if((arq.lertudo("/BD/txt/i.txt")[1]==False) or (arq.lertudo("/BD/txt/o.txt")[1]==False)): # Verifica existência do arquivo              
            arq.criar("/BD/txt/i.txt")# Cria se não existir 
            arq.criar("/BD/txt/o.txt")

        inputs=arq.lertudo("/BD/txt/i.txt") # lista de possíveis entradas
        outputs=arq.lertudo("/BD/txt/o.txt") # lista de possíveis saídas
        
        
        n=0 # Setando
        for i in inputs: # Busca nos arquivos
            
            if(entrada+"\n"==i): # O "\n" é para igualar as quebras linha do txt
                resposta=outputs[n]              
                return resposta,True
            n+=1


        # Se a resposta não foi econtrada até agora, vamos tentar buscar na internet
        cb = BuscaWeb()
        resultado = cb.start(entrada)
        if(resultado[1]):
            return resultado # Reposta já está no formatado de trabalho da classe principal
            
		
		
        # Caso nenhuma resposta tenha sido atribuída
        return resposta,False