LINUX.ORG.RU
ФорумTalks

Написал простенькое web extension для Firefox для проверки количества непрочитанных уведомлений на ЛОРе. Что бы ещё добавить?

 


2

5

Не знаю, куда запостить, пускай будет в толксах. Сабж добавляет два шотката, один для проверки и показа попапа с кол-вом непрочитанного, другой чтобы открыть новую вкладку с уведомлениями, а не шариться по вкладкам в поисках лорчика.
Что еще можно добавить действительно полезного?

P.S. пока залил аддон на одобрение мозилловцам, но это долго вроде бы ждать, а есть еще один выходной, чтобы что-нибудь добавить.
=================================
Репа на Github.
Упакованное расширение лежит в каталоге web-ext-artifacts. Установка: скачать, Ctrl+O в Firefox, выбрать в файловом диалоге и пару раз кликнуть, подтверждая согласие на установку. Настроек никаких нет.

★★★★★

Последнее исправление: Virtuos86 (всего исправлений: 3)
Ответ на: комментарий от RazrFalcon

Такое ты сам напишешь за вечер. Устанавливаешь nodejs, через npm устанавливаешь web-ext, открываешь MDN и RTFM.

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Я тебя умоляю :)). Ну, не хочешь, как хочешь. Я уже подрядился lor-button переписать, так бы чисто из спортивного интереса отвлекся. Хотя в любом случае до субботы у меня не будет достаточного количества свободного времени, не о чем говорить.

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от Loki13

Не за что. Я и сам им пользовался, а когда переполз на ночную сборку, очень огорчился, что дополнение отвалилось. А так и себе, и людям сделал.

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Сделал proof-of-concept. Упакованное подписанное дополнение лежит, как обычно, в /web-ext-artifacts. Заняло, к сожалению, это пару дней свободного времени :(.

Как работает:
1. Срабатывает только на страницах ЛОР'а, поэтому и тормозить будет тоже только там. Почему тормозить?:
2. При открытии страницы ищет ссылки на профили пользователей. По каждой ссылке создается отдельный асинхронный запрос, который получает страницу профиля и выдирает из нее дату создания аккаунта. Запросы: а) кэшируются, чтобы не создавать лишних запросов для повторно встречающихся на странице никнеймов; б) проверенные никнеймы, для которых установлено, что они не новички, сохраняются в настройках дополнения — таким образом, со временем при хождении по ЛОР'у никаких запросов почти не будет производиться, только поиск по сохраненной базе никнеймов.
3. Дата создания аккаунта сравнивается с двумя датами: датой сферического пользователя, зарегистрированного неделю назад, и столь же идеального юзера, зарегистрированного две недели назад. Если дата попадает в эти интервалы, то однонедельный никнейм подсвечивается красным, двухнедельный — жёлтым.

Тестируй. К предложениям по умеренному допиливанию я отношусь доброжелательно :).

