В топике я опишу простой способ немного улучшить сервис Eventr, не так давно описанный на Хабре. Этот сервис сразу заинтересовал меня своей идеей и я решил пристально следить за его развитием. А как можно следить не используя его? Так я и перенес все свои ленты из GoogleReader’а в этот сервис и начал пытаться пользоваться им как основным RSS-агрегатором.
Я не стану перечислять здесь все, на мой взгляд, детские болезни и ошибки, для этого есть фидбек, где я успел изрядно «надоесть» найденными багами или группа на Реформале для новых идей.
Сразу подчеркну: Я не имею отношения к команде разработчиков сервиса. Все (целых два) улучшения написаны мной для личного использования. И не являются официальными решениями сервиса.
В ожидании выкота обновлений сервиса, я не смог удержатся и не написать для себя маленькие и удобныекастылиулучшения.
Итак, что же я сделал:
Желаемое: Научить браузер воспринимать Eventr.com как RSS-агрегатор, куда можно передать фид.
Пример для GoogleChrome

Для Mozilla Firefox я не нашел способа. Искал механизм правки «приложений» для чтения RSS, но так и не нашел.
Для Google Chrome и его стандартного расширения от самой Google RSS Subscription Extension (от Google) все оказалось максимально просто и прозрачно: При выборе агрегатора, последним пунктом идет Menage... (Управление...)

там просто создаем новый пункт, указываем название Eventr и прописываем шаблон ссылки через который можно добавить поток.
Где %s будет заменятся адресом фида.
Изначально, я написал код закладки таким образом, что с текущей страницы выбирался первый найденный фид и передавался на Eventr, но в службе поддержки, мне любезно подсказали, что сайт сам умеет искать ленты на выбранном сайте/адресе. Так родилась кнопка которая вызывает в новом окне Eventr и предлагает добавить поток с текущего открытого сайта.
Код простой и незатейливый, не использующий потайные ходы в браузерах.
Хоть сжимать столь маленький код смысла мало, но все же сжатый вариант:
Те, кому лень сверять форматированный код со сжатым, могут скопировать форматированный, для браузера это не принципиально.
Если лента на переданной странице одна, то Eventr сразу добавляет её и отображает.
Если лента уже была в списке пользователя, то добавление не происходит.
Через несколько минут после начала использования сервиса я уже писал в списке багов и пожеланий в фидбеке мысль, что не плохо бы ленты имеющие новые посты как-то выделять на общем фоне списка лент. На что мне незамедлительно был прислан резонный ответ, что по другому мнению, они не должны выделяться, но обещали поразмыслить над этой деталью интерфей��а. Что же, мое мнение не последняя инстанция, на Реформале появилась идея о повышении читабельности сайта, куда прикрепили и это высказывание. Потому будем надеется, что разработчики учтут это пожелание, т.к. проголосовало не мало людей.
Ну а я задался задачей сделать для себя временное решение. Мое решение выглядит так (слева — стандартное отображение, справа после обработки):

Я снова не нашел ничего подходящего для Mozilla Firefox, но я честно искал, попробовал несколько разных дополнений (сейчас его поклонники закидают меня помидорами...), но ничего подходящего я не нашел, потому если кто в комментариях даст ссылку на аддон позволяющий выполнит�� JS-код сразу после загрузки страницы, я добавлю это к посту.
Для Opera, думаю, даже близко ничего подобного нет и быть не может в связи со спецификой расширений для этого браузера.
А пока — решение для Google Chrome.
Для этого нам понадобится аддон Персонализированный Веб который отлично позволяет модифицировать открываемые сайты. На странице описания аддона есть подробный список возможностей, потому сразу к делу.
Применять для URL:
Т.к. сервис уже использует jQuery, то почему бы нам им не воспользоваться? Допишем JS-код к документу который будет каждый раз при открытии новой страницы искать пункты в дереве фидов у которых есть класс has-new.
Добавлять HTML:
Код не претендует на оптимальность, уверен, что можно написать элегантнее, но у меня на вскидку не получился селекторсупер-ниндзя для выборки только нужных элементов, потому я пошел на пролом.
Очень надеюсь, что в скором времени, с выкатом обновлений сервиса, такие ухищрения уже будут не нужны. А пока — я пользуюсь. Если пригодится кому-то еще — буду рад.
Я не стану перечислять здесь все, на мой взгляд, детские болезни и ошибки, для этого есть фидбек, где я успел изрядно «надоесть» найденными багами или группа на Реформале для новых идей.
Сразу подчеркну: Я не имею отношения к команде разработчиков сервиса. Все (целых два) улучшения написаны мной для личного использования. И не являются официальными решениями сервиса.
В ожидании выкота обновлений сервиса, я не смог удержатся и не написать для себя маленькие и удобные
Итак, что же я сделал:
- Кнопка для панели закладок Добавить в Eventr;
- Выделение лент и папок имеющих новые посты.
Добавить в Eventr
Часть первая: Браузерный парсер RSS.
Желаемое: Научить браузер воспринимать Eventr.com как RSS-агрегатор, куда можно передать фид.
Пример для GoogleChrome

