eva-ia-robot 0.1.3 → 0.1.4

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.
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "eva-ia-robot"
3
- s.version = "0.1.3"
3
+ s.version = "0.1.4"
4
4
  s.description = "Gem integrada com Google Speech e Google Translate"
5
5
  s.summary = "Command line"
6
6
  s.author = "Henrique Utsch"
@@ -1,8 +1,7 @@
1
1
  # encoding: utf-8
2
2
  # comandos.conf
3
- # caminho completo execução Dir.pwd
4
3
  # documentar caminho completo
5
- # modulos do ruby para instalar basta abrir o prompt de comando e digitar "gem install [nome]" ex: "gem install win32ole"
4
+ # modulos do ruby para instalar basta abrir o prompt de comando e digitar "gem install [nome]" ex: "gem install win32ole"
6
5
  require "cgi"
7
6
  require 'open-uri'
8
7
  require 'json'
@@ -10,162 +9,78 @@ require 'win32ole'
10
9
  require 'rbconfig'
11
10
  require 'fileutils'
12
11
 
12
+
13
13
  # carrega os arquivos .rb tentei com require mas não funcionou
14
14
  load 'eva-pergunta.rb'
15
15
  load 'eva-resposta.rb'
16
- load 'versao.rb'
17
- load 'os.rb'
18
-
19
- # teste mas ainda não sei como vou fazer isso.
20
- module HelloWorld
21
- def self.say
22
- "Hello World!"
23
- end
24
- end
16
+ load 'eva-modulo.rb'
25
17
 
26
- # tentei abrir o programa pelo system() mas não funcionou direito o WIN32OLE é uma biblioteca "dll" do windows
27
18
  shell = WIN32OLE.new('Shell.Application')
28
- # inicializa configuração
29
19
  frase = ""
30
20
  feedback = true
31
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
+
32
54
 
33
- # loop para ficar gravando o comando de voz repetidamente so sai do loop e finaliza o sistema se o comando "sair" for executado
34
55
  while frase !="sair" do
35
- # se houver algum erro ele imprimi e continua o processamento
56
+
57
+
36
58
  begin
37
- # chama o procedimento pergunta para gravar o audio
38
- # feedback true - habilita a resposta para repetir o comando
39
- # feedback = false - desabilita a resposta para repetir o comndo
40
- # beep = true - habilita beep antes da gravação
41
- # beep = false - desabilita beep antes da gravação
42
-
43
- # a referência sobre a pergunta encontra-se no arquivo eva-pergunta.rb
44
- p frase = pergunta(feedback,beep)
59
+ p frase = pergunta(feedback,beep)
45
60
  rescue =>e
46
- # se houver erro simplesmente imprime
47
61
  puts e.message
48
62
  end
49
63
 
