Юзерскрипт для пинкивизора (то, что вы давно хотели, но боялись попросить!) [обновлён до версии 0.0.5]

+172
в блоге IT Pony!
Помнится, у нас есть люди, которые любят все посты и комменты проверять с помощью пинкивизора. Так вот, теперь им это станет делать ещё легче, потому что я тут за ночь накодил соответствующий юзерскрипт! =) первый юзерскрипт в моей жизни, азазазаз.

Чтобы его поставить, нужно прежде установить Greasemonkey (или, возможно, Tampermonkey), после чего ткнуть по ссылке:

Скрипт тута!


Разумеется, есть репа на гитхабе, туда можно кидать issue и пулл-реквесты.

После установки скрипта на каждой новой открытой вкладке с табуном в шапке постов, подписях комментариев, а также на страничках блогов и профилей юзеров появится голова Пинки, если на неё ткнуть — то можно увидеть статистику поста/коммента/блога/профиля.
Окошко закрывается кликом где-нибудь мимо окошка. Сразу можно открыть несколько окон (т.е. пока не закроешь его — окно будет маячить на странице). Кликом мимо окон закрываются все открытые окна.
Окошки можно таскать по экрану за заголовок и изменять размер за нижний правый уголок. Размер (но не положение, очевидно) сохраняется.

Если у кого есть какие-то вопросы/рекомендации/сообщения о том, что что-то где-то не работает — милости просим, я постараюсь со всем разобраться (но не обещаю).

Это было сложно (когда я его делал, я думал, что у пинкивизора нет API, а также нет отдельных URL для получения прямой статистики поста/коммента, поэтому мне пришлось конструировать iframe с ответом ручками и в процессе встречать кучу разных непоняток типа глюков из-за символа "#"), но я всё же сделяль эту штуку и она вроде работает.

Проверялось на Firefox 73.0.1 (Windows 7) и Greasemonkey 4.9. Не знаю, работает ли на других браузерах — не проверял, надеюсь на здесь присутствующих =) Ожидаю, что много у кого что-то не будет работать (или будет работать не так), да. Будем фиксить.

Если кого-то не устраивает этот юзерскрипт, как оказалось, есть другой — официальный юзерскрипт для пинкивизора от zluka . Скачивается тута (нужно просто кликнуть по ссылке и Greasemonkey установит скрипт). Найти его было сложно — в бэкапе Табуна не было постов, посвящённых ему (или я их не нашёл). Так что спасибо Morano за ссылку. =)

UPD: обновлён до версии 0.0.5. Все желающие могут обновить скрипт, зайтя в меню Greasemonkey — Pinkievisor Query — User script options — Update now (а ссылка в посте также всегда ведёт на актуальную версию).

Список исправлений (версия 0.0.3):
1) Результаты иногда улезают под правую панельку и под хвостик с кнопкой обновления треда — пофикшено.
2) В комментах можно мискликнуть на стрелочку вместо цифры — впилил Пинки в левую половину подписи коммента, теперь надо кликать на неё
3) Закрывать окошко по клику вне области окна, а не на кнопке закрытия — сделано.
4) Комменты, полученные кнопкой обновления треда, не получают возможности чекнуть голосования за них — сделано (хотя, похоже, ещё пока работают через раз, буду продолжать разбираться) А, всё, понял, в чём была проблема, «окей, моя ошибка, я дурной», написал при анализе дерева комментов в subtree false вместо true. =)
5) Приделать тултипы к значку Пинки — сделано.
6) Хорошо бы запилить возможность менять размер окошка и перетаскивать его — сделано. Таскать можно за заголовок, изменять размер — за уголок снизу справа. Изменённый размер сохраняется!
7) Переползти с XHR на fetch — сделано.

Список исправлений (версия 0.0.4):
8) Доделать проверку статистики блогов и пользователей (а не только комментов и постов) — сделано.
9) Если на странице несколько постов (блог, лента, новые и т.п.), то статистика доступна только для первого из них — поправлено.
10) Обрабатывать ошибки fetch, а не висеть с Пинки, бесконечно идущей в никуда =) — сделано.
11) Сделать костыль для CORS статистики блогов и пользователей — сделано. Пинкивизор отдаёт Access-Control-Allow-Origin для запросов по постам и комментам, но почему-то не делает это для запросов по пользователям и блогам. Заюзал CORS-прокси для этого, но вообще, по-хорошему, нужно попросить админа пинкивизора починить это.

Список исправлений (версия 0.0.5):
12) CORS-хак больше не нужен, поскольку пинкивизор починен! — хак выпилен. Спасибо Morano ! =)
13) MutationObserver не находит ничего для слежения на страницах пользователя и блога — пофикшено.

То, что будет исправлено в следующих версиях:

— Заменить картинку Пинки на что-то менее цветастое, и в подписи коммента переместить её к стрелочкам «предыдущий/последующий коммент».
— Открывать окошко ховером, а не кликом: влепить галочку в футер Табуна (там, где «Версия Табуна: v1.3.3 Сообщить об ошибке»), и если она включена, то открывать окошко через миллисекунд 200 после наведения мышки на Пинки, а в случае увода мышки с открытого окна через миллисекунд 500 убирать его.
— Вернуть обратно крестик закрытия окна (?)

205 комментариев

— Пинки катится по страничке, а пост катится в ленту!
Помнится, у нас есть люди, которые любят все посты и комменты проверять с помощью пинкивизора.

Ну уж прямо так и все)) Просто иногда интересно глянуть от кого прилетело и за что (жаль вот только Пинки на второй вопрос ответа дать не может — ей это неведомо).
Так что скриптик весьма полезный, и кстати только что проверен — прекрасно работает. Пасибки!
На Лисе 74.0.1 все ок.
А вот и первая проблема
Такая же фигня, только ещё и крестик закрытия у меня под панелькой
На мобиле тоже крестик лезет под панель, Лиса 68.6.0 причем и у голосования за пост.
На хроме 80.0.3987.163 почти всё Ок. Такого лютого эффекта не наблюдаю.
Но наблюдаю вот такую картину:
Спойлер
Для тех у кого окно далеко влево уходит, на комментариях.
По тупому в 61 строку дописал "- 500".
Думаю, такая беда только у экранов с низким разрешением.
*далеко вправо*
Как раз экранчик квадрат (да-да, в 2К20) и лента боковая перекрывала. Вылечилось, спс.
1920x1080 Благодарю за совет. Дописал в строку 61 минус полтысячи — помогло.
Ну, на самом деле там для этого есть параметр safezone, но это не суть важно. Там я старался, чтобы окошко было максимально правее, чтобы как можно меньше перегораживало последующие комментарии. Тут надо ковыряться с z-index…
Я знаю, по этому и написал, что «по-тупому».
Изначально это так и задумывалось (потому что от этого можно избавиться скроллом страницы), но сейчас я понял, что маловероятно, что при открытом окне статистики тебе может понадобиться обновлять комментарии, а крестик закрытия в таком режиме важнее. Поэтому поправлю z-index, чтобы окошко было сверху.
Вообще, было бы удобней, если бы окошки закрывались бы при любом клике за их пределами, втч при открытии статистики другого коммента/поста. Ну или вынести это настройкой — вручную или автоматом. Вот мне лично вручную неудобно.
было бы удобней, если бы окошки закрывались бы при любом клике за их пределами
Люто плюсую.
Окей, я тоже про это думал (но пока не понял, как сделать). Хотя, по идее, в исходниках той же Курисабы это есть, надо посмотреть, как там сделано. Понял, принял.
Что-то у меня не воспроизводится, ни на компе, ни на ноуте…
Можно тебя попросить (вместо -500, если ты уже это дописал) после 86 строки, которая вот такая:
pinkiediv.style.display = 'block';
добавить ещё вот эту строчку:
pinkiediv.style.zIndex = '21';
, а потом обновить страницу и посмотреть, налезает ли что-либо на окошко?
Идет поверх всего.
О, то есть починилось, хорошо.
Думаю, сегодня ночью выкачу новую версию с этим и некоторыми другими фиксами.
Астрологи объявили неделю срачей за минусы к комментам и постам.
комментарий скрыт
Я уже можно сказать ушел от сюда в Вк
Но всё равно исправно тут появляешься
Это для всех тех слишком «умных» людей(будь они брони, фурри или еще кто).

Ну я в смысле того, что на Табуне я больше постов не пишу и комментирую крайне редко.
Я там(на Табуне) не сижу в прямом смысле слова, а захожу периодически посмотреть новости.
И поныть, как хорошо в ВК и плохо на Табуне, как замечательно в первом и как убивают фэндом во втором, да-да.
Ты про мой последний пост? Дак его уже давно НЕТУ! Ты опоздал с этим. Здесь остались лишь пара моих постов со стихами, которые я ещё не перенес на бумагу для того, что бы удалить их от сюда.
С чем я опоздал?
И «что написано на ТабунЕ — не удалишь в бэкапЕ».
Опоздал на сам пост. А на Ваш бекап мне обсалютно положить!
«Да что же Вы так убиваетесь-то? Вы же так никогда не убьётесь!» ©
И в добавок хочу заметит то, что Ваш знаменитый в узких кругах програмистов и прошаренных людей составляющих примерно 1-1.5% от всех пользователей Табуна, для обычных пользователей ничего ни значит. Тобишь они даже понятия что это такое не имеют, а если частично и имеют, то где это располагается и где это брать не знают. А некоторым и не нужно.
Я поставил тебе минус, терпеть не могу твоё мнение.
Я уже можно сказать ушел от сюда в Вк,
ушел

Правду ж ни кто здесь не любит.

У меня есть для тебя одна правда. Ты пиздобол. Так как никуда не ушел и исправно тут шныряешь. И будешь шнырять.
Не ну если ты даже не понимаешь или не видишь разницы между сидеть, активно общаться и толкать контент сюда и заходить раз два в день посмотреть новости, то мне тебе даже нечего сказать. Дурак ты партизан.
заходить раз два в день

