Загрузка...
Linux
Новости, статьи, обсуждения, - все что связано с GNU Linux, FreeBSD, OpenBSD, Sun Solaris, Mac OS X и другими системами. Если вы интересуетесь данной темой - добро пожаловать в сообщество.
     

bash.org.ru и fortune

29.05.09, 11:43
Автор ggg

Недавно я открыл для себя такую просту программку как fortune. Все, что она делает - это выводит случайную цитату из базы данных. Иногда очень приятно, когда сервер встречает тебя цитатой с bash.org.ru. В этой короткой статье я напишу как получить цитаты с bash.org.ru по RSS и запихнуть их в fortune.

 

Итак, поскольку я работаю ruby-разработчиком, то скрипт, который будет получать цитаты написан на ruby. Чтобы в deb-подобных системах получить работающий ruby достаточно выполнить команду:

sudo aptitude install ruby-full

Да, и конечно нам потребуется сам fortune:

sudo aptitude install fortune

После этого делаем скрипт bash-org-ru.rb с таким содержимым:

require 'rss/2.0'
require 'cgi'
require 'net/http'
host = Net::HTTP.new('bash.org.ru', 80)
resp, data = host.get('http://bash.org.ru/rss/', nil)
parsed = RSS::Parser.parse(data.gsub(/\< hr\>/, '< hr />'), false)
parsed.items.each { |x| puts CGI::unescapeHTML(x.description.gsub("\n", "").gsub("< br>", "\n")); puts "%\n" }
 

Данный скрипт я нашел тут и слегка его подредактировал. Итак, чтобы получить цитаты и добавить их в fortune выполняем следующие команды:

mkdir bash-org-ru #создаем папку

cd bash-org-ru # переходим в эту папку

ruby bash-org-ru.rb > bash-org-ru # получаем цитаты

strfile bash-org-ru bash-org-ru.dat # делаем dat файл для fortune

cd .. # возвращаемся в предыдущий каталог

Теперь чтобы получить случайную цитату достаточно набрать команду:

fortune bash-org-ru

Естественно, эту команду можно добавить в .bashrc и получать случайную цитату при каждом логине.

Комментарии

Специфика RSS такова, что при вызове данного скрипта будут скачаны только последние 100 цитат, поэтому нужно что-то придумывать, чтобы вытащить их побольше. Или парсить не общий RSS, а, например, http://bash.org.ru/byrating

блин, зачитался рейтингом :) хорошо, что у меня отпуск

да, надо как-то складировать цитаты…

Главный вопрос в том, как определять какие цитаты новые, т.к. нельзя просто брать и сливать все цитаты с какой-то определенность в один и тот же файл, ибо будут повторения.

А смысл их вытаскивать побольше? Вы же наверняка не сто раз запускаете консоль за сеанс работы, а команда ruby bash-org-ru.rb > bash-org-ru перепишет старые цитаты на новые при следующем выполнении. А чтобы это делалось само без участия пользователя, можно в автозагрузку поставить скрипт, который будет заставлять выполняться эту команду при каждом новом запуске системы (или сеансе работы). И содержимое этого скрипт в этом блоге уже описано по сути, всего одна строчка: ruby ~/.bash-org-ru/bash-org-ru.rb > ~/bash-org-ru/bash-org-ru && strfile ~/bash-org-ru/bash-org-ru ~/bash-org-ru/bash-org-ru.dat

прикольно, вот только с этим http://www.ubuntusecrets.it/2011/02/giu-di-morale-o-affamati-di-citazioni-provate-fortune-indicator/ почему то не работает :(

а должно?

Войдите, чтобы оставить комментарий