28 июн. 2010 г.

Виджет, отображающий расписание студенческой группы (ИТМО) на текущий день

Иногда (особенно когда плохая память на незначительные мелочи :-) ) бывает полезно постоянно иметь перед глазами расписание своей группы в универе. Ради этого, я написал набор из пары скриптов и конфига к conky, которые выводят на рабочий стол расписание группы на текущий день.

Первый скрипт - ifmo_shedule.sh - будучи запущенным в фоне, каждый день скачивает расписание с сайта ИТМО. Это расписание легко получить в удобочитаемой форме, подставив к параметру gr в GET-запросе номер своей группы:

http://www.ifmo.ru/file/schedule.php?gr=3101
 Скачанное расписание преобразуется в псевдотекстовый формат при помощи w3m и сохраняется в дебрях /tmp/.
Оттуда, второй скрипт - ifmo_shedule_curr.sh, достает тот кусок расписания, который отвечает за текущий день. Алгоритм работы прост - узнаются текущий и следующий дни недели (в русской локали), сопоставляются с днями недели в расписании и выводятся строки, расположенные между соответствующими днями недели. Будет работать до тех пор, пока не изменятся названия дней недели в русском языке.
Выводом расписания на рабочий стол заведует conky. Вот часть конфига, отвечающая за вывод расписания на экран:

Если файл расписания будет отсутствовать и новый файл будет еще загружаться, то некоторое время (пока conky не обновится) можно будет наблюдать следующую надпись на экране вместо расписания:
Если же все на месте, то наше расписание будет выглядеть примерно вот так:
Привожу код скриптов:
  • ifmo_shedule.sh

  • ifmo_shedule_curr.sh

Итоговый результат:

4 комментария:

  1. При всём моем к тебе уважении - ШГ, как насчёт распарсить время начала + предмет ?

    ОтветитьУдалить
  2. time2die?
    На моем мониторе все ок, почему на скриншоте все так расплывчато (особенно на том, который с табличкой - без понятия).

    Слишком гемморойно пока что... У меня пока-что даже не обрабатывается ситуация, когда одного из дней нет в расписании - например, субботы.

    ОтветитьУдалить
  3. Там ручками нужно синхронизировать с расписанием на сайте, которое имеет привычку внезапно меняться в начале семестра.

    ОтветитьУдалить