Virtuos86 ★★★★★
() автор топика
Последнее исправление: Virtuos86 (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

В Firefox: Меню => Add-ons (или Ctrl+Shift+A) => попап список под кнопкой с шестерней вверху страницы => «Install Add-on From File...»
Качаешь /web-ext-artifacts/highlighting_of_lor_newbies-0.1.3-an+fx.xpi из моей репы и выбираешь в диалоге выбора файла.

Virtuos86 ★★★★★
() автор топика
Последнее исправление: Virtuos86 (всего исправлений: 1)
Ответ на: комментарий от Virtuos86

Я не стал заморачиваться с тем, чтобы еще и настройки для аддона лепить, навроде каким цветом раскрашивать (а может и вообще css стиль указывать) юзернеймы или задавать интервал с момента регистрации юзера (твои «n дней»), относительно которого его можно считать новичком на ЛОР-е. Всё это максимум один раз будет настраиваться. Имхо, я выбрал разумный дефолт — одна/две недели. Явные тролли отсеятся, остальные наберутся ума-разума.

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Лол. Не припомню, чтобы ты это упоминал. Ну вообще, благодаря платформе Web Extension, портировать на хромиум будет относительно просто, тем более мне всё равно придется его устанавливать. Хотя я разочарован, конечно.

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Хм, проблемка нарисовалась. Оказывается, Хромиум не поставляется в виде тарболлов, а deb'ки и rpm'ки мне противопоказаны — у меня в дистре нет ни dpkg, ни rpm, чтобы разрешать зависимости, а вручную их качать — спасибо, не надо. Не нравится мне это. Накатывать другой дистр? Бррр.

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Ты про установку зависимостей не забыл? В моем дистре пакетный менеджер понимает deb, но зависимости он не устанавливает.

Списочек:

Depends: gconf-service, libasound2 (>= 1.0.16), libatk1.0-0 (>= 1.12.4), libc6 (>= 2.17), libcairo2 (>= 1.6.0), libcups2 (>= 1.4.0), libdbus-1-3 (>= 1.2.14), libexpat1 (>= 2.0.1), libfontconfig1 (>= 2.11), libgcc1 (>= 1:4.1.1), libgconf-2-4 (>= 3.2.5), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.28.0), libgtk-3-0 (>= 3.9.10), libnspr4 (>= 2:4.9-2~), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libx11-6 (>= 2:1.4.99.1), libx11-xcb1, libxcb1 (>= 1.6), libxcomposite1 (>= 1:0.3-1), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxi6 (>= 2:1.2.99.4), libxrandr2 (>= 2:1.2.99.3), libxrender1, libxss1, libxtst6, ca-certificates, fonts-liberation, libappindicator1, libnss3 (>= 3.26), lsb-release, xdg-utils (>= 1.0.2), wget

Virtuos86 ★★★★★
() автор топика
Последнее исправление: Virtuos86 (всего исправлений: 1)

Запустил Chromium. Я снова в деле :-]

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Репозиторий плагина.
На всякий случай напишу, как ставить. На всякий случай.
Чудо-поделка от Гугла не умеет ставить аддоны, которые лежат у тебя на винте, а не на божественных Гугловских серверах, поэтому ставить придется в распакованном виде. То есть

