Учим Linux разговаривать и проверять электронную почту
Футуристические фильмы, говорящие дома... А почему бы не сделать шаг в будущее и не научить Linux разговаривать? Имея Debian Squeeze в качестве домашнего сервера, научим его проверять почту на gmail и сообщать число непрочитанных сообщений с помощью голоса на русском языке.
В этом нелегком деле нам помогут пакеты festival, speech-tools и festvox-ru:
root@localhost:~$ apt-get install festival speech-tools festival-voice festvox-ru |
Проверим как оно звучит:
root@localhost:~$ echo "Привет мир" | festival --language russian --tts |
Если вместо того, чтобы услышать голос, вы увидели сообщение об ошибке: «ESD: error writing — Bad file descriptor», у вас не стоит PulseAudio, который festival пытается использовать по-умолчанию. Для того, чтобы переключить его на использование alsa и избавится от этой ошибки нужно создать файл ~/.festivalrc с таким содержанием:
(Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FILE") (Parameter.set 'Audio_Method 'Audio_Command) |
Теперь перейдем к части с почтой. Gmail представляет удобную atom-ленту для непрочитанных сообщений, используя ее можно написать небольшой скрипт который получает число сообщений аккаунта gmail и информирует об этом с помощью голоса. У меня получился вот такой:
~/bin/check_mail.sh
#!/bin/bash USER="yourname@gmail.com" PASS="secret" plural () { if (( $1 > 10 )) then N=$(($1 % 10)) else N=$1 fi if (( $N > 10 && $N < 20 )) then FORM="сообщений" else if (( $N > 1 && $N < 5 )) then FORM="сообщения" else if (( $N == 1 )) then FORM="сообщение" else FORM="сообщений" fi fi fi echo $FORM } NEW=`/usr/bin/curl -u ${USER}:${PASS} --silent "https://mail.google.com/mail/feed/atom" | grep -c "<entry>"` if (( $NEW > 0 )) then if (( $NEW == 1 )) then echo "У вас одно непрочитанное сообщение электронной почты." | /usr/bin/festival --language russian --tts else echo "У вас $NEW непрочитанных `plural $NEW` электронной почты." | /usr/bin/festival --language russian --tts fi fi exit 0 |
Этот скрипт можно добавить в крон, он нем как рыба если непрочитанных сообщений нет, когда же они появятся, он сообщит вам об этом.