LINUX.ORG.RU

lorify-ng новое универсальное расширение для LOR -а

 , ,


23

14

Это реинкарнация проекта lorify - скрипт+расширение, реализующее функционал схожий с тем, что добавляет куклоскрипт для имиджборд.

Расширение умеет:

  • Получать сообщения от сервера через WebSocket и обновлять контент на странице (новые комментарии, уведомления, правки)
  • Индикацию на фавиконе вкладки о количестве новых комментариев (очищается даблкликом в любом месте страницы);
    Цвета информируют о состоянии соединения с сервером (зеленый - ок, желтый - отсоединился, красный - сбой)
  • Системные оповещения о уведомлениях пользователя (для юзерскрипта требуется «разрешить сайту www.linux.org.ru показывать уведомления»)
  • Динамическая навигация по страничкам темы (по умолчанию подгружается только текущая открытая и последняя, в настройках можно задать количество подгружаемых заранее)
  • Само собой показ превью постов и ссылки указывающие на комментарии с ответами
  • Кнопки разметки и хоткеи (гайд по использованию)
  • Просмотр, масштабирование и поворачивание картинок, как для встроенных превью в топике так и доступных в тексте комментариев по прямым ссылкам (если url картинки имеет непрямой вид к нему можно добавить хэштег с названием и расширением картинки imghost.orc/24dfuh5d1#скриншот.png)
  • Цитирование с форматированием, как всего комментария так и выделенного в нем текста


Доступны следующие варианты установки

  • Юзерскрипт(тестировался с Violentmonkey)
  • Аддон для Firefox
  • Chrome (платный, нужно $5)
    • можно так же установить вручную включив на странице chrome://extensions режим разработчика и выбрав папку с исходниками расширения в качестве распакованного

WebExtension имеет некоторое преимущество перед юзерскриптом. В частности при переходе по ссылкам на другие темы форума, ищет уже открытую во вкладках, а так же умеет проверять уведомления в фоне.

>>> Страница проекта на GitHub

★★★

Последнее исправление: uin (всего исправлений: 10)
Ответ на: комментарий от eternal_sorrow

Открой about:debugging#/runtime/this-firefox найди там расширение, нажми «исследовать», откроется девелопер-тулз на все окно, там в консоле посмотри ошибки.

У тебя не работает либо потому что браузер маинтейнером кастрированный, либо может с профилем что то не то, попробуй создать чистый в about:profiles и запуститься с ним проверить.
У меня тоже как то была проблема мега не открывалась и на некоторых сайтах встроенный контент не работал.

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

Нет, ты смотри справа где название файла откуда варнинг или ошибка, чтоб это был background.js или settings.js

Вот когда у тебя сейчас прилетит сообщение ты понажимай то что неработает и туда загляни.

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

вот та ошибка идёт из vapi-background.js.

так же иногда вылазит такое (при невыясненных обстоятельствах):

GET https://www.linux.org.ru/notifications-count [HTTP/1.1 403 Forbidden 872ms]

есть ещё такая ошибка:

Promise rejected after context unloaded: promisify.js:12

мде, хреновый с меня тестер…

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

GET www.linux.org.ru/notifications-count [HTTP/1.1 403 Forbidden 872ms]

Ошибка 403 это сервер говорит что ты не авторизован на сайте.
Если по факту ты залогинен, то это очень странно
Ну ка попробуй там в консоли вставить

fetch('https://www.linux.org.ru/notifications-count', { method: 'GET' }).then(r => r[r.ok ? 'text': 'error']().then(c => console.log(c)));

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

Ну ка попробуй там в консоли вставить

тот же самый результат

Если по факту ты залогинен, то это очень странно

ничего странного. странно, что «First-Party Isolation is enabled» тебе ни о чём не говорит

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

ничего странного. странно, что «First-Party Isolation is enabled» тебе ни о чём не говорит

Нет, не говорит

нашел/прочитал
Собственно у меня в about:config по умолчанию

privacy.firstparty.isolate                          false	
privacy.firstparty.isolate.block_post_message       false	
privacy.firstparty.isolate.restrict_opener_access   true	
privacy.firstparty.isolate.use_site                 false
Если что то не по умолчанию стоит оно жирным подсвечивается обычно, глянь и поставь по умолчанию.

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

глянь и поставь по умолчанию

Если я поставил не по умолчанию, на это наверно причина была? Научи своё расширение работать с FPI.

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

на это наверно причина была?

Капризы твои? Я им потакать не буду, извини. Включил сам не знаешь что и зачем, и с меня теперь трясешь разобраться и написать какой то там костыль. Используй юзерскрипт и не морочь голову.

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

В общем, посмотрел варианты как это починить. Обойти это можно, но да, костыльно.

Если всё же захочешь запилить костыль, то работать он должен примерно так: нужно в манифесте запросить permission: cookies, затем через browser.cookies.getAll получить все кукисы для ЛОРа, указав firstPartyDomain: 'linux.org.ru', затем по одному установить эти кукисы в контексте расширения через browser.cookies.set, указав firstPartyDomain: ''. И только потом делать запрос.

eternal_sorrow ★★★★★
()

После долгого перерыва решил снова затестить расширение. Вроде все работает как надо, единственное что я теперь не могу убрать уведомления на сайте? Только через расширение? Я просто поклацал на свои ответы/уведомления, а они не убираются с ЛОРа.

Gonzo ★★★★★
()

Еще: после комментирования перемещает в начало страницы, к посту, в то время как в настройках это отключено.

Gonzo ★★★★★
()
2 января 2021 г.

https://www.linux.org.ru/forum/linux-org-ru/16086970
Оказывается, вопрос не к Макскому, а к вам.
Как обычно, в апстриме поломали работу аддона.
Походу суть проблемы - в опции «задержка перед отправкой». Выставил минимальное значение - и все четко работает. Полезна была бы возможность полностью отключить эту задержку.

token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 2)

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

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

