Як я можу відтворити звук, коли виконання сценарію готове?


44

Раз у раз я виконую кілька сценаріїв python, на виконання яких потрібно багато часу.

Я виконую їх так: $ time python MyScript.py

Як я можу відтворити звук, як тільки виконується виконання сценарію?

Я використовую Ubuntu 10.10 (робочий стіл Gnome).


Ви використовуєте bashабо zsh? Насправді є деякі способи зробити це автоматично, але вони досить задіяні і залежать від того, яку оболонку ви використовуєте.
Мікель

$ echo $ SHELL повертає "/ bin / bash"
Мартін Тома

Відповіді:


39

Додайте будь-яку команду, яка відтворює звук; це може бути так само просто

$ time mycommand; printf '\7'

або настільки ж складний, як

$ time mycommand && paplay itworked.ogg || paplay bombed.ogg

(Команди припускають, що встановлено pulseaudio; підмініть звуковий програвач, що залежатиме від вашого робочого столу.)


6
+1 paplay- це, мабуть, найкраща команда, яка використовується для відтворення звуку в "сучасній" системі Linux.
Мікель

4
printf '\ 7' не працює для мене, але ця команда працювала так, як я цього хотівtime python MyScript.py -n 40 && paplay /usr/share/sounds/ubuntu/stereo/desktop-login.ogg || paplay /usr/share/sounds/ubuntu/stereo/phone-outgoing-busy.ogg
Мартін Тома

printf '\7'працює для мене (paplay doesn; (git shell)), але це просто дуже маленький біп . Чи є більше кодів, які видають інші звуки? Я спробував \6, \8але вони є деякими персонажами.
laggingreflex

2
@laggingreflex Ні, \7(BEL), як правило, є єдиним символом, який, можливо, спрацьовує звуком (див. статтю Вікіпедії Контрольний символ ); зауважте, що це може не завжди видавати звук.
musiphil

3
@laggingreflex Вам, мабуть, це вже не потрібно, але лише для сміху;)for i in {1..30}; do for j in {1..3}; do printf '\7'; sleep 0.12; done; sleep 0.4; done
cprn

16

spd-say

sleep 2; spd-say 'get back to work'

Нескінченний цикл, -wякщо вам потрібна додаткова мотивація:

sleep 2; while true; do spd-say -w 'get back to work'; done

Попередньо встановлено 14.04 через пакет speech-dispatcher: http://releases.ubuntu.com/trusty/ubuntu-14.04.4-desktop-amd64.manifest для сліпих людей, я думаю?

Також додайте спливаюче вікно

Цей комбо - це збереження життя ( bрозшифровується як beep):

b() ( spd-say 'done'; zenity --info --text "$(date);$(pwd)" & )

і потім:

super-slow-command;b

Якщо я десь в кімнаті, почую це і знаю, що довга робота зроблена.

Інакше спливаюче вікно я побачу, коли повернусь до свого комп’ютера.

Пов’язано: https://stackoverflow.com/questions/7035/how-to-show-a-gui-message-box-from-a-bash-script-in-linux


Щоб отримати spd-sayінструмент, пов’язаний із speech-dispatcher, можливо, вам знадобиться встановити підпакет типу speech-dispatcher-utils(Fedora 24).
dfarrell07

9

Просто виберіть звук на своєму жорсткому диску і поставте команду для відтворення його відразу після команди, на яку ви чекаєте; вони відбудуться послідовно:

$ time python MyScript.py; mplayer ~/ScriptDone.wav

(Ви можете використовувати будь-якого гравця, природно). У мене є скрипт, який називається, alertdoneякий відтворює тон і показує попередження про те, що він працює; Я використовую його саме для цього випадку:

$ time python MyScript.py; alertdone "Done timing"

Це дійсно просто, так що якщо ви хочете зробити свій власний ви можете засновувати його на це (моє вимагає notify-more, mplayerі ~/tones/alert_1.wavхоча):

#!/bin/bash
message=${1:-"Finished working"}
notify-more -t 10000 -i /usr/share/icons/gnome/32x32/actions/insert-object.png "Process Finished" "$message"
mplayer ~/tones/alert_1.wav

2
notify-moreабо notify-sendсправді можуть бути корисними альтернативами відтворення звуку.
Мікель

@Mikel Я повністю захоплююсь лібнотифікацією; все в моїй системі спливає сповіщення
Michael Mrozek

8
time python MyScript.py; play /path/so/sound.ogg

playє дуже базовим (без користувальницького інтерфейсу) програвачем звуку з пакету http://x.ly/software-small Install sox Install sox . Ви можете замінити його будь-яким іншим програвачем звуку, керованим командним рядком.


Так, play, aplayабо paplay. (Моя система Ubuntu має aplayі paplayза замовчуванням.)
Мікель

1
time python MyScript.py -n 40; paplay /usr/share/sounds/ubuntu/stereo/desktop-login.oggпрацювали, спасибі
Мартін Тома

5

Особисто я використовую my-script && notify-send "done". Це надсилає сповіщення на робочому столі, яке на Linux Mint (Cinnamon) виглядає так:

введіть тут опис зображення


3

Ви також можете зробити це автоматично.

Я покажу тобі як zsh, а потім додам інформацію про bash.

Суть виглядає так:

preexec()
{
    starttime=$SECONDS
}

precmd()
{
    if ((SECONDS - starttime >= 5)); then
        aplay "sound.wav"
        # or printf "\b", or notify-send, or whatever
    fi
}

Ви також можете змусити це робити, лише якщо програма була Python, наприклад

preexec()
{
    starttime=$SECONDS
    case $3 in python*)
        command_is_python=true;;
    *)
        command_is_python=false;;
    esac
}

precmd()
{
    if $command_is_python && ((SECONDS - starttime >= 5)); then
        aplay "sound.wav"
        # or printf "\b", or notify-send, or whatever
    fi
}

В bash, кращий спосіб для завантаження preexec.bash.txt і його джерела (наприклад , . ~/preexec.bash.txtу верхній частині вашого ~/.bashrc, то вище (або що - щось близьке до нього) повинен працювати. (Не впевнений щодо $3трохи , щоб перевірити , якщо команда Python .)

Якщо ви використовуєте термінал GNOME, я б також вказав на миготливий термінал GNOME . Я написав патч, який змушує термінал моргати, коли виконується команда, тож ви можете Alt-Tab до чогось іншого, і це дає вам знати, коли це зроблено.


1

Вам не потрібно додавати команду до всього, ви можете фактично використовувати сценарій, який робить це автоматично для вас. Він називається unistract-me, і він доступний на Github.

приклад

sudo apt install undistract-me    #installs the script (on Debian)
echo 'source /etc/profile.d/undistract-me.sh' >> ~/.bashrc #adds auto-enable to your console
echo 'export LONG_RUNNING_COMMAND_TIMEOUT=XXX' >> ~/.bashrc #where XXX is number of seconds when the command is long enough to alert you
echo 'export UDM_PLAY_SOUND=1' >> ~/.bashrc #to enable sound alert

тепер почніть новий баш, і ви налаштовані. Звук та попередження можна змінити, змінивши сценарій.


-1

Будь-який гравець може бути використаний. Я додаю cvlcдля повноти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.