Система Orphus

пятница, 27 июля 2012 г.

Короткие факты в консоль

Сегодня набрел на сайт Фактрум, а точнее его страничку "Короткие факты". Мне это довольно сильно понравилось, поэтому решил сделать скриптик и прикрутить его к консоли, чтобы периодически выводился на нее какой-нибудь факт.



На фактруме какого-либо API я, к сожалению, не нашел, поэтому пришлось парсить сам html. Код написан на скорую руку, поэтому выглядит не очень, но работает стабильно.
Собственно сам код:
#!/bin/bash


# sleep time in seconds
SLEEPTIME="10"

[ -n "$1" ] && SLEEPTIME="$1"

NOW="`date '+%s'`"
LASTTIME_FILE="/dev/shm/factroom.lasttime"
[ ! -e "$LASTTIME_FILE" ] && echo "$NOW" > $LASTTIME_FILE
LASTTIME=`cat "$LASTTIME_FILE"`

if [ `expr $NOW - $LASTTIME` -gt $SLEEPTIME ] ; then 
    wget -t 2 -T 1 -qO- 'http://www.factroom.ru/random/' | sed -n '/<title>\|\/random\/[0-9]\+\//p' | tr -d '\n' | sed -e 's/^<title>\t\?\(.*\)\ #.\+.*\(\/random\/[0-9]\+\/\).*$/\1 \t >>> www.factroom.ru\2\n/'
    echo "$NOW" > $LASTTIME_FILE
fi
В переменной $LASTTIME_FILE используется каталог /dev/shm/, т.к. он находится в RAM и есть почти во всех современных дистрибутивах.
Переменная $SLEEPTIME нужна для того, чтобы факты не выводились слишком часто. Так же можно передать скрипту нужное кол-во секунд, например:
factroom 300
Т.о. скрипт не выведет ничего, если еще не прошло 5 минут с момента последнего вывода факта.

А чтобы в консоль само писалось, я добавил в .bashrc такую строчку:
PROMPT_COMMAND="factroom 900"
Теперь каждые 15 минут у меня в консоли появляется новый факт:
Кошки не ощущают сладкий вкус.   >>> www.factroom.ru/random/450/



PS: Александр Таранов, спасибо тебе за "Короткие факты".



Информация с сайта http://blog.angel2s2.ru/.

Похожие статьи

8 коммент.:

dtulyakov комментирует... пятница, 18 января 2013 г., 16:49:00 GMT+3

если ещё добавить | /usr/games/cowsay -f /usr/share/cowsay/cows/tux.cow
то будет ещё прикольнее ;)

Анонимный комментирует... среда, 23 января 2013 г., 16:25:00 GMT+3

echo $(lynx -dump http://www.factroom.ru/random/ | sed -e '1,/\[.*/!s/.*//g;s/\[.*$//g;3,$d')
(или, для верности, 4,$d)
Попроще будет.

Александр Филёв комментирует... пятница, 12 апреля 2013 г., 11:58:00 GMT+3

а где сохранять скрипт чтоб он заработал, т.к. мне пишет - команда не найдена. ?

Roman Shagrov комментирует... пятница, 12 апреля 2013 г., 12:10:00 GMT+3

В любом каталоге, который есть в переменной окружения $PATH. Я храню в $HOME/.bin и вношу этот каталог в $PATH. Так же можно в .bashrc написать полный путь к скрипту, например:
PROMPT_COMMAND="$HOME/.bin/factroom 900"

Александр Таранов комментирует... вторник, 4 июня 2013 г., 14:58:00 GMT+3

Не за что :) Поправьте название сайта, правильно — Фактрум. API сделаем в этом году.

Roman Shagrov комментирует... вторник, 4 июня 2013 г., 15:06:00 GMT+3

Даже не ожидал, что вы когда-то сюда зайдете :) Очень приятно :)

Пардон :) Исправил!

Fedir комментирует... вторник, 16 июля 2013 г., 17:52:00 GMT+3

Доведём же это безумие до совершества !

echo $(lynx -dump http://www.factroom.ru/random/ | sed -e '1,/\[.*/!s/.*//g;s/\[.*$//g;3,$d') | /usr/games/cowsay -f $(shuf -n1 -e /usr/share/cowsay/cows/*)

Roman Shagrov комментирует... вторник, 16 июля 2013 г., 17:57:00 GMT+3

Ахахах :))) Можно и так, прикола ради... ;)

Отправить комментарий