Называется сидеть на сайте. Пиздобол ты сивик.
Спойлер
И в чем же? Или для тебя зайти один раз на Табун, что бы чекнуть Табунскую нехватку кислорода для тебя понимание сидения? Тогда я тебя разочарую. Я ТУТ НЕ СИЖУ В ПРЯМОМ СМЫСЛЕ ЭТОГО СЛОВА!!!
Я зашел, чекнул вкладку «новые» и если ничего интересного не увидел, что в последнее время преобладает, ушел дальше заниматься своими делами. Если нашел что-то новое написал коммент или кинул в избранное, что бы когда нибудь посмотреть.
И ты опять сюда зашел!
Да зашел. Согласен. Но только для того, что бы написать тебе же ответ. А не для того, что бы постить тут поняшный контент, для чего собственно этот ресурс и предназначался и создавался. Смекаешь?
С таким же результатом, я бы мог заходить на любой другой сайт не посвященный поняшной тематике и писать другому таком же как ты ответ на что нибудь другое. Даже если для этого мне бы пришлось заходить на него несколько раз за сутки.
Люди которые действительно ушли не заходят даже читать. Так что не пизди.
Не ну меня иногда до мозга костей начинает поражать, до какой степени люди бывают тупы и глупы в чем то! Ему говоришь одно с объяснением, примером и пояснением, а он тебе опять как попугай. Одно ии тоже. Пластинку то смени, Турок!
А если не дошло до тебя еще то, что я так могу зайти на любой мало мальски живой сайт, написать там коммент и если мне на него ответят, то у нас может завязатся беседа, то я уже не знаю как таким как ты объяснять просту разницу в понятиях.
Сижу и слежу запомни- это разные вещи! Дубина ты стаиросовая!
тупы и глупы
Пластинку то смени, Турок!
Дубина ты стаиросовая!
Демонстрация Высокой Культуры Замечательного ВКонтактика во всей красе.

И грамотности — дубина, она стоеросовая так-то.
ru.wiktionary.org/wiki/%D1%81%D1%82%D0%BE%D0%B5%D1%80%D0%BE%D1%81%D0%BE%D0%B2%D1%8B%D0%B9
Это я тебе ещё мягко выражаясь сказал. Так как говорили наши предки так сказать)
Дурик, ты глянь под спойлер, как они правильно говорили то…
В любом случае мне очень льстит то, что он присвоил мне свойство прямоты.
Не так важна грамотность, как важно то, что моя мысль понятна. И ты её понял.
Такие вот «истинные брони»))
Пластинку то смени

Ну так ты и смени. А то ходишь тут с одним и тем же.
Сижу и слежу

Это одно и то же.
Или хотя бы не комментируют.
Ну это уже будет переводом вопроса из «выглядеть пиздоболом перед окружающими» в «выглядеть пиздоболом перед собой».
Альтернативно-сидящий ты наш
Tabun-challenged…
Наверное всё ещё пытается уничтожить табун
Разведданные собирает.
Хочу назвать это «Ересь Сивика». Или до звания местного Хоруса он не дотягивает?
И Партизанки, подмостерья такие же стаиросовые, как и сам предводитель.
Не могу понять твой поток сознания.
Следующим этапом эволюции в этом направлении будет выдумывание армии минусаторов подчиненных Великому Лидеру.
Ты уже более полугода ушёл в ВК, но всё продолжаешь тут отмечаться и говорить что уходишь.
Я уже можно сказать ушел от сюда в Вк,

О да, это я весьма теперь вангую =)
Кто взорвал Табун? Хомура взорвала Табун! =)
то, что вы давно хотели

Но ведь такой скрипт существует уже оооооочень давно
Спойлер



