На фактруме какого-либо 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/.
если ещё добавить | /usr/games/cowsay -f /usr/share/cowsay/cows/tux.cow
ОтветитьУдалитьто будет ещё прикольнее ;)
echo $(lynx -dump http://www.factroom.ru/random/ | sed -e '1,/\[.*/!s/.*//g;s/\[.*$//g;3,$d')
ОтветитьУдалить(или, для верности, 4,$d)
Попроще будет.
а где сохранять скрипт чтоб он заработал, т.к. мне пишет - команда не найдена. ?
ОтветитьУдалитьВ любом каталоге, который есть в переменной окружения $PATH. Я храню в $HOME/.bin и вношу этот каталог в $PATH. Так же можно в .bashrc написать полный путь к скрипту, например:
ОтветитьУдалитьPROMPT_COMMAND="$HOME/.bin/factroom 900"
Не за что :) Поправьте название сайта, правильно — Фактрум. API сделаем в этом году.
ОтветитьУдалитьДаже не ожидал, что вы когда-то сюда зайдете :) Очень приятно :)
ОтветитьУдалитьПардон :) Исправил!
Доведём же это безумие до совершества !
ОтветитьУдалить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/*)
Ахахах :))) Можно и так, прикола ради... ;)
ОтветитьУдалить