Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Будильник с помощью amarok + cron  (Прочитано 4281 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Shurik2k5

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Будильник с помощью amarok + cron
« : 27 Февраля 2009, 13:44:51 »
"Вовремя не прозвонивший будильник изменил судьбы миллионов"..
Агата Кристи

Сегодня возникла необходимость 100% пробуждения сутра, потому что как обычно засиделся до поздней ночи, а так как у меня компьютер постоянно работает (качаю торренты ;)), а с телефона я не просыпаюсь, причем довольно давно :) Вот, возникла идея сообразить будильник с помощью amarok'a и cron'a

И так поехали :)

Нам потребуются: amarok, crontab

Пробуем выполнить команду:
DISPLAY=:0 amarok -p
Если амарок запустился, отлично :) Параметр -p означает играть текущий плей-лист

Теперь создадим эмуляцию плавного нарастания громкости (согласитесь так намного приятнее :)). На помощь нам приходи amixer:
Создаем файл .cron_alarm
gedit ~/.cron_alarmС содержимым:
#!/bin/bash
amixer sset Master 0% unmute;
DISPLAY=:0 amarok -p;
sleep 1;
amixer sset Master 10% unmute;
sleep 1;
amixer sset Master 20% unmute;
sleep 1;
amixer sset Master 30% unmute;
sleep 1;
amixer sset Master 40% unmute;
sleep 1;
amixer sset Master 50% unmute;
sleep 1;
amixer sset Master 60% unmute;
sleep 1;
amixer sset Master 70% unmute;
sleep 1;
amixer sset Master 80% unmute;
sleep 1;
amixer sset Master 90% unmute;
sleep 1;
amixer sset Master 100% unmute;

Естественно, кому не подходят эти параметры, могут варировать слипы и процентаж громкости.

Далее в добавим нашу задачу на выполнение:
crontab -eИ в него добавляем следующую строчку
30 8 * * 1-5  bash ~/.cron_alarm  #Будильник :)
Первое число означает минуты, второе - часы, третье - дни месяца, затем месяца и дни недели. После этого команда, которую стоит выполнить при помощи shell’а. Звездочка означает все совпадения с 1 по последнее возможное значение (например, для минут звёздочка будет соответствовать диапазону 0-59). Также можно задать список значений через запятую (без пробелов). В моем случае cron выполнит команду с понедельника по пятницу в 8:30.

Хотя и первоначальная настройка такого будильника кажется сложной, она того стоит ;)

Можно скомбинировать, или добавить несколько записей на разные будильники.
Ubuntu 8.10, 2.6.27-12-generic, GNOME + KDE4.2.

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: Будильник с помощью amarok + cron
« Ответ #1 : 27 Февраля 2009, 15:57:23 »
Можно заменить тяжелый графический amaroK легким консольным mpg123. Для будильника имхо достаточно.
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн Shurik2k5

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Будильник с помощью amarok + cron
« Ответ #2 : 01 Марта 2009, 18:15:32 »
2Lion-Simba: У меня постоянно работают иксы, поэтому проблем с этим нет :)

Немного обновил скрипт загрузки будильника, добавил проверку на запущенного торрент-клиента (у меня не очень широкий канал чтобы качать и слушать радио, а без торрентов слушать можно :)
#!/bin/bash
# громкость, до которой разгоняемся, в процентах
maxvolume=100
# время, за которое достигаем максимальной громкости, в секундах
raisetime=20
#играть интернет-радио?
play_inet_radio=1
#радио плейлист
radio_playlist='http://www.nashe.ru/nashe-128.m3u'
#локальный плейлист
offline_playlist='/home/shurik/alarm_playlist.m3u'
#проверять запущен ли торрент-клиент?
check_torrent=0
#название проверяемого торрент-клиента
torrent_client='ktorrent'

#убираем громкость совсем
amixer sset Master 0% unmute;

#проверяем интернет и запущен торрент-клиент
if [ "$play_inet_radio" -eq 1 ] && [ `ping -c 1 ya.ru | head -n 5 | tail -n 1 | awk '{print $4}'` -eq 1 ] && ! [[ "$check_torrent" -eq 1 && -z `ps -e | grep '$torrent_client' | head -n 1` ]]
then DISPLAY=:0 amarok -p -l "$radio_playlist" &> /dev/null #и запускаем интернет-радио
else DISPLAY=:0 amarok -p -l "$offline_playlist" &> /dev/null #грузим amarok с проигрыванием оффлайн плей-листа
fi
#ждем пока загрузится
sleep $((5+$play_inet_radio*3));

#ставим громкость в ноль
volume=0

while [ "$volume" -le "$maxvolume" ]
do
#прибавляем по единичке громкости
volume=$((volume+1))
amixer sset Master $volume% unmute;
# плавно
sleep `echo "scale=3; $raisetime / $maxvolume" | bc`
done
Ubuntu 8.10, 2.6.27-12-generic, GNOME + KDE4.2.

 

Страница сгенерирована за 0.016 секунд. Запросов: 21.