Fork me on GitHub
30/6/2009

Byteflow-NFL готов

Для тех кто в теме: byteflow-nfl готов к вливанию в основную ветку разработки Byteflow.

Теперь для оставшихся 99.1% (посчитано точными научными методами с привлечением аппарата математической статистики) читателей расскажу подробнее.

Я отдельно не анонсировал смену движка сайта, так что немного предыстории. После переезда на отдельный домен я использовал наколенный блог-движок на Pylons и Schevo, потом Schevo был заменен на SQLAlchemy. Но в итоге, я устал от поддержки такого решения и принял решение присоединиться к существующему проекту. Таким проектом оказался Byteflow, так что я переехал именно на этот движок. Для сохранения обратной совместимости по урлам, пришлось несколько модифицировать его, так что я завел отдельную ветку byteflow-pyo, которую периодически обновляю с основного репозитория.

Еще во времена наколенного блог-движка у меня были кое-какие мысли по поводу, что же я хочу еще видеть на сайте кроме собственно блога. Проекты выросли сами собой и изначально не задумывались ;-) Зато хотелось френд-ленту и агрегатор личной активности (задумки этим не ограничиваются). Результат понравился не только мне, так что piranha и helge сподвигли меня на перенос friends и life в основную ветку byteflow. Для решения этой задачи я и завел ветку byteflow-nfl, которая сейчас и готова к вливанию в основной репозиторий byteflow.

Теперь чуть подробнее о том, что такое nebula, friends и life.

Nebula

nebula -- это "движок" для фид-агрегаторов, какими и являются friends и life. Основан он на коде django-galaxy, отсюда и такое название. Позже стало ясно, что лучше бы с нуля написал, целее было бы. Но анти-nih синдром сработал, так что теперь есть то, что есть. В итоге, nebula предоставляет базовые модели, от которых удобно наследоваться и команду для сбора фидов, либо всех сразу, либо для отдельного приложения. Команда нужна для того чтобы можно было удобно обновлять фиды по cron'у. К примеру, у меня фид для friends по cron'у забирается раз в 3 часа, а фид life -- каждые 30 минут.

Friends

friends -- это блогролл, френд-лента, планета друзей, фидролл, называйте как угодно. Смысл в том, что это приложение, которое делает:

  • блогролл для сайдбара (знает про OPML и XFN)
  • френд-ленту
  • фид

Т.е. вы указываете блоги, которые читаете, а friends делает всё остальное. Я, например, вместо подписки на десяток не сильно часто обновляемых фидов подписался на агрегированный фид, который получается при помощи friends, при этом сразу же получаю блогролл и меня не терзают "дай ссылки на python-блоги", благо opml делается "бесплатно" :-)

В byteflow уже было приложение blogroll, но friends более "правильное", так что blogroll считается устаревшим и есть инструмент для переноса данных из blogroll в friends.

Life

life -- это агрегатор личной активности на публичных сервисах, где информация об активности пользователя отдается в виде фидов. Перед тем как начать, я, естественно, посмотрел уже существующие проекты, но они делают упор на использование нативных API разнородных сервисов. Я же предпочитаю использовать фиды. Это и плюс (однородный способ получения информации о событиях), это и минус (по API можно получить более подробную информацию, к примеру twitter в фиде не отдает, является ли текущий твит ответом на чью-то реплику, или нет). Таким образом, уже "из коробки" life умеет агрегировать информацию с любого сервиса, даже если нет специального адаптера, знающего как фильтровать и преобразовать фид для лучшей читаемости.

Как это попробовать

Если у вас есть возможность и желание, то было бы очень здорово получить фидбек.

Ниже инструкция, как опробовать friends и life на локальной машине

Прежде чем начать, следует удовлетворить зависимости Byteflow, плюс для NFL еще нужен feedparser.

Далее, нужно раздобыть byteflow-nfl:

$ hg clone http://bitbucket.org/j2a/byteflow-nfl/

или скачать zip-архив

Взяв за основу settings_local.py.template, написать локальный конфигурационный файл settings_local.py:

  • указать имя БД в DATABASE_NAME, например 'dev.db'
  • в STATIC_PAGES добавить записи для ссылок на friends и life:
    • ('Life', '/life/', u'My activities'), для life
    • ('Friends', '/friends/', u'Blogs I\'m reading'), для friends
  • раскомментировать nebula, friends и life в ADDITIONAL_APPS

Дальше

$ python manage.py syncdb

и пробовать с dev-сервером ;-)

Если вы уже используете Byteflow и желаете попробовать friends и life в своем блоге, то скоро будет готова инструкция по обновлению ;-) Хотя можете начать уже сейчас, а вопросы по обновлению задавать в Jabber-конференции byteflow

P.S. Про точные научные методы -- это шутка, я просто знаю количество людей, кому я рассказывал про NFL, а FeedBurner знает количество читателей ;-)

Комментарии

Все статьи