Сохранение ответа занимает в разы больше времени, чем без плагина

Это настраивается. «задержка перед отправкой».

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

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

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

вот мнение разработчика расширения на это lorify-ng новое универсальное расширение для LOR -а (комментарий)

я лично просто жму кнопку в уведомлениях

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

Мда... Оба варианта неудобные лишние движения. Видимо придётся забить.

hikikomori ★★★
()

Перестала работать автоподгрузка комментариев. теперь в каждой теме перманентно висит восклицательный знак в коричневом кружке в фавиконке. вкладка Network в девтулзах показывает не удавшееся соединение websocket. The security error prevented the resource from being loaded

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

Ваш сайт со скриптами почил, судя по всему еще в 2016, поэтому непонятно почему вы ссылаетесь на него в 2019, ну да ладно, остался бэкап скриптов или гитхаб?

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

Так, эта ошибка мистическим образом пропала. Неужели был баг ЛОР’а?

Из за того, что я чистил куки и релогинился когда ошибка ещё присутствовала (это не помогло), пришлось заново повторять шаги из этого костыля: lorify-ng новое универсальное расширение для LOR -а (комментарий). Почему бы не добавить его в расширение?

eternal_sorrow ★★★★★
()
17 февраля 2021 г.

вроде годно, спасибо.

Chrome (платный, нужно $5)

куда кидать?

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

Загружает статьи из RSS, показывает их в виде сообщений; при просмотре — переключение между показом сводки и веб-страницы.

По умолчанию javascript включён, но тогда страница на ЛОРе показывается прокрученной в начало (или ещё куда-нибудь).

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

Зачем? Есть вариант через tempermonkey скрипт загрузить.

Спасибо. Не знал. Но и из разработчика тоже сойдет.

hbars ★★★★★
()
6 сентября 2021 г.
Ответ на: комментарий от eternal_sorrow

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

Тут еще мазила поднасрала с двухфакторной аутентификацией через какие то там внешние приложения и рекомендательную процедуру, которую расширения с 1,5 пользователя не получат похоже никогда.

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

Только если где то вкладка с лором открыта, в остальном практически тот же функционал.

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

Эх, если бы была возможность указать фоновому процессу расширения, в каком контейнере он должен запускаться…

eternal_sorrow ★★★★★
()
Последнее исправление: eternal_sorrow (всего исправлений: 1)
4 декабря 2021 г.
Ответ на: комментарий от eternal_sorrow

Сейм щит:

