Перейти к содержимому


[Предложение] Кликабельные Комментарии Из Топа

комметарии предложения

Сообщений в теме: 23

#1 MaxLevs

    Чунин

  • Пользователи
  • 85 сообщений
  • Пол:Мужчина
  • Город:которого нет

Отправлено 05 May 2017 - 13:43

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



UPD:
После осознания того, что ради этого никто "лапатить" сайт не будет, решил сделать все сам и написал userscript (кусок кода на js, который сам запускается и добавляет какой-либо функционал).

Скрипт может производить поиск комментариев не только из топа, но и с листа последних комментариев в профиле любого пользователя. Интерфейс простой - два клика и готово. Также есть api для написания своих скриптов на его базе без копирования кода.

Для того, чтобы эта шарманка работала, нужно установить расширение - платформу, которая, собственно, и будет запускать скрипт на странице online.anidub.com:
  • Для Google Chrome - Tempermonkey
  • Для Firefox - Greasemonkey
  • Для Opera - Violentmonkey
  • Скрытый текст
Процесс установки скрипта:
  • Скачать одно из вышеперечисленных расширений для вашего браузера
  • Перейти по этой ссылке (там скрипт)
  • Нажать на "Установить"; откроется окно tampermonkey(или greasemonkey)
  • Жмем там на "Install"
  • ??????????
  • PROFIT!!!


Скриншоты
ИзображениеИзображение
Офтоп: как уменьшить картинки?

Сообщение отредактировал MaxLevs: 12 May 2017 - 04:51


#2 srg_sniper

    anidub.online

  • Пользователи
  • 243 сообщений
  • Пол:Мужчина
  • Город:Воронеж

Отправлено 05 May 2017 - 14:47

Идея интересная, но сложно реализуется. Придётся скрипт менять.

#3 MaxLevs

    Чунин

  • Пользователи
  • 85 сообщений
  • Пол:Мужчина
  • Город:которого нет

Отправлено 05 May 2017 - 15:01

Просмотр сообщенияsrg_sniper (05 May 2017 - 14:47) писал:

Идея интересная, но сложно реализуется. Придётся скрипт менять.
Хмм? Ты знаешь, как заполняется блок div.comm_best? Я не нашел... Или о каком скрипте идет речь?

#4 srg_sniper

    anidub.online

  • Пользователи
  • 243 сообщений
  • Пол:Мужчина
  • Город:Воронеж

Отправлено 05 May 2017 - 15:11

Просмотр сообщенияMaxLevs (05 May 2017 - 15:01) писал:

Хмм? Ты знаешь, как заполняется блок div.comm_best? Я не нашел... Или о каком скрипте идет речь?
Ну там со стилем сайта надо играться.

#5 MaxLevs

    Чунин

  • Пользователи
  • 85 сообщений
  • Пол:Мужчина
  • Город:которого нет

Отправлено 05 May 2017 - 15:37

Просмотр сообщенияsrg_sniper (05 May 2017 - 15:11) писал:

Ну там со стилем сайта надо играться.
Что?
Изображение

#6 MaxLevs

    Чунин

  • Пользователи
  • 85 сообщений
  • Пол:Мужчина
  • Город:которого нет

Отправлено 07 May 2017 - 05:46

Короче, написал я скрипт, который все это делает.
Вот ссылка. Код там в открытом доступе.

Сообщение отредактировал MaxLevs: 08 May 2017 - 16:18


#7 Li Si Cin

    Чунин

  • Пользователи
  • 59 сообщений

Отправлено 08 May 2017 - 02:06

Просмотр сообщенияMaxLevs (07 May 2017 - 05:46) писал:

Короче, написал я скрипт, который все это делает.

Прикольно. Главное, чтоб API не менялся. А то будет, как с плагином к xbmc - вк перестал быть основным хостером - и привет. Но, думаю, в данном случае все на века. :)
Ставить, правда, не буду. Хотя, теоретически, можно было бы использовать твой скрипт для другой задачи: искать каменты, но не топчики с той же страницы, а свои (или чужие) каменты, список которых в профиле юзера. Но это уже другая страница, и надо как-то передавать id (через злоумышленников куки или localStorage). Вообще, хорошо бы это все делалось на бэкенде, но это нереально, ради таких мелочей никто пальцем не пошевелит. Отсюда и уверенность в устойчивом API. :)

#8 MaxLevs

    Чунин

  • Пользователи
  • 85 сообщений
  • Пол:Мужчина
  • Город:которого нет

Отправлено 08 May 2017 - 07:18

Просмотр сообщенияLi Si Cin (08 May 2017 - 02:06) писал:

Но это уже другая страница, и надо как-то передавать id
На каждом комменте со списка есть адрес страницы, на которой он расположен. Её можно открыть через window.open в новой вкладке, при этом в вызывающий скрипт вернется её window. А через него в какую-нибудь переменную (например, foundIds) можно записать нужный id. Останется переписать скрипт так, чтобы он чекал её (переменную) и подхватывал поиск, перелистывая сразу по возможности.

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

