development

스크립트 끝에서 R 신호음을 울리거나 재생하는 방법이 있습니까?

big-blog 2020. 7. 2. 07:14
반응형

스크립트 끝에서 R 신호음을 울리거나 재생하는 방법이 있습니까?


R 스크립트를 실행할 때 다른 데스크탑에서 다른 작업을 수행합니다. 자주 확인하지 않으면 언제 무언가가 완료되었는지 알 수 없습니다. 스크립트 종료시 비프 음 (시스템 비프 음 등)을 호출하거나 R이 소리를 내거나 으르렁 거리는 소리를내는 방법이 있습니까?


alarm()

그쪽으로 알람 기능.


beepr크로스 플랫폼에서 작동 해야하는 R에서 알림 소리를 내기위한 유일한 목적으로 패키지 ( )가 있습니다. beepr을 설치하고 소리를 내려면 다음을 실행하십시오.

install.packages("beepr")
library(beepr)
beep()

github에 대한 추가 정보 : https://github.com/rasmusab/beepr


MacOSX에서는 컴퓨터가 다음과 같이 말할 수 있습니다.

system("say Just finished!")

또한 말할 인공 음성을 변경할 수도 있습니다.

system("say -v Kathy Just finished!")

컴퓨터에서 사용 가능한 음성을 선택할 수 있습니다. Yosemite에서는 시스템 환경 설정-> 받아쓰기 및 말하기-> 텍스트 음성 변환 에서 설치된 음성을 확인할 수 있습니다 .


완료되면 트윗해야합니다 : http://cran.r-project.org/web/packages/twitteR/index.html


alarm Windows 컴퓨터에서 작동하지 않으므로 실제로 노이즈를 발생시키는 기능을 만들었습니다.

beep <- function(n = 3){
    for(i in seq(n)){
        system("rundll32 user32.dll,MessageBeep -1")
        Sys.sleep(.5)
    }
}

이것은 분명히 Windows에서만 작동하지만 임의의 Windows 컴퓨터에서도 실행될 것이라고 보장하지는 않습니다. 나는 내 컴퓨터에서만 테스트했지만 누군가와 같은 문제가있는 경우 게시 할 것이라고 생각했습니다 alarm.


고양이 ( 'Hello world! \ a')


뿐만 아니라 프로그램이 반복되면 Youtube에서 멋진 음악을 넣을 수도 있습니다 :) (Ubuntu / Debian :)

system("xdg-open 'http://www.youtube.com/watch?v=9jK-NcRmVcw'")

shell.exec("url")Windows에서 일부 YouTube 클립을 여는 데 사용 하십시오


최신 정보:

macOS 10.9 (Mavericks) 이상에서는 일반 AppleScript를 사용하여 알림을 게시 할 수 있습니다.

theTitle <- "A Title"
theMsg <- "A message here"

cmd <- paste("osascript -e ", "'display notification ", '"', theMsg, '"', ' with title ', '"', theTitle, '"', "'", sep='')
system(cmd)

이렇게하면 terminal-notifier아래에서 참조 할 필요가 없습니다 .

-

내가있어 터미널 통지 명령 줄에서 바탕 화면 알림을 내 맥에 설치합니다. 그런 다음 다음 system()과 같이 명령 호출을 마무리 할 수 ​​있습니다 (경로 변경).

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))
    }

}

이처럼 함수를 호출 할 수 있습니다

notify("R is done", "Message from R", speakIt=TRUE)

다음과 같은 메시지를 얻으려면

enter image description here

업데이트 : @VLC의 say명령이 포함되었습니다 .


GUI와 웹 브라우저를 사용하는 OS에 대해 OS 독립적 인 것은 어떻습니까? RStudio Server에서도 작동합니다!

browseURL('https://www.youtube.com/watch?v=QH2-TGUlwu4')

Or if you're using GNU/Linux distro and have pcspkr module blacklisted (PC speaker was always annoying me), try combining system with some auditive/visual notification, e.g.

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

You can check zenity manual if you prefer alert in, say, notification area... But, with system function, you can do pretty much anything: send an email, run some other script, reboot the machine, sudo rm -rf *.*, etc. anything... and I mean it.

But this stands only IF you're running GNU/Linux (or UNIX) distribution, otherwise, stick to Windows specific commands, though in that case, I can't give you much info...


Inspired by beepr, this is the function I'm currently using for these kind of problems :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)
  }
}

take a look at this package: RPushBullet

An R interface to the Pushbullet messaging service which provides fast and efficient notifications (and file transfer) between computers, phones and tablets

RPushbullet is completely free and multi platform. As for your question, you can use this library to send a Push to your browser, but obviously it becomes amazing when you need something than can notify you while you are away. Moreover, the creator of the R package is the same of the well known Rcpp, Dirk Eddelbuettel. I'd say it's worth a shot!


How about playing some music?

shell.exec("foo/Born.to.be.wild.mp3")

You can use notify-send command:

system("notify-send \"R script finished running\"")

Because of these many ideas, I have created a solution without Internet access, because I work with a VPN client with Windows. So it plays a typical Windows sound, which is usually on any Windows operating system.

#Function with loop, press Esc to stopp      
    alarm2 <- function(){
      while(TRUE){
        system("cmd.exe",input="C:/Windows/WinSxS/amd64_microsoft-windows-shell-sounds_31bf3856ad364e35_10.0.17134.1_none_fc93088a1eb3fd11/tada.wav")
        Sys.sleep(1)
      }
    }

Function without loop

    alarm3 <- function(){
        system("cmd.exe",input="C:/Windows/WinSxS/amd64_microsoft-windows-shell-sounds_31bf3856ad364e35_10.0.17134.1_none_fc93088a1eb3fd11/tada.wav")
        Sys.sleep(1)
    }

참고URL : https://stackoverflow.com/questions/3365657/is-there-a-way-to-make-r-beep-play-a-sound-at-the-end-of-a-script

반응형