Лол, где? О.О Я обыскал весь табун — не нашёл!
Алсо, я смотрю, он встраивает свои div-ы в страницу, а не окошками делает. Да ещё и нехило так парсит выдачу пинкивизора…
А просто он ушел в подполье и теперь получить его можно только от уже имеющих его ;)
Я вот тоже ни сном ни духом, что он есть, как биг систер отвалился, с тех пор смотрю вручную
Работает. Только маленький нюанс: активация скрипта по цифре между стрелочек легко может спровоцировать промах, и тогда коммент получит незапланированную оценку.
Я тоже об этом думал, но адекватного решения не придумал. Лепить туда значок, как в шапке поста? Вроде тоже можно промахнуться…
Как вариант — текст или значок рядом с ником или ссылкой «Ответить» [на комментарий]: в случае промаха откроется профиль комментатора или форма ответа, что уже не так критично.
Хм, окей, подумаю над этим…
Идеалом было бы всплывающее при наведении на эту зону окошко…
Точно? Я боюсь, что это, во-первых, приведёт к тому, что при движении мышки будут всё время всплывать эти окошки, а во-вторых, непонятно, как это будет работать на тач-интерфейсе, планшетах, например.
Тогда лучше дублировать, для тачей, а если всплывет — не страшно, особенно если будет работать только пока мыш в зоне.
Только загвоздка в том, что окошки в текущей реализации скроллить приходится.
Но можно сделать примерно как в Пинкивайзере устроен бекап. Но и в нём слишком длинные списки только скролить, поэтому наведение такое себе решение, имо.
Спойлер
Потому что здесь очень много лишней информации, достаточно окрашенных в цвет оценки ников же.
Чтобы так делать, нужно парсить результат, возвращаемый пинкивизором, а это мне очень не хочется делать, там жуткий просто html =/
(но если кто сделает пулл-реквест на гитхаб с разбором этого всего — то я его скорее всего приму =))
Можно попробовать Morano потрясти, как создателя Пинковода.
Было б хорошо. Идеально было бы иметь API и получать результаты GET-запросом в XML, тогда можно было бы что угодно делать с ними и не париться, как мне пришлось =)
Я немного в шоке с того, что ты делаешь это через айфрейм, с другой стороны, это проще, чем на чистом жс воссоздавать структуру.
Алсо нынче в моде fetch, который имеет значительно более простой синтаксис, конкретно а твоём случае:
fetch(url)
.then(response => response.text())
.then(text => тут уже код работы с ответом)
.catch(error => console.error('Все плохо ' + error);


А ещё у меня в один прекрасный день сгорело с того, как в жс создаются элементы, поэтому породил небольшой велосипед, у которого нет документации, а примеры нужно искать в моем коде, лол. Мб пригодится:
github.com/stsyn/derpibooruscripts/raw/master/YouBooru/libs/CreateElement.js
с другой стороны, это проще, чем на чистом жс воссоздавать структуру.
Вот потому и делаю =)
Вообще, сначала у меня была мысль простейшая — iframe с src, соответствующим страничке пинкивизора для конкретного коммента или поста. Но лол, оказалось, что там так нельзя, а формы не кидают на новую страничку, а пастят ответ в infobox внизу страницы. В итоге пришлось с этому ответу прикручивать CSS, фиксить ссылки внутри него, ну и всё такое.
Алсо нынче в моде fetch, который имеет значительно более простой синтаксис
Ммм, спасибо. Он доступен из коробки, не как jQuery? А то да, стандартная работа через XHR немножко громоздкая...
небольшой велосипед, у которого нет документации, а примеры нужно искать в моем коде, лол
Хм, может, как-нибудь попробую поразбираться =) (когда нет документации — это да, такое себе по удобству изучения =)
Нынче изкоробочен, разве что ие не поддерживается.

Относительно моей штуки, самый гибкий пример:
createElement('img#id.class-1.class-2', { style: {}|'', attribute: ''}, [ childNodes|'']): node


Айди и классы могут идти в объекте параметра, названия полей совпадают с тем, что ты пишешь в обычном коде. Есть слабоопределенное поведение в случае, когда ты пытаешься одни и те же дочерние элементы использовать в нескольких местах сразу, но это вряд ли тебя коснется.
Хм, надо будет тогда изучить этот fetch().

Ага, кажется, я примерно понимаю. Да, интересная штука, тоже погляжу
Юзерскрипт для инквизитора

>_>
У меня давным-давно уже стоит юзерскрипт для Пинкивизора.
Не помню, где его брал, но да, он уже года три точно как существует.
Блин, лол, почему я его не нашёл за полчаса копания в архиве табуна? О.о
Я его сам сейчас с ходу не нашел, хех. Могу кинуть код, если интересно.
А не завалялось случайно кармаскрипта от Злюки? На Гитхабе потёрто, осталась лишь ссылка в посте:
tabun.everypony.ru/blog/147880.html
Забавный скрипт О.о Не, у меня его не было и нет…
Может, сразу пост сделаешь? Так будет больше вероятность, что народ о нём узнает (да и в бэкапе табуна сохранится).
Заодно люди смогут выбирать, чей скрипт использовать.
Так, подытожу фидбэк за сегодня и пойду фиксить:
1) Результаты иногда улезают под правую панельку и под хвостик с кнопкой обновления треда
2) В комментах можно мискликнуть на стрелочку вместо цифры — впилю, пожалуй, пинки в левую половину подписи коммента
3) Закрывать окошко по клику вне области окна, а не на кнопке закрытия
4) Комменты, полученные кнопкой обновления треда, не получают возможности чекнуть голосования за них
5) Приделать тултипы к значку Пинки
6) Хорошо бы запилить возможность менять размер окошка и перетаскивать его
7) Переползти с XHR на fetch
8) Открывать окошко ховером, а не кликом — спорная, на мой взгляд, идея. Может быть, потом сделаю в настройках.
Если у кого ещё какие пожелания — предлагайте.

P.S. Никто не знает, где можно добыть тех бегущих поней, которые над правой панелькой табуна бегают? А то их URL выглядит, как запрос к скрипту, который напрямую выдаёт image/png.
где можно добыть тех бегущих поней, которые над правой панелькой табуна
Немного не те, но все же
github.com/RoosterDragon/Desktop-Ponies/tree/master/Content/Ponies
О, спасибо. =) Кажется, как раз эти пони были на рувикии, откуда я и стащил идущую Пинки как анимацию прогрузки =)
Welcome =)
Кстати, Пинки там много, смеха ради можно рандомить их показ в скрипте ;)
Имхо, слишком серьёзно для банальной анимации прогрузки =)
где можно добыть тех бегущих поней

files.everypony.ru/tabun/ponies/?1
и меняешь последнюю цифру подряд от 1 и пока 404 ошибку не даст… их там около 100 вроде
А эта циферка ничего не значит, поня меняется при чистке кэша
Нет, там цифра не влияет — скрипт каждый раз отдаёт поню в виде image/gif рандомом.
Блин, протупил, написал выше image/png, разумеется, я оговорился, имел в виду именно image/gif.
где можно добыть тех бегущих поней, которые над правой панелькой табуна бегают?

files.everypony.ru/tabun/ponies/c-0.gif
до
files.everypony.ru/tabun/ponies/c-119.gif
О! Спасибо огромное!
Жаль, только Пинки там и нет =(
удалено
Короче, я went super saiyan и внезапно пофиксил всё (правда, так же внезапно понял, что уже 5:39, лол, а я всё с жаваскриптом копаюсь =)
Щас проапдейчу пост.
А, ещё, кажется, понял, где косякнул с обновлениями комментов, должно теперь починиться.
Результаты иногда улезают под правую панельку и под хвостик с кнопкой обновления треда
Спойлер
Спойлер
Замечательно))
Лал, ну кому какой хвостик =)
(disregard that, это тестовый коммент)
Есть ещё TabunBigSister
Выглядит так
Спойлер
Лол, где вы все эти юзерскрипты берёте О.о
Олдфаги, сэр.
Чувствую себя каким-то ущербным, заявившись на табун в конце 2018 =)
Охренеть! Дайте два!
Еще бы скриптик который бы при наведении на ник показывал дату регистрации и карму с рейтингом.
Вот здесь вроде был (но я его не пробовал ставить, не знаю, работает или нет)
Не работает — репозиторий давно выпилен.
Печалька, тоже что ли пилить теперь…
Интересно, а у табуна есть API?
Нет
Эх, печально =(
Таки а где там описание его API, если он есть?
А Дискорд знает где. Забыли, наверное, когда впопыхах писали код форума.
Ну вот я прошерстил исходники, и ничего напоминающего реализацию API не нашёл.
Зато можешь легко определить специфику работы необходимых тебе функций, чтобы без труда с ними взаимодействовать. Специфику используемых протоколов, обработки запросов и данных и прочие полезные вещи. Всяко с таким проще написать собственную реализацию, чем тыкать на обум.
Ну, в данном случае её проще написать по уже готовому HTML, который выдаёт движок, нежели смотреть, как HTML генерится. Фишка API была бы в том, что он мог бы отдавать нормальные машиночитаемые данные, а не труднораспарсиваемый HTML.
Это не API
у пинкивизора нет API

Вот это было бы удобно, да.
Ага. Без нормального API тут как без рук но пони ведь и так без рук, wait, oh shi~
У единорогов есть телекинез что куда удобней рук.
У единорогов есть РОГ!

Когда это Тию в единороги с аликорнов разжаловали?
Дык с трона сместили — все… теперь не аликорн. Простой крылатый единорог))

Уже исправилась и все вернула на место. Честно.
Итак, вышла новая версия 0.0.4. Список исправлений:
Доделать проверку статистики блогов и пользователей (а не только комментов и постов) — сделано.
Если на странице несколько постов (блог, лента, новые и т.п.), то статистика доступна только для первого из них — поправлено.
Обрабатывать ошибки fetch, а не висеть с Пинки, бесконечно идущей в никуда =) — сделано.
Сделать костыль для CORS статистики блогов и пользователей — сделано.

Насчёт последнего — там была проблема с самим пинкивизором: он отдаёт Access-Control-Allow-Origin для запросов по постам и комментам, но почему-то не делает это для запросов по пользователям и блогам. Я заюзал CORS-прокси для того, чтобы обойти этот косяк, но вообще, по-хорошему, нужно попросить админа пинкивизора починить это (кто-нибудь знает, как это сделать?..)
А вот для CORS-запросов нужен небольшой фолбэк с фетча на старые реквесты: у всех уважающих себя менеджеров юзерскриптов есть метод GM_xmlhttpRequest — www.tampermonkey.net/documentation.php#GM_xmlhttpRequest
Ну это, как мне кажется, фоллбэк не небольшой, а полный =)
Кстати, а я могу вызвать GM_xmlhttpRequest из скриптов, инжектированных в страницу? Как я понимаю, они запускаются в пространстве страницы (и уже не взаимодействуют с Greasemonkey, но зато могут взаимодействовать с консолью и отслеживать состояние страницы (а это важно, когда я ставлю MutationObserver)).
Впрочем, щас проверю.
На крайняк ты можешь передавать эту функцию аргументом
Ну вот я пока начал разбираться, как это сделать (впрочем, может, это уже и не нужно будет скоро =)
а для чего так инжектить необходимо?.. Из моего опыта, оно просто запускается в немного другом контексте, но доступ к DOM оно имеет и так
Ну, если не инжектить, то не работает консоль и MutationObserver. Может, конечно, я что-то не так делал, но после инжекции всё магическим образом заработало.
Вот такая вот магия (скопипастено из скрипта ответов Андреймала):

