我正在运行一个测试脚本,该脚本一遍又一遍地在一个网站上运行,在几个小时内运行了数百次。例如,我想让 ruby 开始播放响亮的歌曲/mp3,以便在我在我相当小的公寓的不同部分时提醒我。
6 回答
我找到了适用于所有 Mac OSX 用户的解决方案。归功于此博客文章: http: //www.mitchchn.me/2014/os-x-terminal/向我展示了它:
Mac 终端有一个名为say
. say
功能与人们希望的完全一样:
say "I'm done master"
只是从终端做到这一点。
在 ruby 脚本中(在我的例子中),这很容易实现。
`say "I'm done master"`
奇迹般有效。
好的,我宁愿默认是女声,但这很好。
要切换语音,请转到系统偏好设置 > 听写和语音 > 文本到语音 > 系统语音
Vicki可能是最好听的女声
编辑:哦,是的,我希望计算机在崩溃时发出声音。在红宝石中做到这一点:
def go(x)
begin# starts rescue block
puts "5/#{x} = #{5/x}"
rescue
`say "something is wrong, master."`
end
end
go(0)
#=> ...
在 mac 上也有该afplay
程序,因此可以执行以下操作:
sleep 180 # sleep 3 minutes
`afplay my_song.mp3`
如果您想在异常后播放一些音乐,只需将您的语句包装在一个begin rescue
块中,当您捕获异常时,运行如下内容(在 *nix 上):
pid = fork{ exec 'mpg123','-q', file }
或者如果您在 Windows 上:
require 'win32ole'
player = WIN32OLE.new('WMPlayer.OCX')
player.OpenPlayer(file)
所以它应该看起来像
def methodThatFails
begin
# Your code here
rescue
pid = fork{ exec 'mpg123','-q', 'nevergonnagiveyouup.mp3' }
end
end
对于 Windows 用户:使用 gem win32-sound,不支持 mp3 但 .wav
# gem install win32-sound
require 'win32/sound'
include Win32
Sound.play("SystemAsterisk", Sound::ALIAS) # play system asterisk sound
Sound.beep(600,200) # play a beep 600 hertz for 200 milliseconds
Sound.play("trompet.wav") # play a file from disk
exception_alarm
当您的 Ruby 代码引发异常时,您可以使用 gem播放 mp3 警报文件。
require 'exception_alarm'
alarm do
# your code...
raise 'play alarm sound'
end
puts "\a"
如果您正在开发一个命令行应用程序并且需要一个简单的终端哔声,请使用以下纯 ruby,没有库,只使用 ansi 转义码。应该在本机终端上工作(ansi 兼容,例如 mac 终端 gnome/kde 终端、term2、ssh 会话、tmux 等。不确定 windows 终端 - 它应该被支持,因为它是一个众所周知的 ansi 序列。听起来就像当您在输入的开头按 DELETE 或 DOWN 箭头。希望对您有所帮助