eva-ia-robot 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/eva_ia_robot.gemspec +19 -8
- data/{Rakefile → lib/Rakefile} +0 -0
- data/lib/eva_ia_robot/config.yml +5 -0
- data/lib/eva_ia_robot/eva-ia-robot.rb +87 -0
- data/{eva_ia_robot → lib/eva_ia_robot}/eva-modulo.rb +90 -2
- data/{eva_ia_robot → lib/eva_ia_robot}/eva-pergunta.rb +19 -10
- data/{eva_ia_robot → lib/eva_ia_robot}/eva-resposta.rb +6 -1
- data/{eva_ia_robot → lib/eva_ia_robot}/eva.config +11 -1
- data/{eva_ia_robot → lib/eva_ia_robot}/libgomp-1.dll +0 -0
- data/{eva_ia_robot → lib/eva_ia_robot}/libltdl-7.dll +0 -0
- data/{eva_ia_robot → lib/eva_ia_robot}/libmad.dll +0 -0
- data/{eva_ia_robot → lib/eva_ia_robot}/libmp3lame.dll +0 -0
- data/{eva_ia_robot → lib/eva_ia_robot}/play.exe +0 -0
- data/{eva_ia_robot → lib/eva_ia_robot}/pthreadgc2.dll +0 -0
- data/{eva_ia_robot → lib/eva_ia_robot}/rec.exe +0 -0
- data/{eva_ia_robot → lib/eva_ia_robot}/sox.exe +0 -0
- data/{eva_ia_robot → lib/eva_ia_robot}/wget.exe +0 -0
- data/{eva_ia_robot → lib/eva_ia_robot}/zlib1.dll +0 -0
- data/{test → tests}/eva_ia_robot_test.rb +4 -1
- metadata +131 -20
- data/eva_ia_robot/eva-ia-robot.rb +0 -86
data/eva_ia_robot.gemspec
CHANGED
@@ -1,10 +1,21 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
2
|
+
s.name = "eva-ia-robot"
|
3
|
+
s.version = "0.1.7"
|
4
|
+
s.description = "Gem integrada com Google Speech e Google Translate"
|
5
|
+
s.summary = "Command line"
|
6
|
+
s.author = "Henrique Utsch"
|
7
|
+
s.email = "henriqueutsch@gmail.com"
|
8
|
+
s.homepage = "https://github.com/henriqueutsch/Eva-IA-Robot"
|
9
|
+
s.files = Dir["{lib/**/*.rb,README.rdoc,tests/**/*.rb,lib/eva_ia_robot/*.rb,lib/eva_ia_robot/*.dll,lib/eva_ia_robot/*.config,lib/eva_ia_robot/*.exe,,lib/eva_ia_robot/*.yml,lib/Rakefile,*.gemspec}"]
|
10
|
+
s.add_dependency "cgi"
|
11
|
+
s.add_dependency 'open-uri'
|
12
|
+
s.add_dependency 'json'
|
13
|
+
s.add_dependency 'fileutils'
|
14
|
+
s.add_dependency 'nokogiri'
|
15
|
+
s.add_dependency 'rubygems'
|
16
|
+
s.add_dependency 'rbconfig'
|
17
|
+
s.add_dependency 'yaml'
|
18
|
+
s.add_dependency 'win32/sound'
|
19
|
+
s.add_dependency 'win32ole'
|
20
|
+
|
10
21
|
end
|
data/{Rakefile → lib/Rakefile}
RENAMED
File without changes
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#1 - falta corrigir o erro em eva-pergunta.rb
|
3
|
+
# antes do rescue
|
4
|
+
# 706: unexpected token at '{"status":5,"id":"","hypotheses":[]}
|
5
|
+
# 706: unexpected token at '{"status":0,"id":"","hypotheses":[{"utterance":"desativar","confidence":0.86765343}]}
|
6
|
+
# A JSON text must at least contain two octets!
|
7
|
+
# undefined method `[]' for nil:NilClass
|
8
|
+
#2 - ao executar um programa
|
9
|
+
# [Decode error - output not utf-8]
|
10
|
+
# 3 - repetição de comando
|
11
|
+
# limpar alguma variavel
|
12
|
+
# 4 - criar o tempo de resposta
|
13
|
+
# 5 - problemas ao listar comandos
|
14
|
+
# modulos do ruby para instalar basta abrir o prompt de comando e digitar "gem install [nome]" ex: "gem install win32ole"
|
15
|
+
require 'win32ole'
|
16
|
+
require 'yaml'
|
17
|
+
# carrega os arquivos .rb
|
18
|
+
require './eva-pergunta.rb'
|
19
|
+
require './eva-resposta.rb'
|
20
|
+
require './eva-modulo.rb'
|
21
|
+
|
22
|
+
# teste mas ainda não sei como vou fazer isso.
|
23
|
+
module HelloWorld
|
24
|
+
def self.say
|
25
|
+
"Hello World!"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class Time
|
30
|
+
def to_ms
|
31
|
+
(self.to_f * 1000.0).to_i
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
shell = WIN32OLE.new('Shell.Application')
|
36
|
+
cnf = YAML::load(File.open('config.yml'))
|
37
|
+
@frase = ""
|
38
|
+
@feedback = cnf['feedback']
|
39
|
+
@beep = cnf['beep']
|
40
|
+
@showrecord = cnf['showrecord']
|
41
|
+
|
42
|
+
|
43
|
+
evaconfig()
|
44
|
+
|
45
|
+
while @frase !="sair" do
|
46
|
+
|
47
|
+
|
48
|
+
begin
|
49
|
+
# puts start_time = Time.now
|
50
|
+
@frase = pergunta()
|
51
|
+
puts "Usuario: #{@frase}"
|
52
|
+
rescue =>e
|
53
|
+
puts e.message
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
if @listacomandos.include? @frase
|
59
|
+
|
60
|
+
if @listaexecutar[@listacomandos.index(@frase)].include? '%'
|
61
|
+
p abrir = @listaexecutar[@listacomandos.index(@frase)].gsub('%',"").gsub("\n",'')
|
62
|
+
shell.ShellExecute(abrir, "", "", "open", 1)
|
63
|
+
end
|
64
|
+
|
65
|
+
if @listaexecutar[@listacomandos.index(@frase)].include? '&'
|
66
|
+
p fechar = @listaexecutar[@listacomandos.index(@frase)].gsub('&',"").gsub("\n",'')
|
67
|
+
system("taskkill /IM #{fechar}")
|
68
|
+
end
|
69
|
+
|
70
|
+
if @listaexecutar[@listacomandos.index(@frase)].include? '$'
|
71
|
+
p executar = @listaexecutar[@listacomandos.index(@frase)].gsub('$',"").gsub("\n",'')
|
72
|
+
modulos(executar)
|
73
|
+
end
|
74
|
+
|
75
|
+
if @listaresposta[@listacomandos.index(@frase)].include? '$'
|
76
|
+
p executar = @listaresposta[@listacomandos.index(@frase)].gsub('$',"")
|
77
|
+
modulos(executar)
|
78
|
+
else
|
79
|
+
p "EVA: #{@listaresposta[@listacomandos.index(@frase)]}"
|
80
|
+
resposta(@listaresposta[@listacomandos.index(@frase)])
|
81
|
+
|
82
|
+
end
|
83
|
+
end
|
84
|
+
# puts end_time = Time.now
|
85
|
+
# puts elapsed_time = end_time.to_ms - start_time.to_ms # => 3004
|
86
|
+
|
87
|
+
end
|
@@ -4,7 +4,44 @@ require 'nokogiri'
|
|
4
4
|
require 'rubygems'
|
5
5
|
require 'rbconfig'
|
6
6
|
|
7
|
-
|
7
|
+
require './eva-resposta.rb'
|
8
|
+
|
9
|
+
def evaconfig()
|
10
|
+
@listacomandos = Array.new
|
11
|
+
@listaresposta = Array.new
|
12
|
+
@listaexecutar = Array.new
|
13
|
+
|
14
|
+
File.open(Dir.pwd()+'/eva.config', 'r:utf-8') do |linha|
|
15
|
+
while line = linha.gets
|
16
|
+
# p line
|
17
|
+
# p line.class
|
18
|
+
# p line.index('#')
|
19
|
+
# p line.index(':')
|
20
|
+
# p line.index('=')
|
21
|
+
# p line.size
|
22
|
+
line.encoding
|
23
|
+
comandos = line[line.index('#')+1..line.index(':')-1]
|
24
|
+
resposta = line[line.index(':')+1..line.index('=>')-1]
|
25
|
+
executar = line[line.index('=>')+2..line.size]
|
26
|
+
@listacomandos << comandos.gsub('[','').gsub(']','')
|
27
|
+
@listaresposta << resposta.gsub('[','').gsub(']','')
|
28
|
+
@listaexecutar << executar.gsub('[','').gsub(']','').gsub('\n','')
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
# puts listacomandos
|
33
|
+
# puts listaresposta
|
34
|
+
# puts listaexecutar
|
35
|
+
|
36
|
+
|
37
|
+
# p listacomandos.index('abrir chrome')
|
38
|
+
# p listaresposta[listacomandos.index('abrir chrome')]
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
|
8
45
|
def os
|
9
46
|
@os ||= (
|
10
47
|
host_os = RbConfig::CONFIG['host_os']
|
@@ -58,6 +95,39 @@ def hora()
|
|
58
95
|
resposta("são #{Time.now.hour.to_s} horas e #{Time.now.min.to_s} minutos")
|
59
96
|
end
|
60
97
|
|
98
|
+
def exit()
|
99
|
+
@frase = 'sair'
|
100
|
+
end
|
101
|
+
|
102
|
+
def beepoff()
|
103
|
+
@beep = 'nao'
|
104
|
+
end
|
105
|
+
|
106
|
+
def beepon()
|
107
|
+
@beep = 'sim'
|
108
|
+
end
|
109
|
+
|
110
|
+
def feedbackon()
|
111
|
+
@feedback = 'sim'
|
112
|
+
end
|
113
|
+
|
114
|
+
def feedbackoff()
|
115
|
+
@feedback = 'nao'
|
116
|
+
end
|
117
|
+
|
118
|
+
def showrecordon()
|
119
|
+
@showrecord = 'sim'
|
120
|
+
end
|
121
|
+
|
122
|
+
def showrecordoff()
|
123
|
+
@showrecord = 'nao'
|
124
|
+
end
|
125
|
+
|
126
|
+
def exibircomandos()
|
127
|
+
puts 'LISTA DE COMANDOS'
|
128
|
+
puts @listacomandos
|
129
|
+
end
|
130
|
+
|
61
131
|
def modulos(modulo)
|
62
132
|
case modulo
|
63
133
|
when 'hora'
|
@@ -68,8 +138,26 @@ def modulos(modulo)
|
|
68
138
|
data()
|
69
139
|
when 'sistema'
|
70
140
|
os()
|
141
|
+
when 'evaconfig'
|
142
|
+
evaconfig()
|
143
|
+
when 'exit'
|
144
|
+
exit()
|
145
|
+
when 'beepoff'
|
146
|
+
beepoff()
|
147
|
+
when 'beepon'
|
148
|
+
beepon()
|
149
|
+
when 'feedbackon'
|
150
|
+
feedbackon()
|
151
|
+
when 'feedbackoff'
|
152
|
+
feedbackoff()
|
153
|
+
when 'showrecordon'
|
154
|
+
showrecordon()
|
155
|
+
when 'showrecordoff'
|
156
|
+
showrecordoff()
|
157
|
+
when 'exibircomandos()'
|
158
|
+
exibircomandos()
|
71
159
|
else
|
72
|
-
puts '
|
160
|
+
puts 'Módulo não encontrado'
|
73
161
|
end
|
74
162
|
end
|
75
163
|
|
@@ -1,17 +1,16 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# Esse código transforma audio em texto via api do google speech
|
3
|
-
|
4
3
|
# Win32/sound modulo para tocar um beep via script
|
5
4
|
require 'json'
|
6
5
|
require 'win32/sound'
|
7
6
|
include Win32
|
8
|
-
|
7
|
+
require './eva-resposta.rb'
|
9
8
|
|
10
|
-
def pergunta(
|
9
|
+
def pergunta()
|
11
10
|
# imprimi na tela um feedback visual de quando dar o comando verbal
|
12
|
-
p 'gravando ...'
|
11
|
+
p 'EVA: gravando ...'
|
13
12
|
# verifica se a configuração auditiva para dar o comando verbal esta setada na configuração
|
14
|
-
if beep==
|
13
|
+
if @beep == 'sim'
|
15
14
|
# Emite um som antes da gravação da voz
|
16
15
|
Sound.beep(1500, 200)
|
17
16
|
end
|
@@ -19,9 +18,14 @@ def pergunta(feedback,beep)
|
|
19
18
|
# puts "inicio gravação #{Time.now}"
|
20
19
|
# utilizamos o sox que é um programa para gravar audio via linha de comando - no caso salva com o nome test.flac que é o formato do google
|
21
20
|
# silence -l significa que o rec.exe grava o audio e ao perceber o silencio finaliza a gravação e salva o arquivo ja no formato permitido pelo google speech
|
22
|
-
|
21
|
+
if @showrecord == 'sim'
|
22
|
+
system('rec.exe -r 16000 test.flac silence -l 1 0.1 1% 1 1.5 1%')
|
23
|
+
else
|
24
|
+
system('rec.exe -q -r 16000 test.flac silence -l 1 0.1 1% 1 1.5 1%')
|
25
|
+
end
|
26
|
+
|
23
27
|
# feedback para o envio do arquivo para o google
|
24
|
-
p 'Enviando arquivo ...'
|
28
|
+
p 'EVA: Enviando arquivo ...'
|
25
29
|
# p "inicio envio #{Time.now}"
|
26
30
|
# envia o arquivo test.flac para o servidor e este retorna um json
|
27
31
|
# {\"status\":0,\"id\":\"\",\"hypotheses\":[{\"utterance\":\"abrir word\",\"confidence\":0.82485712}]}\n"
|
@@ -40,22 +44,27 @@ def pergunta(feedback,beep)
|
|
40
44
|
resposta = JSON.parse(request)
|
41
45
|
# puts "chegada resposta #{Time.now}"
|
42
46
|
rescue =>e
|
47
|
+
puts 'antes do rescue'
|
48
|
+
puts e
|
43
49
|
# se houver erro ele simplesmente exibe a mensagem de erro e continua o seu processamento normal
|
44
50
|
puts e.message
|
51
|
+
puts 'status'
|
52
|
+
puts resposta["status"]
|
53
|
+
puts 'erro no rescue'
|
45
54
|
end
|
46
55
|
# se o status for 5, quer dizer que o texto não foi reconhecido adequadamente então ele pede para repetir o comando caso contrario ele retorna o texto
|
47
56
|
if resposta["status"] == 5
|
48
57
|
# a variavel feedback controla se vai ter resposta por audio ou apenas visual
|
49
|
-
if feedback==
|
58
|
+
if @feedback=='sim'
|
50
59
|
resposta("favor repêtir o comando")
|
51
60
|
else
|
52
|
-
puts "
|
61
|
+
puts "EVA: Favor repetir o comando"
|
53
62
|
end
|
54
63
|
|
55
64
|
else
|
56
65
|
# pega apenas o texto do json
|
57
66
|
resp = resposta["hypotheses"][0]["utterance"]
|
58
|
-
puts resp
|
67
|
+
# puts resp
|
59
68
|
# retorna o texto
|
60
69
|
return resp
|
61
70
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
# Esse código transforma texto em audio via api do google Translate
|
2
3
|
require "cgi"
|
3
4
|
require 'open-uri'
|
@@ -14,6 +15,10 @@ def resposta(texto)
|
|
14
15
|
end
|
15
16
|
# system executa um comando no prompt
|
16
17
|
# play.exe executa audio via linha de comando para não precisar de um player externo.
|
17
|
-
|
18
|
+
if @showrecord == 'sim'
|
19
|
+
system('play.exe arquivo.mp3')
|
20
|
+
else
|
21
|
+
system('play.exe -q arquivo.mp3')
|
22
|
+
end
|
18
23
|
end
|
19
24
|
# resposta('abrindo chrome')
|
@@ -13,4 +13,14 @@
|
|
13
13
|
#[finalizar illustrator]:[finalizando illustrator]=>[&illustrator.exe]
|
14
14
|
#[abrir prompt]:[abrindo prompt de comando]=>[%cmd.exe]
|
15
15
|
#[finalizar prompt]:[finalizando prompt]=>[&cmd.exe]
|
16
|
-
#[
|
16
|
+
#[atualizar comandos]:[lista de comandos atualizada]=>[$evaconfig]
|
17
|
+
#[bom dia]:[tenha um bom dia]=>[]
|
18
|
+
#[sair]:[finalizando sistema de voz]=>[]
|
19
|
+
#[finalizar sistema]:[finalizando sistema de voz]=>[$exit]
|
20
|
+
#[desativar som]:[sistema de beep desativado]=>[$beepoff]
|
21
|
+
#[ativar som]:[sistema de beep ativado]=>[$beepon]
|
22
|
+
#[desativar]:[sistema de resposta desativado]=>[$feedbackoff]
|
23
|
+
#[ativar]:[sistema de resposta ativado]=>[$feedbackon]
|
24
|
+
#[exibir som]:[sistema de som visualmente ativo]=>[$showrecordon]
|
25
|
+
#[ocultar som]:[sistema de som visualmente oculto]=>[$showrecordoff]
|
26
|
+
#[exibir comandos]:[exibindo lista de comandos]=>[$listarcomandos]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eva-ia-robot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,32 +9,143 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-02-
|
12
|
+
date: 2014-02-20 00:00:00.000000000 -03:00
|
13
13
|
default_executable:
|
14
|
-
dependencies:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: cgi
|
17
|
+
requirement: &24307476 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *24307476
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: open-uri
|
28
|
+
requirement: &24307212 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *24307212
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: json
|
39
|
+
requirement: &24306960 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
|
+
type: :runtime
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *24306960
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: fileutils
|
50
|
+
requirement: &24306696 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
type: :runtime
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *24306696
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: nokogiri
|
61
|
+
requirement: &24306444 !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
63
|
+
requirements:
|
64
|
+
- - ! '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
type: :runtime
|
68
|
+
prerelease: false
|
69
|
+
version_requirements: *24306444
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rubygems
|
72
|
+
requirement: &24306168 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
type: :runtime
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: *24306168
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: rbconfig
|
83
|
+
requirement: &24305904 !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
85
|
+
requirements:
|
86
|
+
- - ! '>='
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
type: :runtime
|
90
|
+
prerelease: false
|
91
|
+
version_requirements: *24305904
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: yaml
|
94
|
+
requirement: &24305652 !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ! '>='
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
100
|
+
type: :runtime
|
101
|
+
prerelease: false
|
102
|
+
version_requirements: *24305652
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: win32/sound
|
105
|
+
requirement: &24305376 !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
type: :runtime
|
112
|
+
prerelease: false
|
113
|
+
version_requirements: *24305376
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: win32ole
|
116
|
+
requirement: &24305052 !ruby/object:Gem::Requirement
|
117
|
+
none: false
|
118
|
+
requirements:
|
119
|
+
- - ! '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
type: :runtime
|
123
|
+
prerelease: false
|
124
|
+
version_requirements: *24305052
|
15
125
|
description: Gem integrada com Google Speech e Google Translate
|
16
126
|
email: henriqueutsch@gmail.com
|
17
127
|
executables: []
|
18
128
|
extensions: []
|
19
129
|
extra_rdoc_files: []
|
20
130
|
files:
|
21
|
-
-
|
22
|
-
- eva_ia_robot/eva-
|
23
|
-
- eva_ia_robot/eva-
|
24
|
-
- eva_ia_robot/eva-
|
25
|
-
-
|
26
|
-
- eva_ia_robot/libgomp-1.dll
|
27
|
-
- eva_ia_robot/libltdl-7.dll
|
28
|
-
- eva_ia_robot/libmad.dll
|
29
|
-
- eva_ia_robot/libmp3lame.dll
|
30
|
-
- eva_ia_robot/pthreadgc2.dll
|
31
|
-
- eva_ia_robot/zlib1.dll
|
32
|
-
- eva_ia_robot/eva.config
|
33
|
-
- eva_ia_robot/play.exe
|
34
|
-
- eva_ia_robot/rec.exe
|
35
|
-
- eva_ia_robot/sox.exe
|
36
|
-
- eva_ia_robot/wget.exe
|
37
|
-
-
|
131
|
+
- lib/eva_ia_robot/eva-ia-robot.rb
|
132
|
+
- lib/eva_ia_robot/eva-modulo.rb
|
133
|
+
- lib/eva_ia_robot/eva-pergunta.rb
|
134
|
+
- lib/eva_ia_robot/eva-resposta.rb
|
135
|
+
- tests/eva_ia_robot_test.rb
|
136
|
+
- lib/eva_ia_robot/libgomp-1.dll
|
137
|
+
- lib/eva_ia_robot/libltdl-7.dll
|
138
|
+
- lib/eva_ia_robot/libmad.dll
|
139
|
+
- lib/eva_ia_robot/libmp3lame.dll
|
140
|
+
- lib/eva_ia_robot/pthreadgc2.dll
|
141
|
+
- lib/eva_ia_robot/zlib1.dll
|
142
|
+
- lib/eva_ia_robot/eva.config
|
143
|
+
- lib/eva_ia_robot/play.exe
|
144
|
+
- lib/eva_ia_robot/rec.exe
|
145
|
+
- lib/eva_ia_robot/sox.exe
|
146
|
+
- lib/eva_ia_robot/wget.exe
|
147
|
+
- lib/eva_ia_robot/config.yml
|
148
|
+
- lib/Rakefile
|
38
149
|
- eva_ia_robot.gemspec
|
39
150
|
has_rdoc: true
|
40
151
|
homepage: https://github.com/henriqueutsch/Eva-IA-Robot
|
@@ -1,86 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
# comandos.conf
|
3
|
-
# documentar caminho completo
|
4
|
-
# modulos do ruby para instalar basta abrir o prompt de comando e digitar "gem install [nome]" ex: "gem install win32ole"
|
5
|
-
require "cgi"
|
6
|
-
require 'open-uri'
|
7
|
-
require 'json'
|
8
|
-
require 'win32ole'
|
9
|
-
require 'rbconfig'
|
10
|
-
require 'fileutils'
|
11
|
-
|
12
|
-
|
13
|
-
# carrega os arquivos .rb tentei com require mas não funcionou
|
14
|
-
load 'eva-pergunta.rb'
|
15
|
-
load 'eva-resposta.rb'
|
16
|
-
load 'eva-modulo.rb'
|
17
|
-
|
18
|
-
shell = WIN32OLE.new('Shell.Application')
|
19
|
-
frase = ""
|
20
|
-
feedback = true
|
21
|
-
beep = true
|
22
|
-
listacomandos = Array.new
|
23
|
-
listaresposta = Array.new
|
24
|
-
listaexecutar = Array.new
|
25
|
-
|
26
|
-
File.open(Dir.pwd()+'/eva.config', 'r:utf-8') do |linha|
|
27
|
-
while line = linha.gets
|
28
|
-
# p line
|
29
|
-
# p line.class
|
30
|
-
# p line.index('#')
|
31
|
-
# p line.index(':')
|
32
|
-
# p line.index('=')
|
33
|
-
# p line.size
|
34
|
-
line.encoding
|
35
|
-
comandos = line[line.index('#')+1..line.index(':')-1]
|
36
|
-
resposta = line[line.index(':')+1..line.index('=>')-1]
|
37
|
-
executar = line[line.index('=>')+2..line.size]
|
38
|
-
|
39
|
-
comandos
|
40
|
-
listacomandos << comandos.gsub('[','').gsub(']','')
|
41
|
-
listaresposta << resposta.gsub('[','').gsub(']','')
|
42
|
-
listaexecutar << executar.gsub('[','').gsub(']','').gsub('\n','')
|
43
|
-
|
44
|
-
end
|
45
|
-
end
|
46
|
-
# puts listacomandos
|
47
|
-
# puts listaresposta
|
48
|
-
# puts listaexecutar
|
49
|
-
|
50
|
-
|
51
|
-
# p listacomandos.index('abrir chrome')
|
52
|
-
# p listaresposta[listacomandos.index('abrir chrome')]
|
53
|
-
|
54
|
-
|
55
|
-
while frase !="sair" do
|
56
|
-
|
57
|
-
|
58
|
-
begin
|
59
|
-
p frase = pergunta(feedback,beep)
|
60
|
-
rescue =>e
|
61
|
-
puts e.message
|
62
|
-
end
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
if listacomandos.include? frase
|
67
|
-
|
68
|
-
if listaexecutar[listacomandos.index(frase)].include? '%'
|
69
|
-
p abrir = listaexecutar[listacomandos.index(frase)].gsub('%',"").gsub("\n",'')
|
70
|
-
shell.ShellExecute(abrir, "", "", "open", 1)
|
71
|
-
end
|
72
|
-
|
73
|
-
if listaexecutar[listacomandos.index(frase)].include? '&'
|
74
|
-
p fechar = listaexecutar[listacomandos.index(frase)].gsub('&',"").gsub("\n",'')
|
75
|
-
system("taskkill /IM #{fechar}")
|
76
|
-
end
|
77
|
-
|
78
|
-
if listaresposta[listacomandos.index(frase)].include? '$'
|
79
|
-
p executar = listaresposta[listacomandos.index(frase)].gsub('$',"")
|
80
|
-
modulos(executar)
|
81
|
-
else
|
82
|
-
resposta(listaresposta[listacomandos.index(frase)])
|
83
|
-
puts listaresposta[listacomandos.index(frase)]
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|