0. Скачиваешь мою репу с аддоном, просто zip, и распаковываешь в какой-нибудь каталог.
1. Идешь на страницу дополнений: Меню => «More tools» => «Extensions» (либо вбиваешь в адресную строку chrome://extensions).
2. Ставишь галочку «Developer mode», если она уже не стоит.
3. Жмёшь кнопку «Load unpacked extension...» и выбираешь в диалоге каталог, в который распаковал аддон.
4. Profit

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Дистрибутив указан у меня в профиле. Эта сборка семейства Live-дистрибутивов PuppyLinux под названием TahrPup. Основана на Ubuntu «Trusty Tahr» 14.

Я ошибся, на самом деле в ТарПаппи есть dpkg, а его гуевый менеджер пакетов поддерживает убунтовские репозитории. Я установил Хромиум, и даже зависимости вроде как установились, потребовалось только libnss_что_то_там обновить, что я и сделал руками с сайта убунты.

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от Virtuos86

Работает. Лаг конечно дикий. Это хром так тупит? То есть после загрузки страницы и смены цвета 1-2 сек. Ещё и последовательно, а не сразу.

Оно цвет обновляет только после перезагрузки страницы?

В трекере не работает? То есть на темы не распространяется?

Иконка странная. Как неактивная. Бледно-серая. Хотя в папке вижу нормальную иконку.

В целом потестю - отпишусь. Пока норм.

PS: в настройках расширений есть галка collect errors - её оставить?

RazrFalcon ★★★★★
()
Последнее исправление: RazrFalcon (всего исправлений: 2)
Ответ на: комментарий от RazrFalcon

мучить

Мне нужен Live-дистрибутив. А если ты про использование Хромиума, то я им и не пользуюсь.

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Работает. Лаг конечно дикий. Это хром так тупит? То есть после загрузки страницы и смены цвета 1-2 сек. Ещё и последовательно, а не сразу.

Оно цвет обновляет только после перезагрузки страницы?

У вкладок есть три события, которые можно использовать, чтобы запускать контентный скрипт аддона. Я для теста использовал событие, сигнализирующее о полной загрузке DOM и всех ресурсов (скриптов и изображений), можно попробовать взять то, когда загружен только DOM, но я не уверен, что загруженные потом css-стили LOR'а не перекрасят ссылки обратно, да и даст ли это ускорение. Но я попробую. Что касается лага: по сути браузер вместо одной страницы загружает еще страницы профиля каждого уникального для страницы юзера, а их может быть и 10-20. Что ты хотел? По идее, как я и писал, по мере сбора базы юзернеймов, лаги должны уменьшиться, кроме того обновление страницы должно происходить быстрее, чем ее первое открытие — проверь и это на каких-нибудь больших тредах.

В трекере не работает? То есть на темы не распространяется?

То есть? В тредах, конечно, работает, а в самом трекере покажи-ка мне ссылки на профили юзеров, кроме твоего в правом верхнем углу — их там просто нет. Все юзернеймы в трекере это обычный текст; можно и их распарсить, но оно тебе действительно надо? Мне кажется, весь профит имеет смысл только в тредах. А так мне придётся по всему LOR'у ходить и писать отдельную регулярку для каждого раздела.

Иконка странная. Как неактивная. Бледно-серая. Хотя в папке вижу нормальную иконку.

У меня пингвин нормально выглядит, если ты про страницу дополнений.

в настройках расширений есть галка collect errors - её оставить?

Пускай будет. Если появится «Errors» с ярким красным значком, кликаешь на неё и отобразится текст скрипта с проблемным местом. Если значок серый с вопросом, то всё нормально — это отладочная печать.

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от Virtuos86

Но я попробую.

Попробовал. По ощущениям никакой разницы, то же самое подлагивание. Но репозиторий обновил, можешь обновляться.

Да, есть идея, как окраску выполнять единовременно, а не последовательно: нужно патчить div элемента, содержащего ссылку на профиль, а именно подменять своим. А потом постфактум после обработки всех URL'ов назначать для этого кастомного div свои css-правила оформления. Тогда окраска произойдет разом. Но это какая-то хренова черная магия, которая мне не нравится, но которую я обязательно попробую.

Virtuos86 ★★★★★
() автор топика
Последнее исправление: Virtuos86 (всего исправлений: 1)
Ответ на: комментарий от amd_amd

Что именно? Единственное, что можно сделать в рамках жабоскрипта — Дождаться загрузки страницы, делать запрос «Показать удаленные комментарии» и подменять полученной в ответ страницей уже загруженную, убрав у удаленных комментариев линк «Ответить на это сообщение». Итого вместо загрузки одной страницы придется загружать две, еще и модифицировать итоговую. Готовы ли вы к лагам?

А в жабу я, естественно, не полезу (то есть писать патчи к движку LOR на Java), ибо полный нуль в ней. Мне уже и пердолиться с жавоскриптом надоело, Rust совсем в сторону отложил.

Virtuos86 ★★★★★
() автор топика
Последнее исправление: Virtuos86 (всего исправлений: 1)
Ответ на: комментарий от Virtuos86

Вы так говорите, как будто я вас заставляю писать это расширение.

по сути браузер вместо одной страницы загружает еще страницы профиля каждого уникального для страницы юзера, а их может быть и 10-20. Что ты хотел?

Вы же говорите, что он кеширует. Я именно про закешированную страницу говорю.

В трекере будет полезно. Чтобы видеть темы троллей.

У меня пингвин нормально выглядит, если ты про страницу дополнений.

https://hostingkartinok.com/show-image.php?id=9f890ceb5f8eea44b1344a2334e4c5ce

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Вы так говорите, как будто я вас заставляю писать это расширение.

Тебе показалось. Я стараюсь довести начатое дело до конца, иначе это будет фейл в психологическом плане.

по сути браузер вместо одной страницы загружает еще страницы профиля каждого уникального для страницы юзера, а их может быть и 10-20. Что ты хотел?

Вы же говорите, что он кеширует. Я именно про закешированную страницу говорю.

Должен да. Я честно не представляю, почему всё же тормозит. В Firefox тоже тормозит.

В трекере будет полезно. Чтобы видеть темы троллей.

Сделаем.

https://hostingkartinok.com/show-image.php?id=9f890ceb5f8eea44b1344a2334e4c5ce

Да, я обратил внимание. Значка там быть не должно. Это самодеятельность браузера, у меня в манифесте нет соответствующей записи для добавления значка в омнибар. Возможно, это следствие того, что аддон установлен в распакованном виде в режиме разработчика.

Virtuos86 ★★★★★
() автор топика

Допилиливаю LOR Button. Надеюсь, сегодня-завтра заработает. Должен сказать, что выкинул Хромиум нафиг — меня от него тошнит, он ощущается как уродская поделка. Тестирую на Opere — красота: приятно выглядит, отладка и тестирование аддонов сделана для человеков, а не для инопланетян, — одним словом, UX и эргономика в Опере всегда были на высоте, хоть я ее и использовал только эпизодически.

RazrFalcon, твой аддон тоже в Опере работает без тормозов. Как юзернеймы окрашиваются, всё равно заметно, но без лагов. Не знаю, не знаю...

А Лиса всё-таки тормознута по сравнению с вебкитовскими браузерами).

