5

我正在运行一个测试脚本,该脚本一遍又一遍地在一个网站上运行,在几个小时内运行了数百次。例如,我想让 ruby​​ 开始播放响亮的歌曲/mp3,以便在我在我相当小的公寓的不同部分时提醒我。

4

6 回答 6

11

我找到了适用于所有 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)
#=> ...
于 2014-05-15T14:10:36.897 回答
6

在 mac 上也有该afplay程序,因此可以执行以下操作:

sleep 180 # sleep 3 minutes
`afplay my_song.mp3`
于 2014-10-03T17:52:39.027 回答
4

如果您想在异常后播放一些音乐,只需将您的语句包装在一个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  
于 2012-10-13T22:18:02.983 回答
2

对于 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
于 2014-01-23T20:17:07.307 回答
1

exception_alarm当您的 Ruby 代码引发异常时,您可以使用 gem播放 mp3 警报文件。

require 'exception_alarm'

alarm do
  # your code...
  raise 'play alarm sound'
end
于 2017-08-02T23:59:11.277 回答
1

puts "\a"

如果您正在开发一个命令行应用程序并且需要一个简单的终端哔声,请使用以下纯 ruby​​,没有库,只使用 ansi 转义码。应该在本机终端上工作(ansi 兼容,例如 mac 终端 gnome/kde 终端、term2、ssh 会话、tmux 等。不确定 windows 终端 - 它应该被支持,因为它是一个众所周知的 ansi 序列。听起来就像当您在输入的开头按 DELETE 或 DOWN 箭头。希望对您有所帮助

于 2020-01-22T10:37:45.633 回答