Неделю назад меня торкнуло вести блог переводов англоязычных публикаций на SEO тему. В лучших традициях велосипедостроения я решил написать для блога новый движок. На Django, конечно. И написал же :-) Скорее всего, я даже на него веб-мозги переведу в будущем, когда фунционал до концидии догоню. Сейчас блог работает на byteflow, но я его немного побаиваюсь. Какой-то он большой — это меня угнетает :-)
Сайт проекта: http://bitbucket.org/lorien/djaba/
Блог умеет на данный момент:
- markdown разметка постов и комментариев
- авторазметка plain text ссылок
- запоминание персональных данных комментаторов в форме комментирования. Комментирование доступно пока только в anonymous-режиме с указанием имени, емайла, сайта.
- автопинг блог-директорий и поисковиков при написании нового поста.
- тэги
- <—more—> фича
- генерация sitemap
- фиды постов и комментариев
Основная идея движка: простой и удобный способ делиться информацией с другими людьми. Будет сделан уклон на средства продвижения блога. Например, уже сейчас работает пинг директорий и сайтмап.
Вот так всё простенько :-) Подивиться на велосипед можно на сайте работающего блога переводов статей о поисковой оптимизации сайтов
Сегодня столкнулся с тем, что yandex выдавал ошибку, когда я пытался скормить ему sitemap.xml через http://webmaster.yandex.ru/. Причина отказа, как было установлено, долгая генерация файла с картой сайта. Проблема решается просто: нужно кэшировать генерируемый sitemap: предварительно записать его в кэш и затем уже скармливать яндексу.
Если на сайте кэширования ранее не было вообще, то самый простой способ настроить кэш — это использовать файловый backend.
Пишем в settings.py:
CACHE_BACKEND = 'file:///tmp/domain.com'
В файле urls.py заворачиваем генерацию sitemap в cache_page декоратор
from django.views.decorators.cache import cache_page
from django.contrib.sitemaps.views import sitemap
from project.sitemaps import ProjectSitemap
sitemaps = {
'site': ProjectSitemap,
}
urlpatterns = patterns('',
(r'^sitemap.xml$', cache_page(sitemap, 60 * 30), {'sitemaps': sitemaps}),
Захотелось мне пощупать linkfeed.ru биржу ссылок. Поэтому пришлось писать python-адаптер. Как оказалось биржа вполне себе прогрессивная — возможно забирать базу данных в виде XML. Даже какой-то SOAP API есть для оптимизаторских контор.
Если кому нужно, адаптер можно взять тут: hg.pydev.ru/linkfeed. Код пока очень сырой — я его минут 10 назад написал :-) Как пользоваться написано в README
На днях обнаружил неплохую альтернативу для поиска из скриптов. Это использование Yahoo поиска через BOSS API.
Основные плюсы:
-
Цитирую: BOSS offers developers unlimited daily queries, though Yahoo! reserves the right to limit unintended usage, such as automated querying by bots. In the near future, we will be introducing a fee structure for BOSS. For more infomation, please see the Fee Structure section below.Для работы с API можно использовать python-библиотеку
-
Yahoo сама сделала python библиотеку для работы с API
Как поставить библиотеку, а также сделать простые запросы хорошо описано тут. У меня возникли трудности с тем, что пакет util не копировался куда нужно. Я поступил просто — посмотрел, что util используется только в пакете yos.yql и скопировал его туда ручками.
Простенький пример:
>>> from yos.boss import ysearch
>>> from yos.yql import db
>>> data = ysearch.search("Django",count=10)
>>> table = db.create(data=data)
>>> table.rows
[
{ u'dispurl': u'www.<b>djangoproject.com</b>',
u'title': u'<b>Django</b> | The Web framework for perfectionists with deadlines',
u'url': u'http://www.djangoproject.com/', u'abstract': u'<b>Django</b> is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. <b>...</b> <b>Django</b> focuses on automating as much as possible <b>...</b>',
u'clickurl': u'http://www.djangoproject.com/',
u'date': u'2008/06/19',
u'size': u'8524'
},
"would display 9 more results, but removed to save space"
]
Знаю, знаю, я уже два раза писал, что сделал эту библиотеку. Этот раз, надеюсь, последний :-)
На этот раз я решил сделать порт максимально приближенным к PHP версии: та же структура кода, те же имена переменных, те же форматы данных. Т.к. PHP версия забирает данные с сервера в том виде, как их сериализует PHP, то пришлось заюзать вот эту штуку для распаковки данных.
На днях сделал клиент для работы с сайтом mainlink.ru (аналог sape.ru). Пока фунциональность очень простая (нет кеширования). Работает, как для морд, так и для внутренних страниц.
Представляю вам python класс для работы с sape.ru
Как будет время, оформлю всё красивым модулём с тестами, а пока голый код. Его работоспособность доказана практикой т.е. ссылки показываются, деньги капают ) Скрипт был написан путём анализа официальных php и perl версий.