Virtuos86 ★★★★★
() автор топика
Последнее исправление: Virtuos86 (всего исправлений: 1)
Ответ на: комментарий от derlafff

https://github.com/Virtuos86/lor-button

Я зачем-то положил в builds/ собранные файлы аддонов для Оперы и Хромиума, пока не вспомнил, что в отличие от Лисы эти браузеры не устанавливают упакованные дополнения. Ну, пускай будут.

Как устанавливать: Меню => More tools => Extensions => ставим галку на Developer mode => Load unpacked extension... => выбираем каталог, в который распаковали или скачали указанную выше репу (надеюсь, это не нужно объяснять) => PROFIT.

Вроде бы, перенёс всё поведение оригинального дополнения, за исключением значка в самом меню, но подобного API для Web Extensions не существует.

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Доделал раскраску в Трекере, что ощутимо усложнило код. Изменения залиты в репу. Если я еще не писал, то аддон работает на форуме, в Галерее, в Новостях, в Опросах и теперь и в Трекере. Добавил еще желтую рамку вокруг юзернеймов. Настройки установки кастомного стилей и цветов делать не хочу — это еще один скрипт + примитивная веб-страница с несколькими формами, а значит опять работа. По-моему, и так юзабельно, хотя немного и выбивается в цветовом плане из темы.

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Открой highlight.js, и строку

var DEFAULT_CSS_STYLE = "border-radius: 3px; border: 1px solid yellow; color: ";
исправь на
var DEFAULT_CSS_STYLE = "color: ";
Потом переустанови аддон.
Это будет проще, чем мне коммит делать.

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от bvn13

Не знаю. Пока что я делал то, что мне интересно. Но эта надпись мне не мешает — мотивации браться нет. Я же не добрый волшебник-альтруист.
Очевидно, что проверкой на наличие новых сообщений занимается AJAX-сценарий. Если он как-то отдельно внедряется в страницу, то его можно вырезать из неё, и для этого не обязательно программировать — достаточно настроить uBlock, например, чтобы блокировал этот сценарий.

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от bvn13

