Como posso reproduzir um som quando a execução do script está pronta?

39

Eu estou executando de vez em quando alguns scripts python que demoram muito para serem executados.

Eu os executo assim: $ time python MyScript.py

Como posso reproduzir um som assim que a execução do script é feita?

Eu uso o Ubuntu 10.10 (desktop Gnome).

    
por Martin Thoma 04.03.2011 / 23:44

7 respostas

36

Anexe qualquer comando que reproduza um som; isso pode ser tão simples quanto

$ time mycommand; printf ''

ou tão complexo quanto

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

(Os comandos assumem que o pulseaudio está instalado; substitua seu player de som, o que dependerá do ambiente da área de trabalho.)

    
por 05.03.2011 / 00:05
9

Escolha um som no seu disco rígido e coloque um comando para reproduzi-lo logo após o comando que você está esperando; eles acontecerão sequencialmente:

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

(Você pode usar qualquer player, naturalmente). Eu tenho um script chamado alertdone que toca um tom e mostra um alerta de libnotify quando executado; Eu uso exatamente nesta ocasião:

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

É muito simples, por isso, se você quiser criar o seu próprio, pode basear-se nisto (o meu exige notify-more , mplayer e ~/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
    
por 05.03.2011 / 00:03
9

spd-say

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

Loop infinito com -w se você precisar de motivação extra:

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

Pré-instalado em 14.04 através do pacote speech-dispatcher : link para pessoas cegas, eu suponho?

Adicione também um pop-up

Esta combinação é um salva-vidas:

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

e depois:

super-slow-command;b

Se eu estiver em algum lugar da sala, vou ouvir e saber que o longo trabalho está feito.

Caso contrário, verei o pop-up quando eu voltar ao meu computador.

Relacionados: link

    
por 28.07.2016 / 13:55
8
time python MyScript.py; play /path/so/sound.ogg

play é um reprodutor de som muito básico (sem interface do usuário) do sox Instale o pacote sox http://bit.ly/software-small . Você pode substituí-lo por qualquer outro reprodutor de som controlado por linha de comando.

    
por 05.03.2011 / 00:00
4

Pessoalmente, uso my-script && notify-send "done" . Isso envia uma notificação na área de trabalho, que no Linux Mint (Cinnamon) tem esta aparência:

    
por 15.10.2018 / 02:40
3

Você também pode fazer isso acontecer automaticamente.

Eu mostrarei como, em zsh , adicionarei informações sobre bash .

A essência é assim:

preexec()
{
    starttime=$SECONDS
}

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

Você também pode fazer isso somente se o programa for Python, por exemplo

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
}

Em bash , a melhor maneira é fazer o download preexec.bash.txt e fonte-lo (por exemplo, . ~/preexec.bash.txt no topo do seu ~/.bashrc , então o acima (ou algo próximo a ele) deve funcionar. (Não tenho certeza sobre o $3 bit para verificar se o comando é Python.)

Se você estiver usando o GNOME Terminal, eu também o direcionarei para o Flashing GNOME Terminal . É um patch que eu escrevi que faz o terminal piscar quando um comando é feito, então você pode usar o Alt-Tab para outra coisa, então ele avisa quando é feito.

    
por 05.03.2011 / 00:12
-1

Qualquer jogador pode ser usado. Estou adicionando cvlc para integridade.

    
por 26.12.2014 / 08:52