Wymaga zainstalowanego PulseAudio oraz espeak, ale w mojej instalacji były już domyślnie, więc nie spodziewam się problemów z tej strony.
Używa się tak:
Kod: Zaznacz cały
./chime.sh [-q | --quarter] [-h | --help]
Kod: Zaznacz cały
#!/bin/bash
function usage {
echo "Usage:"
echo "$0 <parameters>"
echo -e "-h \t --help \t help"
echo -e "-q \t --quarter \t Quarters mode, read quarters instead of hours"
exit 1
}
if [[ $# -gt 1 ]] || [[ $1 == -h ]] || [[ $1 == --help ]]; then
usage
fi
if [[ $1 == -q ]] || [[ $1 == --quarter ]]; then
tryb=quarter
fi
speed=140 #speed (80..450) word per minute
pitch=25 #pitch (0..99)
language=pl #en, pl
godzina_glowna=( "" #indexing from 0
pierwsza \
druga \
trzecia \
czwarta \
piąta \
szósta \
siódma \
ósma \
dziewiąta \
dziesiąta \
jedenasta \
dwunasta \
pierwsza ) #in case of overflow
godzina_poboczna=( "" #indexing from 0
pierwszej \
drugiej \
trzeciej \
czwartej \
piątej \
szóstej \
siódmej \
ósmej \
dziewiątej \
dziesiątej \
jedenastej \
dwunastej \
pierwszej ) #in case of overflow
minuty=$(date +%M)
godzina=$(date +%l)
pelna_godzina=$(date +%H)
if [[ $tryb == quarter ]]; then #mode being "quarters or other"
case $minuty in
15) wiadomosc="Godzina: kwadrans po "
if [[ $pelna_godzina == 00 ]]; then
wiadomosc=$wiadomosc"północy"
else
wiadomosc=$wiadomosc"${godzina_poboczna[godzina]}"
fi ;;
30) wiadomosc="Godzina: wpół do ${godzina_poboczna[godzina+1]}" ;;
45) wiadomosc="Godzina: za kwadrans "
if [[ $pelna_godzina == 12 ]]; then
wiadomosc=$wiadomosc"północy"
else
wiadomosc=$wiadomosc"${godzina_glowna[godzina+1]}"
fi ;;
[0-2]*) wiadomosc="$minuty po ${godzina_poboczna[godzina]}" ;;
[3-5]*) wiadomosc="za $[60 - $minuty] ${godzina_glowna[godzina+1]}" ;;
*) wiadomosc="Godzina: niepełny kwadrans, $minuty minut" ;;
esac
else #mode being "full hours"
case $pelna_godzina in
00) wiadomosc="Minęła północ" ;;
12) wiadomosc="Minęło południe" ;;
*) wiadomosc="Minęła godzina ${godzina_glowna[godzina]}" ;;
esac
fi
espeak --stdout -s $speed -p $pitch -v $language "$wiadomosc" \
| paplay --property=media.role=event
exit $?