50
- # OBSERVAÇÃO---------------------------------------
51
- # Você pode alterar o valor de frase e de resposta.
52
-
53
- # se a conversão do audio gravado em texto for igual a frase, ele executa os comandos e o feedback auditivo do sistema.
54
- if frase == 'eva'
55
- # quando o usuário dar o comando eva o sitema responde falando "pois não"
56
- # a referência sobre a resposta encontra-se no arquivo eva-resposta.rb
57
- resposta('pois não')
58
- end
59
-
60
- if frase == 'versão'
61
- # recebe a verificação da versão do sistema
62
- resposta(versao())
63
- end
64
-
65
- # desativa o feedback com o conteúdo "favor repetir o comando"
66
- if frase == 'desativar'
67
- resposta('sistema de resposta desativado')
68
- feedback = false
69
- end
70
-
71
- # ativa o feedback com o conteúdo "favor repetir o comando"
72
- if frase == 'ativar'
73
- resposta('sistema de resposta ativado')
74
- feedback = true
75
- end
76
-
77
- # desativa o feedback com o conteúdo "favor repetir o comando"
78
- if frase == 'desativar som'
79
- resposta('sistema de beep desativado')
80
- beep = false
81
- end
82
-
83
- if frase == 'ativar som'
84
- resposta('sistema de beep ativado')
85
- beep = true
86
- end
87
-
88
- if frase == 'abrir chrome'
89
- resposta('abrindo krome')
90
- shell.ShellExecute("chrome.exe", "", "", "open", 1)
91
- end
92
-
93
- if frase == 'que horas são'
94
- resposta("são #{Time.now.hour.to_s} horas e #{Time.now.min.to_s} minutos")
95
- end
96
-
97
- if frase == 'que dia é hoje'
98
- semana = ["","Segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sabado","domingo"]
99
- mes = ["","janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]
100
- resposta("hoje é #{semana[Time.now.wday]} dia #{Time.now.day.to_s} de #{mes[Time.now.month]} de #{Time.now.year.to_s}")
101
- end
102
-
103
- if frase == 'abrir excel'
104
- resposta('abrindo ekcel')
105
- shell.ShellExecute("excel.exe", "", "", "open", 1)
106
- end
107
-
108
- if frase == 'finalizar excel'
109
- resposta('finalizando ekcel')
110
- system("taskkill /IM excel.exe")
111
- end
112
-
113
- if frase == 'abrir word'
114
- p "inicio execução #{Time.now}"
115
- shell.ShellExecute("winword.exe", "", "", "open", 1)
116
- resposta('abrindo word')
117
- p "final execução #{Time.now}"
118
-
119
- end
120
-
121
- if frase == 'finalizar word'
122
- system("taskkill /IM winword.exe")
123
- resposta('finalizando word')
124
-
125
- end
126
64
 
127
- if frase == 'abrir illustrator'
128
- resposta('abrindo ilustreitor')
129
- shell.ShellExecute("illustrator.exe", "", "", "open", 1)
130
- end
131
65
 
132
- if frase == 'finalizar illustrator'
133
- resposta('finalizando ilustreitor')
134
- system("taskkill /IM illustrator.exe")
135
- end
136
-
137
- if frase == 'abrir prompt'
138
- resposta('abrindo prompt de comando')
139
- shell.ShellExecute("cmd.exe", "", "", "open", 1)
140
- end
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
141
72
 
142
- if frase == 'finalizar prompt'
143
- resposta('finalizando prompt')
144
- system("taskkill /IM cmd.exe")
145
- end
73
+ if listaexecutar[listacomandos.index(frase)].include? '&'
74
+ p fechar = listaexecutar[listacomandos.index(frase)].gsub('&',"").gsub("\n",'')
75
+ system("taskkill /IM #{fechar}")
76
+ end
146
77
 
147
- if frase == 'sair'
148
- resposta('finalizando sistema de voz')
149
- resposta('tênha um bom dia')
150
-
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
151
85
  end
152
-
153
- if frase == 'sistema operacional'
154
- resposta("seu sistema operacional é #{os()}")
155
- end
156
-
157
- if frase == 'listar'
158
- resposta("exibindo lista de músicas")
159
- listamusicas = Array.new
160
- listamusicas = Dir.entries('D:/Musicas')
161
- listamusicas.each_with_index{ |musica,indice| p "#{indice} #{musica}"}
162
- end
163
-
164
- if frase == 'tocar'
165
- resposta("exibindo lista de musicas")
166
- listamusicas = Array.new
167
- listamusicas = Dir.entries('D:/Musicas')
168
- listamusicas.each_with_index{ |musica,indice| p "#{indice} #{musica}"}
169
- end
170
-
171
86
  end
@@ -0,0 +1,78 @@
1
+ # encoding: utf-8
2
+ require 'open-uri'
3
+ require 'nokogiri'
4
+ require 'rubygems'
5
+ require 'rbconfig'
6
+
7
+ load 'eva-resposta.rb'
8
+ def os
9
+ @os ||= (
10
+ host_os = RbConfig::CONFIG['host_os']
11
+ case host_os
12
+ when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
13
+ resposta('seu sistema operacional é windous')
14
+ when /darwin|mac os/
15
+ resposta('seu sistema operacional é macosx')
16
+ when /linux/
17
+ resposta('seu sistema operacional é linux')
18
+ when /solaris|bsd/
19
+ resposta('seu sistema operacional é unix')
20
+ else
21
+ raise Error::WebDriverError, "unknown os: #{host_os.inspect}"
22
+ end
23
+ )
24
+ end
25
+
26
+ def versao()
27
+ pagina = Nokogiri::HTML(open("http://rubygems.org/gems/eva-ia-robot"))
28
+ vremota = pagina.xpath("/html/body/div/div[3]/div[1]/div[1]").text
29
+ vremota = vremota.gsub(/[^0-9.]/,'')
30
+ puts vremota
31
+
32
+
33
+ name = /^/i
34
+ dep = Gem::Dependency.new(name, Gem::Requirement.default)
35
+ specs = Gem.source_index.search(dep)
36
+ vlocal = ""
37
+ # specs.map{ |s| puts "#{s.version}" if s.name=="eva-ia-robot"}
38
+ specs.map{ |s| vlocal = s.version if s.name=="eva-ia-robot"}
39
+ vlocal = vlocal.to_s
40
+ puts vlocal
41
+ # vremota= teste
42
+ if vlocal==vremota
43
+ resposta("Sua versão é a mais atual")
44
+ else
45
+ resposta("Existe uma atualização disponível")
46
+ end
47
+
48
+ end
49
+
50
+
51
+ def data()
52
+ semana = ["","Segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sabado","domingo"]
53
+ mes = ["","janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]
54
+ resposta("hoje é #{semana[Time.now.wday]} dia #{Time.now.day.to_s} de #{mes[Time.now.month]} de #{Time.now.year.to_s}")
55
+ end
56
+
57
+ def hora()
58
+ resposta("são #{Time.now.hour.to_s} horas e #{Time.now.min.to_s} minutos")
59
+ end
60
+
61
+ def modulos(modulo)
62
+ case modulo
63
+ when 'hora'
64
+ hora()
65
+ when 'versao'
66
+ versao()
67
+ when 'data'
68
+ data()
69
+ when 'sistema'
70
+ os()
71
+ else
72
+ puts 'erro 1'
73
+ end
74
+ end
75
+
76
+ # modulos('hora')
77
+ # data()
78
+ # os()
@@ -2,8 +2,10 @@
2
2
  # Esse código transforma audio em texto via api do google speech
3
3
 
4
4
  # Win32/sound modulo para tocar um beep via script
5
+ require 'json'
5
6
  require 'win32/sound'
6
7
  include Win32
8
+ load 'eva-resposta.rb'
7
9
 
8
10
  def pergunta(feedback,beep)
9
11
  # imprimi na tela um feedback visual de quando dar o comando verbal
@@ -14,13 +16,13 @@ def pergunta(feedback,beep)
14
16
  Sound.beep(1500, 200)
15
17
  end
16
18
 
17
- p "inicio gravação #{Time.now}"
19
+ # puts "inicio gravação #{Time.now}"
18
20
  # 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
19
21
  # 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
20
- system('rec.exe -r 16000 test.flac silence -l 1 0.1 1% 1 1.5 1%')
22
+ system('rec.exe -q -r 16000 test.flac silence -l 1 0.1 1% 1 1.5 1%')
21
23
  # feedback para o envio do arquivo para o google
22
24
  p 'Enviando arquivo ...'
23
- p "inicio envio #{Time.now}"
25
+ # p "inicio envio #{Time.now}"
24
26
  # envia o arquivo test.flac para o servidor e este retorna um json
25
27
  # {\"status\":0,\"id\":\"\",\"hypotheses\":[{\"utterance\":\"abrir word\",\"confidence\":0.82485712}]}\n"
26
28
  # status =>0 - significa sucesso
@@ -32,11 +34,11 @@ def pergunta(feedback,beep)
32
34
  # loop que corrige um bug de sair do programa quando o tempo de gravação é muito grande ou quando o json retorna algum erro ou simplesmente nulo
33
35
  begin
34
36
  # força a codificação com acento
35
- p request
37
+
36
38
  request.force_encoding('utf-8')
37
39
  # converte a resposta da requisição para json
38
40
  resposta = JSON.parse(request)
39
- p "chegada resposta #{Time.now}"
41
+ # puts "chegada resposta #{Time.now}"
40
42
  rescue =>e
41
43
  # se houver erro ele simplesmente exibe a mensagem de erro e continua o seu processamento normal
42
44
  puts e.message
@@ -59,3 +61,4 @@ def pergunta(feedback,beep)
59
61
  end
60
62
  end
61
63
 
64
+ # pergunta(true,true)
@@ -1,4 +1,6 @@
1
1
  # Esse código transforma texto em audio via api do google Translate
2
+ require "cgi"
3
+ require 'open-uri'
2
4
  def resposta(texto)
3
5
  #converte o texto para a requisição via url
4
6
  texto = CGI::escape(texto)
@@ -12,5 +14,6 @@ def resposta(texto)
12
14
  end
13
15
  # system executa um comando no prompt
14
16
  # play.exe executa audio via linha de comando para não precisar de um player externo.
15
- system('play.exe arquivo.mp3')
16
- end
17
+ system('play.exe -q arquivo.mp3')
18
+ end
19
+ # resposta('abrindo chrome')
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.3
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-02-17 00:00:00.000000000 -03:00
12
+ date: 2014-02-19 00:00:00.000000000 -03:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
  description: Gem integrada com Google Speech e Google Translate
@@ -20,11 +20,9 @@ extra_rdoc_files: []
20
20
  files:
21
21
  - test/eva_ia_robot_test.rb
22
22
  - eva_ia_robot/eva-ia-robot.rb
23
+ - eva_ia_robot/eva-modulo.rb
23
24
  - eva_ia_robot/eva-pergunta.rb
24
25
  - eva_ia_robot/eva-resposta.rb
25
- - eva_ia_robot/os.rb
26
- - eva_ia_robot/vagrantlistbox.rb
27
- - eva_ia_robot/versao.rb
28
26
  - eva_ia_robot/libgomp-1.dll
29
27
  - eva_ia_robot/libltdl-7.dll
30
28
  - eva_ia_robot/libmad.dll
@@ -1,23 +0,0 @@
1
- # encoding: utf-8
2
- # verifica o sistema operacional e retorna o nome do sistema em formato texto
3
- require 'rbconfig'
4
-
5
- def os
6
- @os ||= (
7
- host_os = RbConfig::CONFIG['host_os']
8
- case host_os
9
- when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
10
- 'windows'
11
- when /darwin|mac os/
12
- 'macosx'
13
- when /linux/
14
- 'linux'
15
- when /solaris|bsd/
16
- 'unix'
17
- else
18
- raise Error::WebDriverError, "unknown os: #{host_os.inspect}"
19
- end
20
- )
21
- end
22
-
23
- p os()
@@ -1,32 +0,0 @@
1
- require 'open-uri'
2
- require 'nokogiri'
3
-
4
- pagina = Nokogiri::HTML(open("http://www.vagrantbox.es/"))
5
-
6
-
7
-
8
- nome,link,tamanho,lista = Array.new
9
- nome = pagina.xpath("//table/tbody/tr/th").map {|texto| texto.text}
10
- link = pagina.xpath("//table/tbody/tr/td[2]").map {|texto| texto.text}
11
- tamanho = pagina.xpath("//table/tbody/tr/td[3]").map {|texto| texto.text}
12
- indice = Array.new(tamanho.count) {|i| i+1}
13
- lista = indice,nome,link,tamanho
14
- # lista = puts pagina.xpath("//div/a").text.split('-')
15
- # puts pagina.xpath("//div/a").map {|texto| texto['onclick'].split("'")[1]}
16
- # puts pagina.xpath("//div/a").map {|texto| texto['onclick'].split("'")[3]}
17
-
18
- p "inicio"
19
- p link[58]
20
- system("dir")
21
- p system("vagrant box add Freebsd2 #{link[58]}")
22
-
23
- # pkg_add -r samba36
24
- # NET SHARE vagrant=D:\vagrant "/grant:TODOS,FULL"
25
- # NET SHARE $nomecomp=$caminho "/grant:$User,FULL|READ|WRITE"
26
-
27
-
28
- # mount_smbfs -I 192.168.2.145 //Utsch@UTSCH-PC/Vagrant /usr/home/vagrant
29
- # sudo mount_smbfs -I 192.168.2.145 //Utsch@UTSCH-PC/Vagrant /usr/home/vagrant
30
-
31
-
32
- # VM Config = "/vagrant D:/Vagrant"
@@ -1,31 +0,0 @@
1
- # encoding: utf-8
2
- require 'open-uri'
3
- require 'nokogiri'
4
- require 'rubygems'
5
-
6
-
7
- def versao(teste)
8
- pagina = Nokogiri::HTML(open("http://rubygems.org/gems/eva-ia-robot"))
9
- vremota = pagina.xpath("/html/body/div/div[3]/div[1]/div[1]").text
10
- vremota = vremota.gsub(/[^0-9.]/,'')
11
- p vremota
12
-
13
-
14
- name = /^/i
15
- dep = Gem::Dependency.new(name, Gem::Requirement.default)
16
- specs = Gem.source_index.search(dep)
17
- vlocal = ""
18
- # specs.map{ |s| puts "#{s.version}" if s.name=="eva-ia-robot"}
19
- specs.map{ |s| vlocal = s.version if s.name=="eva-ia-robot"}
20
- vlocal = vlocal.to_s
21
- p vlocal
22
- vremota= teste
23
- if vlocal==vremota
24
- return "Sua versão é a mais atual"
25
- else
26
- return "Existe uma atualização disponível"
27
- end
28
-
29
- end
30
-
31
- # p v = versao("0.2.1")