您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Установка своего аватара на Табуне!
当前为
// ==UserScript== // @name TabunAva Reborn // @namespace http://tampermonkey.net/ // @version 0.2 // @description Установка своего аватара на Табуне! // @author Kujivunia или Niko_de_Andjelo // @match https://tabun.everypony.ru/* // @grant none // @license MIT // ==/UserScript== // Я не умею писать скрипты, поэтому "TabunAva" являет собой вольную переделку НЕ моего "Tabun Swarm" https://greasyfork.org/ru/scripts/400907-tabun-swarm //IDENTICON: https://avatars.dicebear.com/styles/identicon //Замена аватарок var time = performance.now(); var time0 = performance.now(); var Avatar = "https://cdn.everypony.ru/static/local/avatar_"; //Сокращение ссылок на аватарки var identicon = "https://avatars.dicebear.com/api/identicon/:"; var identiconParams = ".svg?scale=100&size=24"; var avaPost = "https://tabun.everypony.ru/blog/uniblog/203681.html"; var commentInfo = document.getElementsByClassName('comment-info'); var comments = document.getElementsByClassName('comment'); var dictUserAva = new Object(); var topicHeader = document.getElementsByClassName('topic-header'); var avatarMale = Avatar + 'male_24x24.png'; var avatarFemale = Avatar + Avatar + 'female_24x24.png'; fetch(avaPost) .then((response) => { return response.text(); }) .then((data) => { var parser = new DOMParser(); var htmlDocument = parser.parseFromString(data, "text/html"); comments = htmlDocument.getElementsByClassName('comment'); console.log('Время выполнения загрузки поста для сбора аватарок, мс.: ', performance.now() - time); time = performance.now(); //*****************************Выше была какая-то чёрная магия********************************** //Собираю аватарки из ава-поста. [].forEach.call(comments, function(element) { try { if (element.getElementsByClassName('comment-author')[0].children[0].children[0].src == (Avatar + 'male_24x24.png') || element.getElementsByClassName('comment-author')[0].children[0].children[0].src == (Avatar + 'female_24x24.png')) { var temp = element.getElementsByClassName('comment-author'); var name = temp[0].children[1].innerText; var tempComment = element.getElementsByClassName('comment-content')[0]; if (tempComment.getElementsByClassName('text')[0].getElementsByTagName('img')[0] != null) { if (tempComment.getElementsByClassName('text')[0].getElementsByTagName('img')[0].hasAttribute('src')) { var tempAvaLink = tempComment.getElementsByClassName('text')[0].getElementsByTagName('img')[0].getAttribute('src'); dictUserAva[name] = tempAvaLink; } } } } catch (e) {} }); console.log('Время выполнения сбора аватарок, мс.: ', performance.now() - time); time = performance.now(); }).then(() => { //Функция, якая выставляет аватарки change_avatar(); document.getElementById('count-comments').addEventListener('DOMSubtreeModified', function() { //Смотрит число комментариев и при изменении запускает смену аватарок. Без этого новые комментарии будут с обычными аватарками. change_avatar() }); }); document.getElementById('count-comments').addEventListener('DOMSubtreeModified', function() { //Смотрит число комментариев и при изменении запускает смену аватарок. Без этого новые комментарии будут с обычными аватарками. change_avatar() }); function change_avatar() { //Замена своей аватарки на плашке сверху var imgSrc = document.querySelector("#dropdown-user > a:nth-child(1) > img").src; var name = document.querySelector("#dropdown-user > a.username").outerText; console.log("=" + imgSrc + "=" + name); if (/(\/local\/avatar_male_)/.test(imgSrc) || /(\/local\/avatar_female)/.test(imgSrc)) { if (dictUserAva[name]) { document.querySelector("#dropdown-user > a:nth-child(1) > img").src = dictUserAva[name]; } else { document.querySelector("#dropdown-user > a:nth-child(1) > img").src = identicon + name + identiconParams; } } console.log('Время выполнения замены своей аватарки на плашке сверху, мс.: ', performance.now() - time); time = performance.now(); //Замена аватарок у комментариев внутри поста [].forEach.call(commentInfo, function(element) { if (element.getElementsByClassName('comment-author')[0].children[0].children[0].src == (Avatar + 'male_24x24.png') || element.getElementsByClassName('comment-author')[0].children[0].children[0].src == (Avatar + 'female_24x24.png')) { var temp = element.getElementsByClassName('comment-author'); var name = temp[0].children[1].innerText; if (dictUserAva[name]) { temp[0].children[0].children[0].src = dictUserAva[name]; } else { temp[0].children[0].children[0].src = identicon + name + identiconParams; } } }); console.log('Время замены аватарок комментариев, мс.: ', performance.now() - time); time = performance.now(); //Замена аватарок у поста [].forEach.call(topicHeader, function(element) { var temp = element.getElementsByClassName('avatar')[0]; var imgSrcRegExp = new RegExp(temp.getAttribute('src')); if (imgSrcRegExp.test(avatarMale) || imgSrcRegExp.test(avatarFemale)) { var name = element.getElementsByClassName('topic-info')[0].children[2].outerText; if (dictUserAva[name]) { temp.src = dictUserAva[name]; } else { temp.src = identicon + name + identiconParams; } } }); console.log('Время замены аватарок шапок постов, мс.: ', performance.now() - time); time = performance.now(); //Замена аватарок у профиля var profile = document.getElementById('content'); name = document.querySelector("#content > div.profile > h2").outerText; imgSrc = document.querySelector("#content > div.profile-info-about > a.avatar > img").src; if (/(\/local\/avatar_male_)/.test(imgSrc) || /(\/local\/avatar_female)/.test(imgSrc)) { if (dictUserAva[name]) { document.querySelector("#content > div.profile-info-about > a.avatar > img").src = dictUserAva[name]; } else { document.querySelector("#content > div.profile-info-about > a.avatar > img").src = identicon + name + identiconParams; } } console.log('Время выполнения замены аватарки профиля, мс.: ', performance.now() - time); time = performance.now(); //Замена аватарок у друзей в профиле [].forEach.call(document.querySelector("#content > div.wrapper > div.profile-left > ul.user-list-avatar").getElementsByTagName('li'), function(element) { var name = element.children[0].outerText; var temp = element.children[0].getElementsByTagName('img')[0]; var imgSrc = temp.getAttribute('src'); var imgSrcRegExp = new RegExp(imgSrc); if (/(\/local\/avatar_male_)/.test(imgSrc) || /(\/local\/avatar_female)/.test(imgSrc)) { temp.height = 48; temp.width = 48; if (dictUserAva[name]) { temp.src = dictUserAva[name]; } else { temp.src = identicon + name + ".svg?scale=100&size=48"; } } }); console.log('Время выполнения замены аватарок друзей в профиле, мс.: ', performance.now() - time); time = performance.now(); //Замена аватарок в ленте активности //TODO }