您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Hide blacklisted users and their data.
- // ==UserScript==
- // @name dd-ignore-tempermonkey
- // @namespace https://gf.qytechs.cn/en/scripts/6473-dd-ignore-tempermonkey
- // @version 0.4.7
- // @description Hide blacklisted users and their data.
- // @include *darkdiary.ru/*
- // @require https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js
- // @grant GM.getValue
- // @grant GM.setValue
- // @license GPLv3
- // ==/UserScript==
- var noticeStyle;
- var ignoreListStyle;
- var ignoreListContainerType;
- var ignoreListContainer;
- var ignoreListContainerHolder;
- var loggedIn;
- var currentListValues;
- var leftmenu;
- var loginMenu;
- var removeFromList = async function (nick) {
- console.log("remove "+nick);
- currentListValues = currentListValues.replace(' ' + nick + ' ', ' ');
- await GM.setValue('dd_ignore', currentListValues);
- fillList(currentListValues.split(' '));
- $('div[data-user = "' + nick + '"]').parent().siblings().attr('style', '')
- .siblings('div[class!="leftPane"][class!="rightPane rightPaneOffset"]').attr('style', 'clear:both;');
- $('div[data-user = "' + nick + '"]').parent().remove();
- $('a[title^="Профиль"][href="/users/' + nick + '/profile"] + a' + (loggedIn ? ' + a' : ''))
- .attr('title', 'В игнор').unbind('click').bind('click', magic).next().remove();
- $('a[title^="Профиль пользователя"][href="/users/' + nick + '/profile"] + a' + (loggedIn ? ' + a' : ''))
- .closest('div[class="userlistRow"]').attr('style', '');
- };
- var antimagic = function (event) {
- var nick = $(this).siblings('a[href $= "/profile"]').attr('href').replace('/users/', '').replace('/profile', '');
- removeFromList(nick);
- event.preventDefault();
- };
- var toggle = function (event) {
- var pObjects = $(this).parents('article').children().siblings('[class!="notice"]');
- var strStyle = pObjects.attr('style');
- //console.log(strStyle);
- var strQ = 'Скрыть?'
- if (strStyle == 'display:none') {
- pObjects.attr('style', 'padding-bottom:3px')
- } else {
- pObjects.attr('style', 'display:none')
- strQ = 'Показать?'
- }
- $(this).parents('article').find('a[class="igShow"]').html(strQ);
- event.preventDefault();
- };
- var hide = function (ignoreList) {
- ignoreList.forEach(function (value, index, array) {
- //console.log("hide "+value);
- $('a[title^="Профиль пользователя"][href="/users/' + value + '/profile"] + a' + (loggedIn ? ' + a' : ''))
- .closest('div[class="userlistRow"]').attr('style', 'display:none');
- var pToHide = $('a[title^="Профиль пользователя"][href="/users/' + value + '/profile"] + a' + (loggedIn ? ' + a' : ''))
- .attr('title', 'Скрыть').unbind('click')
- .bind('click', toggle)
- .after(' <a title="Амнистировать" class="forgive friendreqButton" href = "#"></a>')
- .closest('article[class^="block comment"]');
- var strPrevEl = 'div[class!="notice"]';
- if (pToHide.size() < 1) {
- pToHide = $('a[title^="Профиль пользователя"][href="/users/' + value + '/profile"] + a' + (loggedIn ? ' + a' : ''))
- .closest('article[class^="block entry"]');
- strPrevEl = 'div[class^="rightPane"]';
- }
- pToHide.children().siblings('[class!="notice"]').attr('style', 'display:none').siblings(strPrevEl).after('<section class="notice" style="' +
- noticeStyle + '" ><div class="textBg" data-user="' + value +
- '" style="border:solid 1px #ddddcc; padding-left: 120px">Пользователь <b>' +
- value + '</b> написал какую-то глупость. <a class="igShow" href="#">Показать?</a></div></section>');
- //console.log(pToHide);
- });
- $('a.igShow').unbind('click').bind('click', toggle);
- $('a.forgive').unbind('click').bind('click', antimagic);
- };
- var magic = async function (event) {
- var nick = $(this).siblings('a[href $= "/profile"]').attr('href').replace('/users/', '').replace('/profile', '');
- currentListValues = currentListValues.replace(' ' + nick + ' ', ' ') + nick + ' ';
- await GM.setValue('dd_ignore',currentListValues);
- fillList(currentListValues.split(' '));
- hide([nick]);
- console.log("hide " + nick);
- event.preventDefault();
- };
- var antimagicByName = function (event) {
- var nick = $(this).closest('div').prev().attr('href').replace('/users/', '').replace('/profile', '').replace('/', '');
- removeFromList(nick);
- event.preventDefault();
- };
- var fillList = function (ignoreList) {
- ignoreListContainer.html('<h1 class="section">Список игнора</h1><hr class="divider"></hr></div>');
- ignoreListContainer.next().remove();
- var tmpList = '<div>';
- ignoreList.forEach(function (value, index, array) {
- if (value != ''){
- tmpList += '<div class="userlistRow"><a href="/users/' + value + '/">' + value + '</a>' +
- '<div class="controls"><a title="Амнистировать" class="forgiveFromList friendreqButton" ></a></div></div>';
- }
- });
- tmpList += '</div>';
- ignoreListContainer.after(tmpList);
- $('a.forgiveFromList').unbind('click').bind('click', antimagicByName);
- };
- var showIgnore = async function (event) {
- ignoreListStyle = (ignoreListStyle == 'display:none' ? 'padding-bottom:3px' : 'display:none');
- ignoreListContainer.closest('h1').parent().attr('style', ignoreListStyle);
- $(this).text(ignoreListStyle == 'display:none' ? 'Показать список' : 'Скрыть список');
- await GM.setValue('ignoreListStyle', ignoreListStyle);
- fillList(currentListValues);
- event.preventDefault();
- };
- var toggleNotices = async function (event) {
- noticeStyle = (noticeStyle == 'display:none' ? 'padding-bottom:3px' : 'display:none');
- $('.notice').attr('style', noticeStyle);
- $(this).text(noticeStyle == 'display:none' ? 'Показать оповещения' : 'Скрыть оповещения');
- await GM.setValue('noticeStyle', noticeStyle);
- event.preventDefault();
- };
- var initSystem = async function () {
- console.log("Ignoring starting...");
- noticeStyle = await GM.getValue('noticeStyle', 'padding-bottom:3px');
- ignoreListStyle = await GM.getValue('ignoreListStyle', 'display:none');
- currentListValues = await GM.getValue('dd_ignore', ' ')
- ignoreListContainerType = 0;
- ignoreListContainerHolder = $('h1.section:contains("Наши интересы")').parent().parent();
- if (ignoreListContainerHolder.prop('baseURI') == undefined) {
- ignoreListContainerType = 1;
- ignoreListContainerHolder = $('h1.section:contains(" теги")').parent().parent();
- if (ignoreListContainerHolder.prop('baseURI') == undefined) {
- ignoreListContainerHolder = $('h1.section:contains(" друзья")').parent().parent();
- if (ignoreListContainerHolder.prop('baseURI') == undefined) {
- ignoreListContainerHolder = $('h1.section:contains("Дневники")').parent().parent();
- if (ignoreListContainerHolder.prop('baseURI') == undefined) {
- ignoreListContainerType = - 1;
- return;
- }
- }
- }
- }
- if (ignoreListContainerType >= 0) {
- var sHTMLTemplate = '<div class="block"><h1 class="section">1</h1>';
- ignoreListContainerHolder.children().last().after(sHTMLTemplate);
- ignoreListContainer = ignoreListContainerHolder.find('h1.section').last();
- }
- leftmenu = $('a.dropdown-toggle:contains("DarkDiary.ru")').parent();
- loggedIn = false;
- loginMenu= $('a.dropdown-toggle:contains("Вход")').parent();
- if (loginMenu.prop('baseURI') == undefined) {
- loggedIn = true;
- }
- if (leftmenu.prop('baseURI') == undefined) {
- return;
- }
- ignoreListContainer.closest('h1').parent().attr('style', ignoreListStyle);
- fillList(currentListValues.split(' '));
- $('a[class ^= "profileButton"][href $= "/profile"]' + (loggedIn ? ' + a' : ''))
- .after(' <a title="В игнор" class = "clIgnore deleteButton inline" href = "#"></a>');
- $('.clIgnore').bind('click', magic);
- leftmenu.after('<li class="dropdown">'+
- '<a aria-expanded="false" class="dropdown-toggle" href="#" data-toggle="dropdown">Игнор <strong class="caret"></strong></a>'+
- '<ul class="dropdown-menu" role="menu">'+
- '<li><a id="showIgnoreList" href="#">' + (ignoreListStyle == 'display:none' ? 'Показать список' : 'Скрыть список') +'</a></li>'+
- '<li><a id="toggleNotices" href="#">' + (noticeStyle == 'display:none' ? 'Показать оповещения' : 'Скрыть оповещения') + '</a></li>'+
- '</ul></li>');
- $('#showIgnoreList').bind('click', showIgnore);
- $('#toggleNotices').bind('click', toggleNotices);
- hide(currentListValues.split(' '));
- console.log("Ignoring started");
- }
- initSystem();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址