क्या स्क्रिप्ट के अंत में R बीप बनाने / ध्वनि बजाने का कोई तरीका है?


149

जब मैं R स्क्रिप्ट चलाता हूं तो मैं एक अलग डेस्कटॉप पर कुछ और करता हूं। अगर मैं बार-बार जांच नहीं करता हूं, तो मुझे कभी नहीं पता होता है कि कुछ खत्म हो गया है। क्या मेरी स्क्रिप्ट के अंत में कुछ कोड के माध्यम से बीप आह्वान करने का तरीका है (जैसे सिस्टम बीप) या आर को साउंड बजाना या ग्रोनल को सूचित करना है?

जवाबों:


98
alarm()

अलार्म समारोह। यह \aकंसोल को भेजकर काम करता है


1
यदि आपने पीसी स्पीकर को निष्क्रिय कर दिया है तो सरल और परिपूर्ण, लेकिन बेकार है। हालांकि मुझे नहीं पता कि यह विंडोज पर कैसे चलता है।
193 बजे एएल 3xa

@ मौलोन: मेरे लिए काम करता है, MacOSX 10.11.1, R 3.2.2; आप बेहोश "poump" ध्वनि सुनते हैं।
बेंजामिन

5
विंडोज 7, x64, R 3.2.2 पर मेरे लिए काम नहीं करता है। beeprकाम करता है नीचे पैकेज ठीक हालांकि।
अगस्तिन

159

मेरे पास beeprआर में अधिसूचना ध्वनियां बनाने के एकमात्र उद्देश्य के साथ एक पैकेज ( ) है जो क्रॉस-प्लेटफॉर्म पर काम करना चाहिए। बीपर स्थापित करने और ध्वनि बनाने के लिए निम्नलिखित को चलाएँ:

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

अधिक जानकारी github पर: https://github.com/rasmusab/beepr


1
हे रासमस, अच्छा लग रहा है। मैंने सोचा कि मैं यहाँ पूछूँगा क्योंकि इस पृष्ठ पर बहुत अधिक दृश्यता है: विकल्पों में से बीपर को कॉल किया जा सकता है, अर्थात विकल्प (त्रुटि = बीपर (ध्वनि = 9))? एक सफल रन के बाद इसे कॉल करना उपयोगी है और मैं इसका उपयोग करूंगा, लेकिन कोड को क्रैश होने पर इसे कॉल करना बहुत अच्छा होगा ... चीयर्स!
dez93_2000

4
ज़रूर! तुम सिर्फ इस तरह एक समारोह में लपेट के लिए है: options(error = function() {beep(9)})। सुपर परेशान हालांकि :)
रासमस बैसथ

3
हुर्रे! यह मेरे विंडोज 7 मशीन पर काम करता है जब अन्य सुझावों में से कुछ नहीं था।
जेरामी शहरले

5
यह अब मेरे पसंदीदा पैकेज के रूप में आगे निकल गया है: D
मुल्लेफा

2
@ लुका while (1) beepr::beep(3) था कि आपके लिए उतना ही अजीब था जितना कि मेरे लिए? :}
कच्ची

59

MacOSX पर आप कंप्यूटर को बोलने दे सकते हैं:

system("say Just finished!")

और आप बोलने वाले कृत्रिम आवाज़ को भी बदल सकते हैं:

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

आप अपने कंप्यूटर पर उपलब्ध किसी भी आवाज़ को चुन सकते हैं। योसेमाइट पर आप देख सकते हैं कि सिस्टम प्रेफरेंस में कौन सी आवाजें लगाई गई हैं -> डिक्टेशन और स्पीच -> टेक्स्ट टू स्पीच


50

जब यह हो जाए तो आपको इसे ट्वीट करना चाहिए: http://cran.r-project.org/web/packages/twitteR@indit.html


2
Ken: यह शानदार है! अब मुझे एक ही कमरे में लटकने की जरूरत नहीं है। मैं खुश घंटे में जा सकता हूं और बीयर या कुछ भी कर सकता हूं, जब तक कि मैं एक डीएम कहूं कि कोड नहीं है! मैंने अभी इसे आजमाया है और यह बहुत अच्छा है।
मयासुर

33

alarm मेरे विंडोज मशीन पर काम नहीं करता है इसलिए मैंने एक फ़ंक्शन बनाया जो वास्तव में शोर करता है।

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

यह स्पष्ट रूप से केवल विंडोज पर काम कर सकता है, लेकिन मैं गारंटी नहीं देता कि यह एक मनमाना विंडोज कंप्यूटर पर भी चलेगा। मैंने केवल अपनी मशीन पर इसका परीक्षण किया है, लेकिन मुझे लगा alarmकि मैं इसे उसी स्थिति में पोस्ट करूंगा जब मुझे इसकी समस्या हो।


1
अजीब। alarm()मेरी मशीन एक शोर (एक्सपी, आर इंटरएक्टिवली चल रही है) बनाती है
बेनबर्न

1
दासन का कोड मेरे विंडोज 7 मशीन पर काम नहीं करता है।
रसेलपियरिएस

@drknexus मेरे मशीन पर अन्य विकल्प काम नहीं कर रहे थे। यह एक मेरी मशीन पर काम किया। मैंने कभी दावा नहीं किया कि यह किसी भी मनमानी मशीन पर काम करेगा, लेकिन केवल इसलिए alarm()कि यह मेरी मशीन पर काम नहीं करता है और किसी कारण से ऐसा करता है।
दस्सन

29

बिल्ली ('हैलो वर्ल्ड! \ a')


क्षमा करें मारियो लेकिन यह बिल्कुल भी मदद नहीं करता है। अगर मैं स्क्रीन देख सकता हूं तो मैं निश्चित रूप से बता सकता हूं कि यह कब किया गया है। मुझे अधिक कुछ भी आउटपुट करने की आवश्यकता नहीं है। मुझे कुछ श्रव्य लग रहा था। क्षमा करें, मैंने आपके उत्तर को रद्द कर दिया है (यह पूर्ववत नहीं कर सकता है)।
मआसौरा

5
यह क्यों ठुकराया जा रहा है? को देखो alarmस्रोत और आपको लगता है कि क्या यह होता है सिर्फ एक है देखेंगे cat("\a")कॉल।
निको

खैर, आप क्या जानते हैं ... यहाँ एक विवरण है: उपयोगकर्ता के लिए एक श्रव्य या दृश्य संकेत देता है। लेकिन यह एक ही बात है cat("foo\a")। हो सकता है कि उपयोगकर्ताओं ने इसे पढ़ा हो cat("Hello world!\n")? बताना मुश्किल ...
aL3xa

2
अलार्म महसूस नहीं किया () = बिल्ली ('\' ए), टिप के लिए धन्यवाद। एक साइड नोट के रूप में, C और C ++ में '\ a' भी कर सकते हैं (जो कि मैं इसका इस्तेमाल चीजों को करने के लिए मुझे सूचित करने के लिए कर रहा हूं)। एक दूसरा पक्ष नोट, यदि आप OS X पर हैं और 'System Preferences'> 'Universal Access'> 'Hearing'> सक्षम करें 'स्क्रीन को फ्लैश करें' ... 'a' निष्पादित होने पर आपकी पूरी स्क्रीन ब्लिंक हो जाती है।
एमपीके

17

इतना ही नहीं, जब आप प्रोग्राम को लूपिंग किया जाता है, तो आप Youtube से कुछ महाकाव्य संगीत भी डाल सकते हैं :) (उबंटू / डेबियन के लिए :)

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

हाँ, दुर्भाग्य से ... इसे हटा दिया गया ... लेकिन विचार स्पष्ट है :)
मोलदोवन

1
मैं यह कोशिश करना चाहता हूं, कृपया एक और प्रति खोजें! :)
वाल्डिर लियोनसियो

12

कृपया shell.exec("url")विंडोज़ पर कुछ YouTube क्लिप खोलने के लिए उपयोग करें


यह दृष्टिकोण है। अपेक्षाकृत लंबा संकेत लेकिन आसानी से उत्पन्न संकेत (जैसा कि एक संक्षिप्त / a के विपरीत) उत्पन्न होता है।
रुसलपिएरेस

