[bash] zegarynka

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
[r4]
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1048
Rejestracja: 08 maja 2007, 07:40
Wersja Ubuntu: 12.10
Środowisko graficzne: Xfce
Architektura: x86

[bash] zegarynka

Post autor: [r4] »

Dla chcących "umilić" sobie spędzanie czasu przed monitorem, napisałem krótki skrypt odczytujący co kwadrans godzinę (po polsku). Używam go z GKrellM, ale bez problemu podłączycie go też do crona.
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 $?
PS Dla zainteresowanych: licencja to copyleft, czyli: mam nadzieję, że podrzucicie jakieś fajne pomysły, jak to cudo rozbudować. :)
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości