Выбиваем награду "Под крыло" у Пикабу
Парсинг персональных ачивок
Долгое время был в read-only, но на днях увидел пост о борьбе с баянами "своими" постами, и как бы сказать вдохновился. Ладушки, поехали.
На Пикабу, на странице ленты наград есть проблема: нельзя просмотреть персональные ачивки. Есть только разделы "все", "индивидуальные" (которая по сути "все") и "сообщества". Мда, и сортировки нет, одна кнопка "загрузить еще" красуется. А мне было бы интересно почитать посты, за которые пользователей наградили персональными ачивками. Штош, если гора не идет к Магомеду, решаем проблему сами.
За язык программирования взял Javascript, т.к. долгое время работаю на нем и хотелось запускать скрипт сразу из браузера. Заодно почему бы и не найти все ачивки, а еще сгруппировать по пользователям (это не все ачивки :(, см. п. 4 в проблемах в конце поста). Посты писать не умею, поэтому сразу результат (код ниже).
На треугольники-стрелочки (которые слева) можно нажать, чтобы раскрыть список.
Отлично! Теперь можно скопировать ник пользователя, вставить в URL после "собачки" (https://pikabu.ru/@) и почитать посты.
Ну и сам скрипт с коментариями, если кто-то тоже хочет запустить у себя. Инструкция по запуску и проблемы ниже.
UPD. Не знал, что Пикабу не переваривает код. Ссылка на исходник https://pastebin.com/C7eZp3H7
Инструкция по запуску скрипта (только десктоп):
Открываем любую страницу Пикабу в браузере, лишь бы домен был pikabu.ru, иначе возможна ошибка CORS.
Нажимаем F12 (или Ctrl + Shift + i) (или тыкаем правой кнопкой мыши в любое место и выбираем пункт Inspect/Посмотреть код) (или через настройки браузера справа вверху в пункте Developer Tools/Инструменты разработчика). Открылись инструменты разработчика.
Открываем вкладку Console/Консоль.
Вставляем весь скрипт и нажимаем Enter.
Ждем секунд 40 (зависит от интернет соединения, к серверу же обращаемся). Можно посмотреть ход выполнения скрипта во вкладке Network/Сеть. Там должны запросы к серверу отличающиеся только параметром page.
Смотрим в консоль, и если ошибки нет, любуемся результатом.
Проблемы, с которыми столкнулся:
Только методом тыка удалось составить необходимый header для AJAX запроса. И почему-то это 'X-Requested-With'. Странно, почему не 'Content-Type'?
Кнопка "загрузить еще" грузит гребаный HTML код. Да, для браузера пользователя так быстрее, чем получать JSON и по нему рендерить HTML, но твою мать :(
Я с этим не сталкивался, но если кто-то хочет запустить скрипт у себя, возможны синтаксические ошибки, т.к. использовал такие конструкции как spread, window.fetch и async/await. Эта проблема решается свежей версией браузера, в которой должны быть реализованы эти фичи.
Почему-то на сервере всего 36 страниц наград. Т.е. это не все награды. Может и можно как-то загрузить все, но не нашел.
Изначальная цель поиска персональных ачивок достигнута наполовину, потому что непонятно как понять, что ачивка персональная, а не выдана только одному пользователю. Поэтому просто взял весь список ачивок и отфильтровал по выданному кол-ву пользователей (чтобы был 1 пользователь-владелец), ну хоть как-то.
Странно, в предпросмотре поста, слетели табы/пробелы кода.
Ну вот и все. Сам скрипт занял примерно 2 часа, зато теперь можно почитать специфичные посты (жаль только что не все (см. п. 4 в проблемах)).
P.S. скрипт мой значит тег "мое" :) Или нет, непонятно
P.P.S. чукча не писатель
Награды
Как получить (заработать) награду на пикабу?
Как поделиться постом в соцсетях? И еще кое что
Недавно стал замечать, что на пикабушке замутили квест толи для поднятия активности посетителей толи просто позаебывать люд. На меня это подействовало как погоня за собственным хвостом. Знаете, частенько Бобиков клинит. Остановиться не мог. В одном из постов узнал, что подобное нечто происходило здесь и раньше. Дошел до золотого уровня но уперся в, казалось бы, банальный вопрос. Как? Я и ссылку своего пикабушного поста на стену в ВК вешал, и искал везде кнопку "поделиться постом" (в комментах она есть), уже в поддержку обратился, но тишина. Что я делаю не так? Тупой может совсем?
Ну, в довесок...... я Посещал разделы Промокоды и Скидки, Открывал 5 постов, Просматривал 10 постов в Горячем или Лучшем, Просмотрел 10 постов в Свежем (куда больше 10), и ни одно из этих перечисленных достижений не активировалось.
Как жить дальше?
У меня идея
Гулял вчера, вспоминал пикабу и ему подобные. И вдруг пришла идея: создать такой "слëт" Пикабушников, большой, официальный (уже круто) и выдавать каждому настоящие металлические награды и кубки которые есть у него в профиле. Впринципе можно такое сделать и без слëтов усяких. Интересная идея.