... मैं नीचे उसी प्रकार का उत्तर प्रदान करता हूं जो विंडोज के अलावा अन्य प्लेटफार्मों पर काम करना चाहिए।
रुस्लिपिएरेस

11

अपडेट करें:

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)

इस तरह एक संदेश प्राप्त करने के लिए:

यहाँ छवि विवरण दर्ज करें

अद्यतन: शामिल @ VLC के sayआदेश।


10

GUI और वेब-ब्राउज़र वाले OS के लिए कुछ यथोचित रूप से स्वतंत्र OS के बारे में कैसे? यह RStudio सर्वर पर भी काम करता है!

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

4
मैं एक रिक रोल की उम्मीद कर रहा था
Ic3fr0g

8

या यदि आप GNU / Linux डिस्ट्रो का उपयोग कर रहे हैं और आपके पास PCspkr मॉड्यूल है, तो ब्लैकलिस्ट किया गया है (PC स्पीकर मुझे हमेशा परेशान कर रहा था), systemकुछ ऑडिटिव / विज़ुअल नोटिफिकेशन के साथ संयोजन करने का प्रयास करें , उदा।

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

आप देख सकते हैं zenity मैनुअल यदि आप में, कहते हैं, सूचना क्षेत्र चेतावनी पसंद करते हैं ... लेकिन, साथ systemसमारोह, आप काफी कुछ भी कर सकते हैं: एक ईमेल भेजने के कुछ अन्य स्क्रिप्ट चलाने, मशीन को रिबूट, sudo rm -rf *.*आदि कुछ भी ... और मेरा मतलब है।

लेकिन इस खड़ा है केवल यदि आप जीएनयू / लिनक्स (या यूनिक्स) वितरण चला रहे हैं, अन्यथा, विंडोज विशिष्ट आदेश के लिए छड़ी है, हालांकि उस मामले में, मैं नहीं आप ज्यादा जानकारी दे सकते हैं ...


7
इस के बराबर MacOSX growlnotifyस्क्रिप्ट है ( ग्रोएल के साथ पैक किया गया ( growl.info ):system("growlnotify -t 'R script info' -m 'Finished!'")
माइकल डन

6

से प्रेरित होकर beepr, यह इस प्रकार की समस्याओं के लिए वर्तमान में उपयोग किया जा रहा कार्य है: 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)
  }
}


5

इस पैकेज पर एक नज़र डालें: RPushBullet

Pushbullet संदेश सेवा के लिए एक आर इंटरफ़ेस, जो कंप्यूटर, फोन और टैबलेट के बीच तेज और कुशल सूचनाएं (और फ़ाइल स्थानांतरण) प्रदान करता है

RPushbullet पूरी तरह से स्वतंत्र और बहु ​​मंच है। अपने प्रश्न के लिए, आप अपने ब्राउज़र पर पुश भेजने के लिए इस लाइब्रेरी का उपयोग कर सकते हैं, लेकिन जाहिर है कि यह आश्चर्यजनक हो जाता है जब आपको दूर रहने के दौरान किसी चीज़ की आवश्यकता होती है जो आपको सूचित कर सकती है। इसके अलावा, आर पैकेज का निर्माता प्रसिद्ध आरसीपीपी, डर्क एडेलबुलेटेल का एक ही है। मैं कहूंगा कि यह एक शॉट के लायक है!


0

आप notify-sendकमांड का उपयोग कर सकते हैं :

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

4
क्या ओएस, क्या संदर्भ?
sindri_baldur

0

इन कई विचारों के कारण, मैंने इंटरनेट एक्सेस के बिना एक समाधान बनाया है, क्योंकि मैं विंडोज के साथ एक वीपीएन क्लाइंट के साथ काम करता हूं। तो यह एक सामान्य विंडोज साउंड बजाता है, जो आमतौर पर किसी भी विंडोज ऑपरेटिंग सिस्टम पर होता है।

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

लूप के बिना कार्य

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

1
हालाँकि आपने इस प्रश्न का उत्तर अच्छी तरह से दिया है, कृपया उत्तर देने के लिए बेहतर तरीके के लिए इस मदद पृष्ठ को देखें मैं एक अच्छा उत्तर कैसे लिख सकता हूँ?
v8-E
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.