Смотри. Нашел я виновника торжества и успешно заблокировал с помощью uBlock.
Открываешь настройки uBlock, переходишь на вкладку «My filters», вносишь туда запись https://www.linux.org.ru/js/realtime.js и нажимаешь «Apply changes».
Думаю, и в других блокировщиках рекламы несложно будет внести одну запись в фильтры.
И морочиться с аддонами ни к чему.

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от Virtuos86

собранные файлы аддонов для Оперы и Хромиума, пока не вспомнил, что в отличие от Лисы эти браузеры не устанавливают упакованные дополнения. Ну, пускай будут.

устанавливают. нужно драг&дропом перетащить расширение на chrome://extensions

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 1)
Ответ на: комментарий от Virtuos86

Просто божественно! Спасибо большое!

Хочешь, я опубликую в chrome web store? У меня как раз аккаунт появился недавно оплаченный.

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

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 1)
Ответ на: комментарий от derlafff

Очень очевидно, мда. Спасибо, ценная информация.

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от derlafff

У меня один вопрос к тебе. Автор аддона подобрал довольно странные иконки. Если при отсутствии авторизации еще нормально выделяется красный пингвин, то разницу между темной иконкой при отсутствующих уведомлениях и голубоватой при имеющихся непрочитанных уведомлениях я так и не смог на глаз различить, хотя код рабочий, а значит они меняются. А у тебя видно, что иконки разные?

Хочешь, я опубликую в chrome web store? У меня как раз аккаунт появился недавно оплаченный.

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

Новые версии? Кха-кха, какие еще новые версии?) По-моему, это уже вполне самодостаточное дополнение, к тому же мне моя идея с двумя шоткатами больше нравится, к ней и вернусь. Надо понимать, что я написал два дополнения, но я их написал для вебкитовских браузеров, а для Огнелиса, которым пользуюсь, их придется чуть подправлять, не говоря уж о развитии. Хотя я думаю, что можно кросплатформенную версию аддона написать.

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

Во-первых, *.pem ключ, который сгенерировался, когда я упаковывал расширение, я уже удалил, поэтому любая новая упакованная версия будет подписана новым ключом, и залить её как обновление опубликованной ты не сможешь. Если будешь публиковать, упаковывай заново и сохраняй pem-ключ.
Во-вторых, мне это не нужно.

Virtuos86 ★★★★★
() автор топика
Последнее исправление: Virtuos86 (всего исправлений: 1)
Ответ на: комментарий от Virtuos86

то разницу между темной иконкой при отсутствующих уведомлениях и голубоватой при имеющихся непрочитанных уведомлениях я так и не смог на глаз различить, хотя код рабочий, а значит они меняются. А у тебя видно, что иконки разные?

Нифига не вижу. В оригинальном расширении была очень яркая и заметная синяя иконка. Короче, расширение фактически не работает.

Во-первых, *.pem ключ, который сгенерировался, когда я упаковывал расширение, я уже удалил, поэтому любая новая упакованная версия будет подписана новым ключом, и залить её как обновление опубликованной ты не сможешь. Если будешь публиковать, упаковывай заново и сохраняй pem-ключ.

в стор хромого расширения заливаются неподписанными

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 1)
Ответ на: комментарий от derlafff

Нифига не вижу. В оригинальном расширении была очень яркая и заметная синяя иконка. Короче, расширение фактически не работает.

Скор ты на вынесение вердикта. В расширении дофига всего работает, я его фактически написал по мотивам старого, но именно этот момент почему-то фейлится. Посмотри в /extension/data, iconNotification*.png — это те синие иконки?

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от Virtuos86

Посмотри в /extension/data, iconNotification*.png — это те синие иконки?

Те самые. Очень синие, различимые. Тем не менее, сейчас у меня иконка черная и на синюю не меняется совсем. Только изредка моргает на красный.

derlafff ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.