sonora - ¿Hay alguna manera de hacer que R emita un pitido/reproduzca un sonido al final de un guión?
macro para reproducir sonido en excel (15)
cat (''¡Hola, mundo! / a'')
Cuando ejecuto scripts R voy a hacer otra cosa en un escritorio diferente. Si no reviso con frecuencia, nunca sé cuándo algo ha terminado. ¿Hay alguna manera de invocar un pitido (como un pitido del sistema) o hacer que R reproduzca un sonido o notifique gruñir a través de algún código al final de mi guión?
¿Qué tal algo razonablemente independiente del sistema operativo para sistemas operativos con GUI y navegadores web? ¡Incluso funciona en el Servidor RStudio!
browseURL(''https://www.youtube.com/watch?v=QH2-TGUlwu4'')
¿Qué tal si tocas algo de música?
shell.exec("foo/Born.to.be.wild.mp3")
Debería hacer un tweet cuando esté listo: http://cran.r-project.org/web/packages/twitteR/index.html
En MacOSX puedes dejar que la computadora hable:
system("say Just finished!")
y también puedes cambiar la voz artificial que hablará:
system("say -v Kathy Just finished!")
Puede elegir cualquier voz que esté disponible en su computadora. En Yosemite puede ver qué voces están instaladas en Preferencias del sistema -> Dictado y voz -> Texto a voz .
Inspirado por beepr
, esta es la función que estoy usando actualmente para este tipo de problemas: D
work_complete <- function() {
cat("Work complete. Press esc to sound the fanfare!!!/n")
on.exit(beepr::beep(3))
while (TRUE) {
beepr::beep(4)
Sys.sleep(1)
}
}
No solo eso, también puedes poner música épica de Youtube cuando el programa termine de hacer bucles :) (Para Ubuntu / Debian :)
system("xdg-open ''http://www.youtube.com/watch?v=9jK-NcRmVcw''")
O si está usando la distribución GNU / Linux y tiene el módulo pcspkr en la lista negra (el altavoz de la PC siempre me molestaba ), intente combinar el system
con alguna notificación auditiva / visual, por ej.
system("aplay -t wav /usr/share/sounds/phone.wav") # for auditive bell (an I mean it literary)
system("zenity --title=/"R script info/" --text=/"Script has finished with zero exit status/" --info") # for GTK dialog
Puede consultar el manual de zenity si prefiere la alerta en, por ejemplo, área de notificación ... Pero, con la función del system
, puede hacer casi cualquier cosa: enviar un correo electrónico, ejecutar otro script, reiniciar el equipo, sudo rm -rf *.*
, etc. cualquier cosa ... y lo digo en serio.
Pero esto solo se aplica SI está ejecutando distribución GNU / Linux (o UNIX); de lo contrario, cumpla con los comandos específicos de Windows, aunque en ese caso, no puedo darle mucha información ...
Puede usar el comando notify-send
:
system("notify-send /"R script finished running/"")
Tengo terminal-notifier instalado en mi Mac para recibir notificaciones de escritorio desde la línea de comandos. A continuación, puede finalizar una llamada al comando system()
esta manera (cambie la ruta, obviamente):
notify <- function(msgString=''Message from R'', titleString=''Message from R'', speakIt=FALSE) {
cmd <- paste(''~/terminal-notifier/terminal-notifier.app/Contents/MacOS/terminal-notifier -message '', ''"'', msgString, ''" -title "'', titleString, ''"'', sep='''')
system(cmd)
if (speakIt) {
system(paste(''say'', msgString))
}
}
Puede llamar a la función de esta manera
notify("R is done", "Message from R", speakIt=TRUE)
para obtener un mensaje como este:
Actualización: incluido @ VLC''s say
command.
Tengo un paquete ( beepr
) con el único propósito de hacer sonidos de notificación en R que deberían funcionar en múltiples plataformas. Ejecute lo siguiente para instalar beepr y hacer un sonido:
install.packages("beepr")
library(beepr)
beep()
Más información en github: https://github.com/rasmusab/beepr
Utilice shell.exec("url")
para abrir algunos clips de YouTube en Windows
eche un vistazo a este paquete: RPushBullet
Una interfaz R para el servicio de mensajes Pushbullet que proporciona notificaciones rápidas y eficientes (y transferencia de archivos) entre computadoras, teléfonos y tabletas
RPushbullet es completamente gratuito y multiplataforma. En cuanto a su pregunta, puede usar esta biblioteca para enviar un Push a su navegador, pero obviamente se vuelve increíble cuando necesita algo de lo que puede notificarle mientras está ausente. Además, el creador del paquete R es el mismo del famoso Rcpp, Dirk Eddelbuettel. ¡Diría que vale la pena intentarlo!
alarm
no funciona en mi máquina con Windows, así que creé una función que realmente hace ruido.
beep <- function(n = 3){
for(i in seq(n)){
system("rundll32 user32.dll,MessageBeep -1")
Sys.sleep(.5)
}
}
Esto claramente solo podría funcionar en Windows, pero no garantizo que incluso se ejecute en una computadora Windows arbitraria. Solo lo probé en mi máquina, pero pensé que lo publicaría en caso de que alguien tuviera el mismo problema con la alarm
que yo.
alarm()
Tha función de alarma.