#9 MaxLevs

    Чунин

  • Пользователи
  • 85 сообщений
  • Пол:Мужчина
  • Город:которого нет

Отправлено 08 May 2017 - 11:28

Боже.. Говнокод из меня так и прет...

#10 Li Si Cin

    Чунин

  • Пользователи
  • 59 сообщений

Отправлено 08 May 2017 - 16:21

Просмотр сообщенияMaxLevs (08 May 2017 - 07:18) писал:

можно открыть через window.open в новой вкладке...
Хорошая мысль, правда, с открытием в той же вкладке не прокатит.

Цитата

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

#11 MaxLevs

    Чунин

  • Пользователи
  • 85 сообщений
  • Пол:Мужчина
  • Город:которого нет

Отправлено 08 May 2017 - 16:23

Немного поправил скрипт. Теперь он:
  • Более красивый
  • Более стабильный
  • Имеет "API"
Я бы мог, чисто теоретически, написать фишку с поиском комментов из списков в профилях пользователей, но, чую, гемором это попахивает...

Просмотр сообщенияLi Si Cin (08 May 2017 - 16:21) писал:

Не, для меня не вариант. Если на js я мог бы что-нить страшненькое накарябать, то в расширениях не разбирался, и желания/потребности пока нет.

Если речь идет о расширениях под хром, то это js.

#12 Li Si Cin

    Чунин

  • Пользователи
  • 59 сообщений

Отправлено 09 May 2017 - 01:05

Просмотр сообщенияMaxLevs (08 May 2017 - 16:23) писал:

Я бы мог, чисто теоретически, написать фишку с поиском комментов из списков в профилях пользователей, но, чую, гемором это попахивает...
Чисто теоретически, даже я мог бы написать, но не настолько это нужно, сколько будет гемора (и это несмотря на то, что основную часть можно взять из твоего скрипта). Точнее даже, не столько много гемора, сколько мало потребности в этом. Мне просто лениво. Даже если ты сделаешь, ну поставлю я и, может, еще несколько человек, а остальные даже не поймут о чем речь. Вот если бы централизованно со стороны ресурса это запилили, непосредственно в кодовую базу сайта - это было бы здорово. А так ты будешь потеть ради небольшого выхлопа, единственный профит - потренироваться на кошках. Впрочем, ради последнего я и сам бы сделал, если бы делать было совсем нечего. Но пока предпочту потратить свободные несколько часов на аниме и книжку. И, в данном случае, мне было бы стыдно, если бы кто-то сделал за меня работу, которую могу сделать сам. :)

Цитата

Если речь идет о расширениях под хром, то это js.
Я на лисе. Даже если js, то нужно изучать api этого дела и прочие нюансы, не нужно оно пока мне.

#13 MaxLevs

    Чунин

  • Пользователи
  • 85 сообщений
  • Пол:Мужчина
  • Город:которого нет

Отправлено 09 May 2017 - 16:06

Просмотр сообщенияLi Si Cin (09 May 2017 - 01:05) писал:

сколько будет гемора
Отбой. Гемора оказалось меньше, чем планировалось. За полчасика набросал. Но получилось не особо красиво в плане реализации. (сказалось скудное знание языка) Зато работает. Правда, лучше переустановить, ибо я изменил @namespace :D


Просмотр сообщенияLi Si Cin (09 May 2017 - 01:05) писал:

И, в данном случае, мне было бы стыдно, если бы кто-то сделал за меня работу, которую могу сделать сам

Я это чисто по фанчику делаю. Расхочется - не буду :D Это быстро решатеся)

#14 Li Si Cin

    Чунин

  • Пользователи
  • 59 сообщений

Отправлено 09 May 2017 - 20:28

Таки через w.open решил? Я долго думал, почему у меня обработчик не срабатывает (точнее, open не работает). :)
Оказалось у меня в двух местах было заблочено: в своем скрипте было window.open = null и в uBlock запрет на всплывающие окна.

Кстати, лиса ругается единовременно при установке скрипта и после правки скрипта при нахождении на странице (см. аттач). Потом пропадает. На работоспособность скрипта не влияет. Мне кажется нет смысла париться, у меня вообще стоит
// @include	http://online.anidub.com/*


Не знаю, как легко отловить событие рендеринга каментов, поэтому тупо добавил для прокрутки к каменту время на рендер:

default:
	indicator.style.backgroundColor = "#6fae18";
	indicator.textContent = "НАЙДЕНО";
	setTimeout( function() {
		  targetPage.document.getElementById(point.id).scrollIntoView();
	}, 100);

Прикрепленные файлы

  • Прикрепленный файл  error.png   13.39К   8 Количество загрузок:


#15 MaxLevs

    Чунин

  • Пользователи
  • 85 сообщений
  • Пол:Мужчина
  • Город:которого нет

Отправлено 10 May 2017 - 00:42

Просмотр сообщенияLi Si Cin (09 May 2017 - 20:28) писал:

Кстати, лиса ругается единовременно при установке скрипта и после правки скрипта при нахождении на странице (см. аттач). Потом пропадает. На работоспособность скрипта не влияет. Мне кажется нет смысла париться, у меня вообще стоит
// @include	http://online.anidub.com/*