(function(document, fn) {
  'use strict';
  var script = document.createElement('script');
  script.setAttribute('type', 'text/javascript');
  script.textContent = '(' + fn + ')(window, window.document)';
  document.body.appendChild(script);
  document.body.removeChild(script);
})(document, function(window, document) {
  'use strict';

  // here goes your code

});
Обсерверы у меня работали без хитровыебов. Консоль уже не будет, да, но тебе она в целом не нужна после отладки. Если она прям нужна, можно на window прицеплять новые поля, они будут видны.
Хм, интересно. Я-то делаю по-другому, через коллбэк (хотя подозреваю, что не слишком эффективно — каждый раз пробегаю по всем возможным элементам, не пользуясь содержимым mutationsList), и так у меня не работало без инжекции в страницу:
  function alter_comments_callback(mutationsList, observer)
  {
    for (let mutation of mutationsList)
    {
      alter_comments(document.getElementsByClassName('comment-info'));
    }
  }
  var observer = new MutationObserver(alter_comments_callback);
  observer.observe(document.getElementById('comments'), { attributes: false, childList: true, subtree: true });
Честно говоря, хз, с ходу не вижу серьезных отличий (жс без разницы, как ты передаешь функцию, если что). Если ты работаешь в огнелисе, пробуй хром, у него в консоль тамперманки умеет выводить все ошибки (да и в принципе все палить). справедливости ради, я вообще не в курсе, насколько успешно работает под огнелисом ровно тот участок кода
Ну вот у меня как раз firefox, потому, видать, и наблюдаются отличия =)
— Типа Привет!

Есть давно официальный юзерскрипт для пинкивизора от zluka . Скачивается тута

Кое-какой API тоже есть. Выдача в XML:
Узнать текущий рейтинг топика:
https://pinkievisor.info/pv_api/topic_rating?id=НОМЕР_ТОПИКА

Узнать голосовавших за топик:
https://pinkievisor.info/pv_api/topic_votes?id=НОМЕР_ТОПИКА

Узнать текущий рейтинг коммента:
https://pinkievisor.info/pv_api/comment_rating?id=НОМЕР_КОММЕНТА

Узнать голосовавших за коммент:
https://pinkievisor.info/pv_api/comment_votes?id=НОМЕР_КОММЕНТА

Получить содержимое комментария :
https://pinkievisor.info/pv_api/comment_text?id=НОМЕР_КОММЕНТА

Узнать голосовавших за юзера:
https://pinkievisor.info/pv_api/user_votes?id=НИК_ЮЗЕРА

— Типа Пока!
— Типа тоже привет и спасибо! =)
Есть давно официальный юзерскрипт для пинкивизора от zluka. Скачивается тута
Йей, наконец-то я нашёл, где этот скрипт находится! =) А то в андреймаловском бэкапе табуна ни одного поста про него =/
Кое-какой API тоже есть. Выдача в XML
О, спасибо! Вызова для блога нет, я правильно понимаю? Эх, знал, бы — сразу с использованием этого API написал бы… Хотя, если б я знал о скрипте Злюки, то я бы вообще свой скрипт не писал бы, наверное =)

… Кстати, а насчёт неотдачи пинкивизором «Access-Control-Allow-Origin: *» при запросах, относящихся к юзеру/блогу — это можно починить? =)
— Этот скрипт, как и впрочем сам Пинкивайзер просто никогда не афишироваись и постов на эту тему не создавалось ибо вещь получилась такая… спорная, конфликтная и возможно срачегонная. Но в некоторых случаях очень полезная. Поэтому об этом знало довольно мало народу. Но, как говорится «Знают двое — знает и ». Вот и разошлась в народе молва. Я не против, сервер нагрузку держит и ладно. Пользуйтесь кто хочет.

Сделаю вызовы для блогов, для текста постов и много чего ещё. Осталось придумать что надо. Вот тебе и получится уже не API пинкивизора, а API табуна. Правда только на чтение :)

Кстати, а насчёт неотдачи пинкивизором «Access-Control-Allow-Origin: *» при запросах, относящихся к юзеру/блогу — это можно починить?


Дай пример get/post-запроса где такое происходит.
Хех, да, я тоже подумал, что скрипт для пинкивизора — вещь такая, может возбудить много нападок народа друг на друга, еслисмотреть плюсы/минусы будет легче, чем вручную =) Но вроде пока не наблюдаю на табуне особого оживления по этому поводу.
Вот тебе и получится уже не API пинкивизора, а API табуна. Правда только на чтение :)
Это да =)
Дай пример get/post-запроса где такое происходит.
GET вот на такие URL, например:
https://pinkievisor.info/pv_actions/select_user/?id=makise_homura
https://pinkievisor.info/pv_actions/select_blog/?id=https://tabun.everypony.ru/blog/computers/
(соответственно, в id может стоять любой другой юзернейм или ссылка на любой другой блог)
GET вот на такие URL, например:

Ну у меня вроде всё открывается без проблем

