eva-ia-robot 0.1.5 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- 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
|