Pull to refresh

Atom feed для песочницы Хабрахабра

Reading time 2 min
Views 1.9K
Как известно, одним из самых удобных способов чтения периодических топиков откуда только возможно является rss-feed. Несколько дней назад хабраюзер rozboris сокрушался по поводу того, что habr.ru/new он читает через свой любимый rss-агрегатор, а чтобы посмотреть, что появилось в песочнице хабрахабра, нужно пользоваться не менее любимым браузером. Идея создания фида песочницы показалась нам привлекательной.

И я написал скрипт, подписавшись на который, вы сможете читать свежие посты из песочницы.

На чём писать?


Вариантов немало: python, perl, php. Мне очень нравится писать на python, но я выбрал php, потому что, если фид будет пользоваться популярностью, то заинтересованным хабраюзерам проще будет развернуть скрипт на своих серверах (на мой взгляд php более распространен).

Как оно работает


Всё просто. При обращении агрегатора к скрипту, последний обновляет посты из первой страницы песочницы в следующих случаях: если в базе нет ни одного поста (возможно, скрипт запущен первый раз) или с момента последнего обновления прошло более 20 минут.

Обновление происходит следующим образом: скрипт парсит топики, выделяя в них заголовки, ссылки, тело поста, время публикации. Дата и время публикации преобразуются в atom timestamp (да-да, фид использует протокол atom), и в случае отсутствия в базе топика с таким же timestamp он туда добавляется.

После этого из топиков в базе формируется xml, который возвращается пользователю.

Мелочи


Чтобы запустить скрипт у себя, вам нужно вписать в его код параметры доступа к вашей mysql (потребуется только одна таблица, имя которой вы тоже можете настроить внутри скрипта). Я решил использовать именно бд, а не файлик, лежащий рядом со скриптом, чтобы не мучаться с возможной проблемой одновременного доступа к этому волшебному файлу — скажем, один скрипт обновляет посты в базу, а другой пытается оттуда читать.

Кроме того, согласно правилам хабра, любой бот, читающий содержимое хабра, должен подчняться определенным правилам, в частности, иметь правильный user-agent, содержащий в себе информацию о владельцах бота. Поэтому я на скорую руку написать страничку с небольшим описанием проекта, нашими контактами и ссылкой на исходный код.

Если вы всё-таки решились запустить скрипт у себя, то, пожалуйста, впишите в $user вашу контактную информацию — так, в случае вопросов, хабр сможет до вас достучаться.

P. S.


Скрипт рабочий, но пока ещё сырой. Надеюсь, вам будет полезна моя работа. Лицензия — MIT Licence.

Ах да, вот, собственно и ссылка на фид!

UPDATE: В свободное время исправлю некоторые неточности, чтобы фид соответствовал спецификации, спасибо за комментарии!
Tags:
Hubs:
+5
Comments 6
Comments Comments 6

Articles