Ну, ты открываешь их из окна браузера.
Если открывать их через fetch с другого сайта, то получается вот так:
1) Открываем about:blank
2) Идём в консоль
3) Пишем:
>> function test(url){fetch(url).then(response=>response.text()).then(function(text) {document.body.innerHTML=text;});}
>> test('https://pinkievisor.info/pv_actions/select_topic/?id=194357'); // работает, в окошке появляется результат
>> test('https://pinkievisor.info/pv_actions/select_user/?id=makise_homura'); // не работает, пишет ошибку:
21:07:01.096 Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на https://pinkievisor.info/pv_actions/select_user/?id=makise_homura. (Причина: отсутствует заголовок CORS «Access-Control-Allow-Origin»).
21:07:01.096 TypeError: NetworkError when attempting to fetch resource.
Ага, попробую разобраться.
Попробуй сейчас по имени пользователя. Получилось? Что еще не работает?
По блогам вроде тоже поправил. Проверяй.
Отлично! Вот теперь всё работает! =)
Тогда убираю хак из своего скрипта, теперь будет работать как должно, без него =)
О, спасяба!
С ним всё привычно уже выглядит, кроме кракозябр.
Из CP1252 в UTF-8 нужно перегонять строку «Всего Против Воздержалось Сомнительно».
А шрифты обновить можно?
Это не шрифты. Это кодировка.
Удали в своем tampermonkey скрипт и установи заного.отсюда.
— А ещё у пинкивизора есть бэкап (архив) табуна. Находится тутачки
— Кстати, в нём помимо текста постов и коментов мы также сохраняем картинки из них.
— И да, это — реклама!
Йей, спасибо =) Альтернативный бэкап табуна, альтернатива — всегда хорошо =)
— Это да.
Итак, версия обновлена до 0.0.5 =)
Фиксы:
— CORS-хак больше не нужен — выпилен, поскольку Morano починил пинкивизор! Спасибо! =)
— Пофикшен мелкий баг с MutationObserver-ом, который не находил ничего для слежения на страницах пользователя и блога.
А можно попросить сделать кнопку какой-нибудь менее яркой, а то большое количество Пинки в комментариях режет глаза? Что-нибудь похожее на нынешние кнопки ссылки на коммент и перехода к родительскому комменту. И заодно было бы логично разместить кнопку пинкивизора рядом с этими двумя.
Окей, тогда реквестую картинку, на которую можно было бы заменить Пинки.
Вот эта: пойдет. Да, для поста можно оставить и Пинки, в количестве одной единицы она не мешает.
А еще, наверное, можно юникодовый символ ???? (1F4CA), он совсем хорошо.
P.S. Этот наш табун не умеет в юникод? Тогда картинка, вот версия 8*8: , смотря что лучше впишется в строку:
Окей, пасиб, запомнил, в ближайшие дни, видимо, сделаю =)
Есть ещё два момента:
1) Замутите настройку окна. Оно охренеть какое громоздкое.
2) Прикрутите к выпадающему окну крестик, чтобы его можно было нормально закрыть.
Прикрутите к выпадающему окну крестик, чтобы его можно было нормально закрыть.
Присоединяюсь!
1) Его можно ресайзить нижним правым уголком. Это подходит или нужно что-то ещё?
2) Эээ, меня как раз попросили это выпилить и закрывать окошко просто кликом вне его. Нужно именно крестиком?
Его можно ресайзить нижним правым уголком. Это подходит или нужно что-то ещё?

Что-то это не заметно, хоть какой-то намёк на это оставить можно, как например это делает Windows в своих окнах.
Эээ, меня как раз попросили это выпилить и закрывать окошко просто кликом вне его. Нужно именно крестиком?

Да, потому что кликом вне его оно не закрывается. Особенно если случайно открыл их несколько и не можешь их закрыть.
хоть какой-то намёк на это оставить можно, как например это делает Windows в своих окнах.
Но там треугольничек розовый должен же быть?
Да, потому что кликом вне его оно не закрывается.
О.о Так, стоп, у тебя что за браузер? Какая версия greasemonkey? Версия скрипта 0.0.5, да? При попытке нажать мимо окна в консоли (обычно открывается по F12) что-нибудь появляется?
Но там треугольничек розовый должен же быть?

И вправду есть. Я бы сделал чуть темнее оттенок, чтобы было заметней.
Так, стоп, у тебя что за браузер? Какая версия greasemonkey? Версия скрипта 0.0.5, да? При попытке нажать мимо окна в консоли (обычно открывается по F12) что-нибудь появляется?

Яндекс.Браузер 20.3.2.242. Tampermonkey 4.9 Да Tamper почему-то при загрузке страницы выдаёт 3 с красным индикатором. Может 3 ошибки / предупреждения. Хотя активирован только один скрипт (да-да, я знаю, что второй мог быть смайлопак, но я так до сих пор не могу найти адекватной галереи для него). В консоли после загрузки страницы 2 ошибки и 3 предупреждения.
Причем последняя с кодомuserscript.html?id=459c358f-24ba-4215-add5-6743a741af01:55 Uncaught TypeError: Cannot read property 'match' of undefined
at HTMLDocument.eval (userscript.html?id=459c358f-24ba-4215-add5-6743a741af01:55)
at HTMLDocument.dispatch (userscript.html?id=459c358f-24ba-4215-add5-6743a741af01:6)
at HTMLDocument.r.handle (userscript.html?id=459c358f-24ba-4215-add5-6743a741af01:6)

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