Для Mozilla Firefox я не нашел способа. Искал механизм правки «приложений» для чтения RSS, но так и не нашел.
Для Google Chrome и его стандартного расширения от самой Google RSS Subscription Extension (от Google) все оказалось максимально просто и прозрачно: При выборе агрегатора, последним пунктом идет Menage... (Управление...)

там просто создаем новый пункт, указываем название Eventr и прописываем шаблон ссылки через который можно добавить поток.
http://eventr.com/stream/subscribe?url=%s
Где %s будет заменятся адресом фида.
Часть вторая: Eventr сам умеет искать фиды на странице — не будем мешать.
Изначально, я написал код закладки таким образом, что с текущей страницы выбирался первый найденный фид и передавался на Eventr, но в службе поддержки, мне любезно подсказали, что сайт сам умеет искать ленты на выбранном сайте/адресе. Так родилась кнопка которая вызывает в новом окне Eventr и предлагает добавить поток с текущего открытого сайта.
Код простой и незатейливый, не использующий потайные ходы в браузерах.
javascript:(
function(){
f = 'http://eventr.com/stream/discover?url=' + encodeURIComponent(window.location.href);
a = function(){
if (!window.open(f, 'eventr', 'location=yes,links=no,scrollbars=yes,toolbar=no,width=1024,height=1000'))
location.href = f;
};
if (/Firefox/.test(navigator.userAgent)) {
setTimeout(a, 0)
} else {
a()
}
})()
* This source code was highlighted with Source Code Highlighter.Хоть сжимать столь маленький код смысла мало, но все же сжатый вариант:
javascript:(function(){f='http://eventr.com/stream/discover?url='+encodeURIComponent(window.location.href);a=function(){if(!window.open(f,'eventr','location=yes,links=no,scrollbars=yes,toolbar=no,width=1024,height=1000')) location.href = f;};if (/Firefox/.test(navigator.userAgent)){setTimeout(a, 0)}else{a()}})()
Те, кому лень сверять форматированный код со сжатым, могут скопировать форматированный, для браузера это не принципиально.
Если лента на переданной странице одна, то Eventr сразу добавляет её и отображает.
Если лента уже была в списке пользователя, то добавление не происходит.
Выделение непрочитанных лент
Через несколько минут после начала использования сервиса я уже писал в списке багов и пожеланий в фидбеке мысль, что не плохо бы ленты имеющие новые посты как-то выделять на общем фоне списка лент. На что мне незамедлительно был прислан резонный ответ, что по другому мнению, они не должны выделяться, но обещали поразмыслить над этой деталью интерфей��а. Что же, мое мнение не последняя инстанция, на Реформале появилась идея о повышении читабельности сайта, куда прикрепили и это высказывание. Потому будем надеется, что разработчики учтут это пожелание, т.к. проголосовало не мало людей.
Ну а я задался задачей сделать для себя временное решение. Мое решение выглядит так (слева — стандартное отображение, справа после обработки):

Я снова не нашел ничего подходящего для Mozilla Firefox, но я честно искал, попробовал несколько разных дополнений (сейчас его поклонники закидают меня помидорами...), но ничего подходящего я не нашел, потому если кто в комментариях даст ссылку на аддон позволяющий выполнит�� JS-код сразу после загрузки страницы, я добавлю это к посту.
Для Opera, думаю, даже близко ничего подобного нет и быть не может в связи со спецификой расширений для этого браузера.
А пока — решение для Google Chrome.
Для этого нам понадобится аддон Персонализированный Веб который отлично позволяет модифицировать открываемые сайты. На странице описания аддона есть подробный список возможностей, потому сразу к делу.
Применять для URL:
^http://(www\.)?eventr.com/.+$
Т.к. сервис уже использует jQuery, то почему бы нам им не воспользоваться? Допишем JS-код к документу который будет каждый раз при открытии новой страницы искать пункты в дереве фидов у которых есть класс has-new.
Добавлять HTML:
<script>
$(document).ready(function(){
$('.group li').each(function(){
if($(this).hasClass('has-new')){
$('a:first span', this).css('color', '#4D1E1E').css('font-weight', 'bold');
}
});
});
</script>
* This source code was highlighted with Source Code Highlighter.Код не претендует на оптимальность, уверен, что можно написать элегантнее, но у меня на вскидку не получился селектор
Очень надеюсь, что в скором времени, с выкатом обновлений сервиса, такие ухищрения уже будут не нужны. А пока — я пользуюсь. Если пригодится кому-то еще — буду рад.
