Френдлента, финиш разработки


Несколько дней я с упоением делал то, что очень давно планировал и откладывал: онлайн-агрегатор RSS. Простым языком - френдлента. Многие на этом месте недоуменно пожмут плечами: зачем изобретать велосипед, если есть Яндекс.Лента и Google Reader, не считая других, более мелких поделок? Отвечаю: во-первых - потому, что у них нет некоторых фишек, которые мне нужны. Во-вторых - потому, что это именно фишка движка самого блога, а не сторонний сервис. В общем, продолжаю всячески развивать идеологию «лучше много независимых блогов, чем все яйца в одной корзине».

Итак, что представляет из себя моя френдлента? С технической точки зрения - это сборщик RSS-записей из указанных источников. Своеобразный персональный кеш. Медленно, но верно скрипт обходит весь список источников, дергает оттуда записи и сохраняет их себе на память. Тут кроется первая изюминка: если запись между «обходами» изменялась, скрипт посчитает ее новой, и снова добавит в базу. Таким образом я стараюсь не упускать всякие «UPD»-дописки - вдруг чего интересное дописали?

С точки зрения пользователя это еще более забавная штуковина. Во-первых, лент сразу три. Первая - все кешированные записи сплошняком (я так и назвал вкладку - «Все подряд»). Вторая лента - своеобразная куча, куда «падают» свежие записи. Я могу прочитать запись и удалить ее из этой кучи (вот, кстати, где пригождается вышеописанная фишка: если я прочитал запись и выкинул ее из кучи, а потом вдруг пост обновится - скрипт посчитает его новым и снова закинет в кучу, и я прочитаю его исправленный вариант), а могу переместить в третью ленту - «Избранное». В избранные записи попадают те записи, которые, как я считаю, мне стоит держать под рукой. Что-то очень интересное. Из «Избранного» записи уже никуда не деваются, их можно только стереть. И, кстати, там записи лежат уже сортированные не по датам, а по источникам (авторам).

Ну и теперь, если считать такое трехуровневое хранение записей второй изюминкой, то третья изюминка кроется в весовых коэффициентах источников. Я еще колеблюсь - применять ли их ко всем трем лентам или хватит того, что они применяются в средней, «распределительной» ленте, но они есть. Всякая бытовая мелочь и картинки задвигаются поглубже, остальное - поближе.

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

Пятая изюминка - отдельный стиль оформления для постов каждого из источников. Я ограничился тем, что некоторым повесил тематические картинки, но вообще возможности шире.

Ну а теперь ложечка дегтя. Закрытые записи. Тут кроется несколько нюансов - поскольку в RSS-потоках подзамочные и общие записи никак не различаются, то есть риск выдать чей-то «подзамок», если забирать RSS авторизованно (от имени своего аккаунта, а не на общих основаниях, анонимно). Это не грозит, если френдлента никому, кроме хозяина не видна. Но в моем случае так сделать нельзя, я хотел бы демонстрировать свой блогодвижок на всю мощность. Поэтому во френдленте вы не найдете закрытых записей, скрипт собирает «урожай» RSS-лент анонимно. Но - повторюсь - возможно и чтение ленты «от своего имени», под своим аккаунтом.

Такая вот хитрючая штука вышла. Пойду еще с ней поиграюсь.
altesack (25 ноя 2009г, 09:26) #
Думаю ещё надо будет запретить роботу индексировать френдленту, иначе она станет раем для всякого сеошников и блогунёров. Я имею в виду не конкретно твой блог, а продукт в целом.
V.exeR (25 ноя 2009г, 10:30) #
u724 altesack: в robots.txt прописал disallow (ведь контент не уникальный), а вот в конечном продукте никто не запретит любому это отключить, увы.
altesack (25 ноя 2009г, 11:37) #
Ну это каждый сам себе ЗБ
Y (25 ноя 2009г, 14:25) #
При попытке открыть вторую страницу выкидывает на приветственную страницу сайта (аналогичную http://vexer.ru).
V.exeR (25 ноя 2009г, 14:27) #
u747 Y: вторую - это какую? «Недосмотренное»?
Y (25 ноя 2009г, 15:32) #
u71 V.exeR, вторую, это с цифрой «2». По ссылке, http://blog.vexer.ru/friends/page2 .
То же самое открывается и при попытке читать записи какого-либо конкретного пользователя, например, по ссылке http://blog.vexer.ru/friends/1a4f892307d137d4aaf9ee531a39edb8
V.exeR (25 ноя 2009г, 16:17) #
u747 Y: спасибо, исправил. Это я с .htaccess перемудрил :D
Y (25 ноя 2009г, 16:59) #
u71 V.exeR, пожалуйста :)
Теперь всё прекрасно! =)
Хочу как-нибудь всё таки как следует засесть за php, MySQL и написать что-то своё не меньшего уровня)