По поводу сообщения — странно, у меня 55 строка выглядит как открывающая фигурная скобка (то есть, очевидно, там такой ошибки возникнуть не может), да и свойство с именем «match» я у себя в коде нигде не использую. Похоже, это ошибки не связаны с моим юзерскриптом… (на всякий случай можешь проверить, будут ли они появляться, если скрипт временно отключить).

При попытке кликнуть вне окна новых ошибок в консоли не появляется?

Да, когда открыто много окон — по клику мимо них все должны закрываться. У тебя так не происходит?
Мне как-то кажется, что если я сделаю его темнее, то он не будет смотреться, как часть рамки окна (где обычно ожидаешь увидеть штуку, за которую его ресайзить).

Настолько заметно, что её не увидишь, пока тебе об этом не скажут.
По поводу сообщения — странно, у меня 55 строка выглядит как открывающая фигурная скобка (то есть, очевидно, там такой ошибки возникнуть не может), да и свойство с именем «match» я у себя в коде нигде не использую. Похоже, это ошибки не связаны с моим юзерскриптом… (на всякий случай можешь проверить, будут ли они появляться, если скрипт временно отключить).

Другого скрипта кроме твоего просто нет. Я уже сказал, что активирован только один скрипт.
Настолько заметно, что её не увидишь, пока тебе об этом не скажут.
Окей. Есть мысли, какой примерно цвет сделать?
В принципе, ты можешь его сам поподбирать. В Tampermonkey, скорее всего, есть функция редактирования скрипта, тебе нужно поизменять в 157 строке «color: #FF0099» на какое-то другое значение (первые две цифры — красный, вторые — зелёный, третьи — синий, 00 — минимум, FF — максимум, это двузначные шестнадцатеричные числа) и, обновляя вкладку с табуном и открывая окошко пинкивизора, оценять результат, а потом мне сказать — я изменю цвет на выбранный тобойю
Другого скрипта кроме твоего просто нет. Я уже сказал, что активирован только один скрипт.
Ну это может, сам Tampermonkey глючит.
При попытке кликнуть вне окна новых ошибок в консоли не появляется?

Нет.
Да, когда открыто много окон — по клику мимо них все должны закрываться. У тебя так не происходит?

Странно. В прошлый раз нет, а сейчас работает как надо.
Хм, значит, похоже, это был какой-то временный глюк.
Я правильно понимаю, что тогда крестик уже не нужен, да?
3 с красным индикатором

Там количество активных скриптов + ошибки скриптов
match используется в соседнем обычном Пинкивизоре, как раз примерно в том же месте. Алсо нужно уточнить, что не всегда отображаемый номер строки совпадает с реальным, нужно нажать на саму строку и смотреть, что там именно выстрелило.
Открывать окошко ховером, а не кликом — нужно будет подумать, как её сделать. Например, влепить галочку в футер Табуна (там, где «Версия Табуна: v1.3.3 Сообщить об ошибке»), и если она включена, то открывать окошко через миллисекунд 200 после наведения мышки на Пинки, а в случае увода мышки с открытого окна через миллисекунд 500 убирать его. Пойдёт так?
Вполне!
Окей =) Тогда как у меня будет время — сделаю.
@makise_homura
По просьбам пользователей поправил кодировку файла со скриптом Злюки, изменил имя файла, чтобы monkey ставил скрипт автоматически. но ссылка для скачивания изменилась. Теперь: pinkievisor.info/pv.user.js. Поправь в шапке поста.
Кстати, после установки этого скрипта вы будете видеть оценки постов за которые не голосовали (без скрипта Табун их скрывает пока не проголосуете или не пройдет определенное время для окончания возможности голосования за пост) Так что не пугайтесь! Это фича просто такая ;)
Кажется что-то сломалось. Ребят, у кого-нибудь прямо сейчас работает скрипт?
Скрипт ни при чём, весь пинкивизор лежит
Ясно. Спасибо.
Уже восстал)
Йей! Поправил =)
Оперативно! Очень благодарен!
Нужно больше золота!
Аналогичное вижу
Аналогично видел в разных тредах от разных юзернеймов.
Можно примеры также примерно как автор выше приводить?
К сожалению топика больше не существует, но поправил.
Это же Пинки, она может временами сходить с ума =)
Вя-вя?
Вя! —
Кажись что-то в скрипте сломалось.
Спойлер
Мой (сильно более старый) скрипт вообще слетел. Создатель Пинкивизора на днях обновил сайт, прикрутив донаты, и видимо в АПИ что-то поменял. Или в адресах.
Вроде как скрипт Злюки, говорят, обновился, его просто надо ещё раз по-новой поставить (но это не точно).
На репозитории Злюки его ща нету, по крайней мере, на том, который в контактах скрипта.
В тексте этого поста есть ссылка на скрипт от Злюки. По этой ссылке всегда доступна актуальная версия. А репозитария Злюки уже не существует.
У-у, когда в первый раз читал пост — еще не было. Это было давно-о!
Спасибо! :)
Пост иногда меняется автором
Сейчас УМВР как бы =)
Вообще, это похоже на отвал чего-то (css с фоном и оформлением кнопочек) именно на стороне пинкивизора. То есть страница прогружается нормально, а стили не показываются.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.