error { target: WebSocket, isTrusted: true, srcElement: WebSocket, eventPhase: 0, bubbles: false, cancelable: false, returnValue: true, defaultPrevented: false, composed: false, timeStamp: 0, … }
bubbles: false
cancelBubble: false
cancelable: false
composed: false
currentTarget: null
defaultPrevented: false
eventPhase: 0
explicitOriginalTarget: WebSocket { url: "wss://www.linux.org.ru:9000/ws", readyState: 3, bufferedAmount: 0, … }
isTrusted: true
originalTarget: WebSocket { url: "wss://www.linux.org.ru:9000/ws", readyState: 3, bufferedAmount: 0, … }
returnValue: true
srcElement: WebSocket { url: "wss://www.linux.org.ru:9000/ws", readyState: 3, bufferedAmount: 0, … }
target: WebSocket { url: "wss://www.linux.org.ru:9000/ws", readyState: 3, bufferedAmount: 0, … }
timeStamp: 0
type: "error"
<get isTrusted()>: function isTrusted()
<prototype>: EventPrototype { composedPath: composedPath(), stopPropagation: stopPropagation(), stopImmediatePropagation: stopImmediatePropagation(), … }
lorify-ng.user.js:843:29
    onerror moz-extension://3176f2b4-2d02-4c93-91cd-551447c5b0e8/lorify-ng.user.js:843
    (Async: EventHandlerNonNull)
    start moz-extension://3176f2b4-2d02-4c93-91cd-551447c5b0e8/lorify-ng.user.js:843
    onclose moz-extension://3176f2b4-2d02-4c93-91cd-551447c5b0e8/lorify-ng.user.js:837
    (Async: setTimeout handler)
    set moz-extension://3176f2b4-2d02-4c93-91cd-551447c5b0e8/lorify-ng.user.js:49
    onclose moz-extension://3176f2b4-2d02-4c93-91cd-551447c5b0e8/lorify-ng.user.js:835
    (Async: EventHandlerNonNull)
    start moz-extension://3176f2b4-2d02-4c93-91cd-551447c5b0e8/lorify-ng.user.js:832
    onclose moz-extension://3176f2b4-2d02-4c93-91cd-551447c5b0e8/lorify-ng.user.js:837
    (Async: setTimeout handler)
    set moz-extension://3176f2b4-2d02-4c93-91cd-551447c5b0e8/lorify-ng.user.js:49
    onclose moz-extension://3176f2b4-2d02-4c93-91cd-551447c5b0e8/lorify-ng.user.js:835
utf8nowhere ★★★
()
Ответ на: комментарий от utf8nowhere

Я не использую расширение уже давно. Оно не работает с контейнерами.

eternal_sorrow ★★★★★
()

Кто тут опытный? Что в уведомлениях нужно кнопку жать - это ерунда. У меня комменты перестало расширение подгружать. Еще при отправке сообщения какая-то ошибка под формой возникает, хотя отправка проходит успешно.

Upd:

Firefox не может установить соединение с сервером wss://www.linux.org.ru:9000/ws.

Видимо, причина незагрузки комментов в этом.

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

Нет, просто firefox теперь запрещает «не рекомендованным» расширениям всякие соединения, пришлось по старинке код на страницу инлайнить (хотя бы так пока работает). Обновись или там в свой форк нужное выдери.

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

пришлось по старинке код на страницу инлайнить

У меня на один аддон точно ругались за использование innerHTML, не помню только зарубили или до сих пор работает - уже давно не трогаю это дело.

Хорошо, спасибо, обновлюсь!
Кстати, про форк. Вроде бы Lorify-ng уже давно и из-под анонимуса работает, так? Может, удалить мой мертвый форк? Я, в принципе, так и хотел сделать, но не могу авторизоваться на АМО! Страница уходит в бесконечную перезагрузку. Это даже немного комично, но только немного. В веб-консоли браузера какая-то муть. Что теперь, хром качать? Бред.

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

Ещё интересно, открытый ли код этого дополнения

Открытый, конечно, в шапке ссылка на гитхаб.

и почему вообще этого функционала нет на форуме? Почему приходится ставить костыли?

Не знаю, надо у @maxcom спросить, как бы он отнёсся к подобным изменениям.

ИМХО, полезная штука, только зачем-то, чтобы прочитать уведомления, надо нажать ещё одну кнопку.

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

Там теперь надо двухфакторную авторизацию подключать через приложение https://keepassxc.org по старой схеме больше не войти.

Кстати, про форк. Вроде бы Lorify-ng уже давно и из-под анонимуса работает, так?

Да, работает давно, то вообще баг был.

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

ИМХО, полезная штука, только зачем-то, чтобы прочитать уведомления, надо нажать ещё одну кнопку.

Так код открыт 😉. Я для такого дела до сих пор LOR Button держу, стыдно сказать. Хотя у него есть свои плюсы - иконка, например, меняет цвет.

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

Я сейчас отвечал на коммент и выбрал «ответить с цитатой». В форму загрузился текст, размеченный под маркдаун, а панель тегов под ЛОРКОД. В настройках у меня тоже ЛОРКОД выставлен как дефолтное форматирование.
Но вопрос в другом: когда я отправил комментарий, то увидел, что в цитату попала ЛОРКОДовская ссылка. Я ее исправил на маркдаун, но предпросмотр этого не отобразил, он отобразил сырое форматирование маркдауна(то есть я увидел в цитате [текст](ссылка)). Я даже гуглить стал, может в цитатах надо как-то экранировать гиперссылки. В итоге запостил коммент, там всё нормально.

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

ИМХО, полезная штука, только зачем-то, чтобы прочитать уведомления, надо нажать ещё одну кнопку.

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

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

uin ★★★
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.