Клуб Народной карты

Скрипт-букмарклет для перехода в профиль пользователя из Клуба Народной карты v 2.0

Никита Юшков
13 августа, 11:40

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

ID пользователя берётся из аватарки, поэтому для пользователей без аватарки кнопка не добавляется (ибо у них этого самого ID  в адресе аватарки нет, больше взять его неоткуда). За находку информации об UserID для реализации скрипта на главной странице Клуба благодарим Семёна Федотова.

Код для букмарклета:

javascript:
var a = [];
var b;
var prokr = 0;
if(document.getElementsByClassName('b-post_yablogs-club _init').length > 0){prokr = (document.getElementsByClassName('b-post_yablogs-club _init').length/20)-1;}
var Interval;
function cl(){
b=undefined;
a = document.getElementsByClassName('b-post_yablogs-club _init');
var temp;
var n = 0;
var i;
for(var j = prokr*20; j < a.length; j++){
temp = a[j].getElementsByClassName('b-round-avatar__image')[0].src;
n=0;
for(i = 0; i<100; i++){
    if(temp[i]=='/')n+=1;
    if(n==5)break;
}
if(i < 99) {
    i+=1;
    b=temp[i];
    for(i+=1; i<100; i++){
        if(temp[i]!='-')b+=temp[i];else break;
    }
}    
if(!((b === undefined) || (b === null) || (isNaN(b)))){m = a[j].getElementsByClassName('b-post_yablogs-club__date');
if (!((m[0] === null) || (m[0] === undefined) || (b == 0))){
m[0].insertAdjacentHTML('afterEnd', '<div class="y-button_islet _init" data-block="y-button" style="margin-left: 15px"><a class="y-button_islet__text" href="https://n.maps.yandex.ru/#!/users/'+b+'" target="_blank">Перейти в профиль</a></div>');}}} 
if(a.length != 0){document.getElementsByClassName('b-post-list_yablogs__more')[0].onclick = function(){Interval = setInterval(function(){if(a.length > (prokr*20)+20){prokr+=1; prom();}},10)};}}

function prom(){clearInterval(Interval); cl();}

a = document.getElementsByClassName('b-comment-group_yablogs _init');
for(var j = 0; j < a.length; j++){
b = JSON.parse(a[j].dataset.options).options.authorId;
if(!((b === undefined) || (b === null) || (isNaN(b)))){m = a[j].getElementsByClassName('b-comment-group_yablogs__date');
if (!((m[0] === null) || (m[0] === undefined))){
m[0].insertAdjacentHTML('afterEnd', '<div class="y-button_islet _init" data-block="y-button" style="margin-left: 15px"><a class="y-button_islet__text" href="https://n.maps.yandex.ru/#!/users/'+b+'" target="_blank">Перейти в профиль</a></div>');}}}

b=undefined;
a = document.getElementsByClassName('b-article_yablogs-not-draft _init');
if ((a[0] === null) || (a[0] === undefined))a = document.getElementsByClassName('b-article_yablogs-draft _init');
if(!((a[0] === null) || (a[0] === undefined)))b = JSON.parse(a[0].dataset.options).options.post.author.id;
if(!((b === undefined) || (b === null) || (isNaN(b)))){var m = a[0].getElementsByClassName('b-article_yablogs-not-draft__date');
if ((m[0] === null) || (m[0] === undefined))m = a[0].getElementsByClassName('b-user_yablogs__user-data');
m[0].insertAdjacentHTML('afterEnd', '<div class="y-button_islet _init" data-block="y-button" style="margin-left: 20px"><a class="y-button_islet__text" href="https://n.maps.yandex.ru/#!/users/'+b+'" target="_blank">Перейти в профиль</a></div>');}

cl();

Ссылка на версию скрипта для использования через браузерное расширение:

https://greasyfork.org/ru/scripts/371085-ссылки-на-профиль-в-клубе-народной-карты-яндекс

Я использую расширение Tampermonkey (ссылка на него в интернет-магазине Chrome).

P. S. Если кто-то пропустил обновление скрипта для добавления привязок — код был обновлён в теме 3.08: https://yandex.ru/blog/narod-karta/skript-bukmarklet-dlya-sozdaniya-obektov-privyazok-v-narodnoy-karte Не забудьте обновиться!)

3 комментария
Хорошо бы поменять "Перейти в профиль" на просто "Профиль". Компактнее и аккуратнее будет смотреться)
Никита Юшков
13 августа, 19:54
sc1a,
хм, посмотрю. Но мне показалось, что текущий вариант текста наиболее логичен.
Никита Юшков,
или можно еще так: "В профиль" )