to post messages and comments.

← All posts tagged userscript

Greasemonkey was rewritten almost completely from scratch, based on WebExtensions ("a new browser extension API; a cross-browser system for developing extensions"). Due to the hard deadline that Firefox 57 (which supports only the WebExtensions API) Greasemonkey 4.0 was released with several features missing. Further releases in the (near) future should add most or all of Greasemonkey's older features back.
wiki.greasespot.net

И что более важно:

A variety of compromises have been made. We've elected to make a rare backwards incompatible change.
The decision was made to only support userscripts designed to run asynchronously for performance reasons. This breaks compatibility with older scripts.
greasespot.net
ghacks.net

Теперь нужно писать
await GM.getValue("foo")
вместо
GM_getValue("foo")

Нужно будет смотреть, кто из альтернативных плагинов будет обновлять своё api.
Пока что это выглядит очень хреново. Они пожертвовали обратной совместимостью, совместимостью с остальными расширениями и совместимостью со старыми скриптами, без переходного периода ("как Mozilla с нами, так и мы с вами..."). Придётся расставлять костыли чтобы по прежнему поддерживать все основные браузеры.

Violentmonkey и Tampermonkey вроде как доступны в качестве WebExtensions и при этом совместимы со старыми скриптами. Пока что Violentmonkey должен быть лучшим выбором.

2.18.0

* вроде всё починил, что отвалилось. Возможно некоторые вещи чуть медленнее на странице будут появляться.
* вернул возможность копировать номер и ссылку комментария. Не знаю, насколько удобно/навязчиво получилось. Возможно потом сделаю открытие по клику и доработаю стили.

greasyfork.org

2.17.6

* Затащил обновлённую форму из последнего эксперимента в юзерскрипт. Т.е. теперь есть превьюшки картинок.
* Добавил client-side валидацию и счётчик длины сообщения. Т.е. теперь не получится отправить слишком длинный текст и потерять его таким образом.
* Ещё добавил фикс для шапки (включается в настройках), но надеюсь это очень временно.

Пока сообщение не превосходит 4096 символов, отображается прогресс-бар (см. скриншот — однопиксельная полоска под тестом). После 4096 символов отображается число. Мне не нравится идея постоянно наблюдать счётчик, поэтому сделал такой комбинированный вариант.

(На всякий случай напоминаю, что эта форма ввода сообщения включается в настройках юзерскрипта — самый первый чекбокс.)

greasyfork.org

2.17.1 — Promises edition

* порефакторил эмбеды немного (692 additions, 950 deletions). Now 8% more DRY and with 300% more Promises†
* Яндекс.Музыка

(†) согласно экспертной оценке‡
(‡) получено путём тщательного анализа верхнего внутреннего покрытия рабочего помещения.

В процессе рефакторинга мог что-то упустить. Сообщите, если что-то сломалось.

Виджеты Яндекс.Музыки такие же тяжёлые как и сам сайт. Сделал Click to show по умолчанию.

greasyfork.org

В некотором роде автор xkcd поддерживает ситуацию (см. картинку) тем, что предлагает эмбеддить комикс путём хотлинка на картинку, без текста и даже без номера. (Хинт: ссылка на картинку содержит заголовок, который ищется в архиве на сайте.)
В принципе, оно и понятно — надо же чем-то на сайт людей привлекать.
Зато html очень простой, no bs. И в RSS тоже всё есть...

greasyfork.org
2.16.7
* xkcd

2.16.2

День рождения юзерскрипта. Первую версию я выложил в ночь на второе сентября год назад. #2845132

В новой версии:

* теги на странице /post — кликабельные, добавляются к╱убираются из первой строки поста;
* старая форма ввода нового сообщения — в общих лентах (как раньше) и на своей странице (по умолчанию выключено);
* ссылка Post ведёт на /post — поп-ап отключается (по умолчанию выключено).

greasyfork.org

2.15.0

* сворачивание постов-простыней.

Если всё нравится, то можно в Жуйк перенести.

Единственный момент для пользователей тёмных тем: в юзерскрипте, по традиции, они приняты во внимание, но когда перенесу в Жуйк — там этого не будет и темы придётся обновить.

Ещё из недавних изменений:

* галочка для сброса стилей для *code. Выключено по умолчанию. Тут есть ещё над чем работать, чтобы было хорошо.

greasyfork.org

После #2871615/4 я обратил внимание на то, что Tampermonkey существует в том числе для Dolphin Browser и UC Browser на Android.
Решил проверить, заработает ли там хоть как-то мой скрипт.

Разумеется, сразу ничего не заработало. Пришлось разбираться, как тут скрпты отлаживать можно.
Получилось так:
* Релевантные сообщения сыпятся в андроидный лог с определёнными тегами.
* Первое приложение для просмотра лога, которое мне позволило более или менее адекватно работать — CatLog.
* Хотя хотелось бы более удобную работу с фильтрами.
* По идее браузер кидает сообщения с тегом "Web Console".
* Но Tampermonkey удобнее отлаживать, включив дебаг в его настройках и фильтруя по тегам на "TD_S" (скриншот в комменте).

Основной проблемой стало то, что на моём смартфоне не поддерживается ES6. Что-то сконвертировал, где-то подставил полифилы... В результате получился почти рабочий юзерскрипт. Не работает встраивание жуйки и ютуба. Возможно что-то ещё. Плюс некоторые вещи долго обрабатываются на телефоне.
Результат может зависеть от версии андроида.

Положил эту версию сюда:
greasyfork.org

Оригинал, по-прежнему, тут:
greasyfork.org

