MyTetra Share
Делитесь знаниями!
Alarm
01.01.2019
13:07
Автор: alensav
Текстовые метки: alarm
Раздел: MyTetra - INTERNET - ZVUK - Alarm_festival
#!/bin/bash

#Чтобы поставить будильник, вводим в терминале команду "crontab -e"
#И прописываем нужные параметры:
## m h  dom mon dow   command
#0 7 * * 1-5 ./alarm.sh
#0 10 * * 6-7 ./alarm.sh


export DISPLAY=:0
export LANG=ru_RU.UTF-8


# Выбираем нужный синтезатор речи, раскомментировав одну из строк:
#sayit () { espeak -vru -s130; }
#sayit () { festival --tts --language russian; }
#sayit () { festival_client --ttw | aplay -q; }
sayit () { RHVoice | aplay -q; }


# Склоняем в соответствующем падеже слова "час" и "минута"

check_date ()

{

HOUR=`date +%H`
MIN=`date +%M`

if [[ "$HOUR" = 1[1234] || "$HOUR" = ?[056789] ]]; then LC_HOUR="часов"
elif [[ "$HOUR" = ?[234] ]]; then LC_HOUR="час+а"
elif [[ "$HOUR" = ?1 ]]; then LC_HOUR="час"
else LC_HOUR="значение не определено"
fi

if [[ "$MIN" = 1[1234] || "$MIN" = ?[056789] ]]; then LC_MINUTE="минут"
elif [[ "$MIN" = ?[34] ]]; then LC_MINUTE="минуты"
else LC_MINUTE="значение не определено"
fi

if [[ "$MIN" = 01 ]]; then TIME="$HOUR $LC_HOUR однa минута"
elif [[ "$MIN" = 11 ]]; then TIME="$HOUR $LC_HOUR $MIN $LC_MINUTE"
elif [[ "$MIN" = ?1 ]]; then TIME="$HOUR $LC_HOUR $(($MIN-1)) одна минута"
elif [[ "$MIN" = 02 ]]; then TIME="$HOUR $LC_HOUR две минуты"
elif [[ "$MIN" = 12 ]]; then TIME="$HOUR $LC_HOUR $MIN $LC_MINUTE"
elif [[ "$MIN" = ?2 ]]; then TIME="$HOUR $LC_HOUR $(($MIN-2)) две минуты"
elif [[ "$MIN" = 00 ]]; then TIME="$HOUR $LC_HOUR ровно"
else TIME="$HOUR $LC_HOUR $MIN $LC_MINUTE"
fi

if [[ "$HOUR" = 08 ]] || [[ "$HOUR" -ge 06 && "$HOUR" -le 11 ]]; then
HELLO="Доброе утро"
elif [[ "$HOUR" -ge 12 && "$HOUR" -le 17 ]]; then
HELLO="Добрый день"
elif [[ "$HOUR" -ge 18 && "$HOUR" -le 23 ]]; then
HELLO="Добрый вечер"
elif [[ "$HOUR" -ge 00 && "$HOUR" -le 05 ]]; then
HELLO="Доброй ночи"
else HELLO="Привет"
fi

}


# Выясняем, в каком городе мы находимся

CITY=`wget -q -O - 2ip.ru | grep -P geoip | sed 's/<[^>]*>//g' | awk '{print $3}'`

CITY_ID=`wget -q -O - http://bar.gismeteo.ru/gmbartlist.xml | iconv -f cp1251 -t utf8 | grep $CITY | awk '{print $3}' | sed 's/[i="]//g'`

TMP_FILE="/tmp/gismeteo_$CITY_ID"

URL="http://www.gismeteo.ru/ztowns/$CITY_ID.htm" #CITY_ID - не тот, к которому привыкли, но перенаправляет, куда надо. Информер: http://informer.gismeteo.ru/xml/$CITY_ID_1.xml


# Получаем температуру в своем городе

wget -q -O - $URL > $TMP_FILE

TEMP="`grep -m 1 'value m_temp c' $TMP_FILE | sed 's/<[^>]*>/ /g' | awk '{print $1}'`"

if [[ `echo $TEMP | grep minus` ]]; then TEMP_SIGN="минус"
else TEMP_SIGN=""
fi

DEGREE="`echo $TEMP | grep -Po '[0-9]{1,2}'`"


# Проверяем погодные условия

WEATH="`grep -m 1 '<dd>' $TMP_FILE | sed 's/[ \t]*//;s/<[^>]*>//g'`"


# Склоняем в соответствующем падеже слово "градус"

if [[ "$DEGREE" = 1[1234] || "$DEGREE" = *[056789] ]]; then LC_DEGREE="градусов"
elif [[ "$DEGREE" = *[234] ]]; then LC_DEGREE="градуса"
elif [[ "$DEGREE" = *1 ]]; then LC_DEGREE="градус"
else LC_DEGREE="значение не определено"
fi


# начальная громкость, в процентах
VOLUME=25
# конечная (максимальная) громкость, в процентах
MAXVOLUME=65


# А теперь сам будильник

amixer -q sset Master $VOLUME% unmute
if [[ `ps h -C rhythmbox` ]]
then sleep 10
else rhythmbox &> /dev/null & sleep 10
fi
rhythmbox-client --set-volume 1.0

playlist="`qdbus --literal org.mpris.MediaPlayer2.rhythmbox /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Playlists.GetPlaylists 1 1 0 0 | sed -e :a -e 's/\][^>]*\]//g;s/\[[^>]*\[ObjectPath: //g'`" #Ищем динамический плейлист "Любимые композиции"
qdbus org.mpris.MediaPlayer2.rhythmbox /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Playlists.ActivatePlaylist $playlist #Запускаем найденный плейлист
rhythmbox-client --next

#rhythmbox-client --play-uri="http://online.radiorecord.ru:8102/tm_128" #Можно и радио послушать

while [[ "$VOLUME" -le "$MAXVOLUME" ]]
do
VOLUME=$(($VOLUME+1))
sleep 1
amixer -q sset Master $VOLUME% unmute
done

sleep 230

rhythmbox-client --set-volume 0.9
sleep 1
rhythmbox-client --set-volume 0.8
sleep 1
rhythmbox-client --set-volume 0.7
sleep 1
rhythmbox-client --set-volume 0.6
sleep 1
rhythmbox-client --set-volume 0.5
sleep 1
rhythmbox-client --set-volume 0.4

check_date
echo "$HELLO, Хозяин" | sayit
echo "Я надеюсь, что вы хорошо спали?" | sayit
echo "Сегодня `date +%A`" | sayit
echo "Время $TIME" | sayit
echo "Температура за окном $TEMP_SIGN $DEGREE $LC_DEGREE, $WEATH" | sayit
echo "Желаю вам удач+нава дня" | sayit

rhythmbox-client --set-volume 0.5
sleep 1
rhythmbox-client --set-volume 0.6
sleep 1
rhythmbox-client --set-volume 0.7
sleep 1
rhythmbox-client --set-volume 0.8
sleep 1
rhythmbox-client --set-volume 0.9
sleep 1
rhythmbox-client --set-volume 1.0

exit 0
 
MyTetra Share v.0.52
Яндекс индекс цитирования