Что-то с лисой твориться странное..
У тебя tempermonkey?

Просмотр сообщенияLi Si Cin (09 May 2017 - 20:28) писал:

Не знаю, как легко отловить событие рендеринга каментов, поэтому тупо добавил для прокрутки к каменту время на рендер.
Я могу прикрутить к body кастомное событие на загрузку моего скрипта. Тогда можно будет повесить обработчик на него:
addEventListener('ad_scriptOnLoad', doSomething);
Я планировал это делать и для своей реализации, но мне было лень возиться со структурой кода, чтобы все по феншую.

#16 Li Si Cin

    Чунин

  • Пользователи
  • 59 сообщений

Отправлено 10 May 2017 - 01:43

Просмотр сообщенияMaxLevs (10 May 2017 - 00:42) писал:

Что-то с лисой твориться странное..
У тебя tempermonkey?
Greasemonkey.

Просмотр сообщенияMaxLevs (10 May 2017 - 00:42) писал:

Я могу прикрутить к body кастомное событие на загрузку моего скрипта.
Ну, у меня и в таком виде работает, даже с 0мс, видимо надо просто отложить выполнение хоть на сколько-то.
Можно сразу после CommentsPage вставлять, но там нулем не обойдешься, там нужна 100-ка минимум. Событие загрузки твоего скрипта, ничем не будет отличаться от произвольной задержки, т.к. эта самая CommentsPage полностью строит каменты весьма небыстро. Кстати, из какого скрипта она идет, я что-то не нашел.

Ну а по честному надо либо опрашивать с интервалом на предмет долгожданного появления id, либо подписываться на изменения какого-то родительского элемента. Но зачем, если костыль работает. :)

#17 MaxLevs

    Чунин

  • Пользователи
  • 85 сообщений
  • Пол:Мужчина
  • Город:которого нет

Отправлено 10 May 2017 - 02:10

Просмотр сообщенияLi Si Cin (10 May 2017 - 01:43) писал:

Событие загрузки твоего скрипта, ничем не будет отличаться от произвольной задержки, т.к. эта самая CommentsPage полностью строит каменты весьма небыстро. Кстати, из какого скрипта она идет, я что-то не нашел.

Мой скрипт загружается как раз тогда, когда можно вызвать window.ad_searchManager(), то есть начать поиск. Большего и не надо. Или ты чего-то другого ждешь? Опиши подробнее тогда.

Долго строит из-за того, что ждет ответ от сервера. Сам код там маленький. 1)отобразить процесс загрузки 2)обратиться к comment.php 3)при получении отрубить отображение процесса загрузки и вставить данные через innerHTML.
Данные - json, состоящий из полей navigation (те саиые кнопочки и срелочки) и comments, содержимое которых - валидный html

#18 MaxLevs

    Чунин

  • Пользователи
  • 85 сообщений
  • Пол:Мужчина
  • Город:которого нет

Отправлено 10 May 2017 - 02:35

можно написать свою реализацию commentPage, и все будет по феншую

#19 MaxLevs

    Чунин

  • Пользователи
  • 85 сообщений
  • Пол:Мужчина
  • Город:которого нет

Отправлено 10 May 2017 - 14:13

Очередное обновление, И... я думаю, оно будет последним. Основной набор задач решен. Оптимизация проведена. Код структурирован максимально красиво, исходя из возможностей. Дальнейшего развития для него я не вижу.

#20 Li Si Cin

    Чунин

  • Пользователи
  • 59 сообщений

Отправлено 10 May 2017 - 16:40

Просмотр сообщенияMaxLevs (10 May 2017 - 02:10) писал:

Мой скрипт загружается как раз тогда, когда можно вызвать window.ad_searchManager(), то есть начать поиск. Большего и не надо. Или ты чего-то другого ждешь? Опиши подробнее тогда.

Долго строит из-за того, что ждет ответ от сервера. Сам код там маленький. 1)отобразить процесс загрузки 2)обратиться к comment.php 3)при получении отрубить отображение процесса загрузки и вставить данные через innerHTML.
Данные - json, состоящий из полей navigation (те саиые кнопочки и срелочки) и comments, содержимое которых - валидный html

можно написать свою реализацию commentPage, и все будет по феншую
До меня только сегодня дошло, что commentPage асинхронная и вместо извращений с отслеживанием появления камента в DOM надо бы ее переделать, чтоб в промис обернуть. Да и интересно, что там написано, и главное - как ее найти.
Я вижу, что ты решил сам выводить каменты, не пользуясь ей. Раз уж там действительно все готовенькое, то может так и проще.

И кстати, опять ругался на @match. Походу, в отличие от include, ему scheme обязательна, ибо в таком виде не ругается:

// @match		*://online.anidub.com/*

или

// @match		*://online.anidub.com/*/*/*
// @match		*://online.anidub.com/index.php?*do=lastcomments*

И было б здорово, если б ты в корневом посте краткую инструкцию разместил:
- скачайте такое-то дополнение,
- сделайте то-то.

Может у кого-то из непричастных и получится.





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 скрытых пользователей