Мне не нравятся эти браузеры. Но если пользователи для этой версии скрипта найдутся, то надо будет как-то автоматизировать сборку под ES5 и посмотреть, какие ещё костыли подставить.

2.12.0

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

Сделал его более устойчивым у шатанию Жуйки.

greasyfork.org

2.11.1

Давно не было постов — сейчас не до значительных обновлений. Только мелкие фиксы были.

Известная проблема с сертификатами достанет тебя, даже когда пытаешься использовать Juick по http. Запросы к API должны использовать тот же протокол (явно заданный), плюс к тому ссылки на картинки в ответе API прилетают с https.
Навёл порядок с протоколами у себя.

greasyfork.org

Заодно появилась возможность проверить как юзерскрипт будет работать в Edge с Tampermonkey.

В принципе, почти всё работает, кроме стилей, заданных через css variables — тексты дефолтного цвета и всевозможные рамки не отображаются.

2.10.1

* ссылки внутри одного треда не встраиваются, а отображаются при наведении;
* более умный парсер жуйкопостов;
* что-то по мелочи.

greasyfork.org


С момента добавления встраивания ссылок самого Жуйка мне не очень нравилось, что тред может захламляться дубликатами сообщений при использовании ссылок ∕0, ∕1 и т.п.
Теперь такие ссылки работают как в #2858063 .
При желании, отключается в настройках (будет работать как раньше).


Парсер больше не может применить несколько реплейсов к одному и тому же фрагменту текста (ссылки на medium.com больше не ломаются), плюс научился обрабатывать ссылки на комментарии вида ∕1.

2.9.0

* подсвечиваются и выезжают на экран комментарии при наведении мышью на
ссылку "в ответ на /x";
* эмбеды YouTube теперь поддерживают параметр start time.

greasyfork.org


Новая юзабилити фича. Попытка сделать чтение длинных развесистых тредов удобнее.
Гифка вместо тысячи слов: i.imgur.com

Known issues:
1) в некоторых случаях возможны прыжки прокрутки страницы. Я пока не понял, в чём именно причина. Поэтому решил потестировать на пользователях O:-)
2) в Firefox может на пол-пиксела съезжать контент.

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


Rtfm ютуба: developers.google.com

2.8.5

* Google+;
* Яндекс.Фотки (ссылки без расширения теперь тоже встраиваются);
* исправил статистику рекомендаций.

greasyfork.org

Нашёл, как у G+ эмбеды делаются, добавил. Вёрстка у них, конечно, под стать сайту >_<

А вот у vk.com, если я правильно понял, нужно ещё знать некий "hash for the widget connection". Поправьте меня, но похоже, что единственный способ встроить пост из vk — это получить код вручную со страницы, причём нужно быть залогиненным для этого.

2.8.0 — politota edition

* вставка ссылок с других сайтов (преимущественно новостных, плюс bash.im), используя описание из meta-тегов;
* вставка mp3/ogg;
* mixcloud.com (довольно давно уже добавил);
* что-то по мелочи.

По следам обсуждения в #2855489 сделал получение описания страниц из meta-тегов. Практика показала, что бездумно включать эту фичу для всех ссылок не хорошо. Игнорировать неполные данные не очень получается, т.к. некоторые сайты злоупотребляют тегами и пихают туда бесполезные вещи. Плюс, это просто накладно.
В итоге сделал редактируемый список сайтов и по умолчанию добавил те, которые появлялись последнюю пару недель на Жуйке и содержат качественные данные в meta-тегах.
Помимо Ленты и Медузы там оказался ещё ряд новостных ресурсов (отсюда и название %) плюс bash.im.

Список поддерживает wildcard'ы. Так что, если хочется вообще все ссылки встроить, а-ля facebook, то можно там указать просто "*" (одну звёздочку). Но повторюсь, имхо так себе получается. Плюс, Tampermonkey будет ругаться на неизвестные домены (ему можно указать "Always allow all domains" в этом случае).
Чтобы откатиться к дефолтному списку сайтов, придётся делать сброс настроек расширения. Потом, может быть, сделаю что-то более удобное.


З.Ы. Хотел на greasyfork.org с гитхаба синкать изменения, но при этом история изменений будет без описаний. Надо будет посмотреть, как на openuserjs.org с этим дела идут. С одной стороны — who cares; с другой — текст "Imported from URL" в чейнджлоге не по фэншую как-то.

2.7.7 — moore booru edition

* konachan
* yande.re
* anime-pictures.net

greasyfork.org

У konachan два домена, один из них (.com) заблокирован, а второй — .net :) (он для safe контента). Благо превьюшки и метаданные через второй отдаются все подряд. Я заменяю все ссылки в карточках на .net. При попытке открыть questionable или explicit контент, там будет всё кроме картинки. Для тех, у кого прокся наготове, приводится и ссылка на .com. (На скриншоте внизу: "I'm a teapot" — это сообщение, которое показывает konachan.net вместо картинки. На карточке есть ссылка на konachan.com.)

И konachan и yande.re отдают превьюшки более разумного размера, чем gelbooru — 300px. (На скриншоте сверху одна и та же картинка с gelbooru и konachan.)

Долго соображал, как получить метаданные поста по id через API здешней версии Moebooru. В итоге всё просто оказалось, но "tags=id:" как-то нелогично выглядит.

На anime-pictures.net выпал в осадок от качества вёрстки. Это просто что-то с чем-то. (Но при этом они умудряются держать довольно нескучную подборку картинок, по сравнению с бурятниками. Возможно это вопрос количества и качества.)
Отдают достаточно большую превьюшку в meta og:image. Но больше ничего полезного, и до кучи стоит лимит на пять запросов.