您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Takip edilen kişilerden pasif olanları unfollow eder. -> !! Ekşi - Takip edilen temizleyici - Gerekli modül (#2) [Unfollow edici modül] ile beraber çalışır. !!
// ==UserScript== // @name Ekşi - Takip edilen temizleyici - Ana modül (#1) // @namespace http://tampermonkey.net/ // @version 2 // @description Takip edilen kişilerden pasif olanları unfollow eder. -> !! Ekşi - Takip edilen temizleyici - Gerekli modül (#2) [Unfollow edici modül] ile beraber çalışır. !! // @author angusyus // @include https://eksisozluk*.com/biri/* // @include https://eksisozluk*.com/takip/* // @license MIT /*jshint esversion: 10 */ // ==/UserScript== const DATE_KEY = 'startPassiveCleanRecordingDate'; const AUTHOR_KEY = 'cleaningYazarName'; const BUTTON_ID = 'cleaning-button'; const BUTTON_NAME = "Takipleri Temizle"; const FOLLOWING_RECORD_KEY_NICK = "cleanCheckNick_"; const FOLLOWING_RECORD_KEY_DATE = "cleanCheckDate_"; (function() { 'use strict'; //Kayıt başlatmak için zaman kıyaslama kontrolü setTimeout(() => { const lastDateOfRecordCommand = localStorage.getItem(DATE_KEY); console.log("!!! lastDateOfRecordCommand:" + lastDateOfRecordCommand); const dateDiffer = new Date().getTime() - lastDateOfRecordCommand; console.log("!!! dateDiffer:" + dateDiffer); const storedYazarName = localStorage.getItem(AUTHOR_KEY); console.log("!!! storedYazarName:" + storedYazarName); const currentYazarName = getYazarName(); console.log("!!! currentYazarName:" + currentYazarName); if (dateDiffer < 5000 && storedYazarName == currentYazarName) { console.log("!!! LETS RECORD !!! "); startCleaningOps(); } }, 2000); //Buton ekleme const buttonTab = document.getElementsByClassName("sub-title-menu profile-buttons")[0]; if(buttonTab != null) { buttonTab.appendChild(createButton(BUTTON_ID, BUTTON_NAME)); document.querySelector("#"+BUTTON_ID).addEventListener("click", onCleanButtonClick); } })(); function onCleanButtonClick(zEvent) { alert("Temizlik başlıyor"); const currentDate = new Date().getTime(); const yazarName = getYazarName(); console.log("!!! currentDate:" + currentDate); console.log("!!! yazarName:" + yazarName); localStorage.setItem(DATE_KEY, currentDate); localStorage.setItem(AUTHOR_KEY, yazarName); var stats = document.getElementById("user-entry-stats"); var link = stats.getElementsByTagName("li")[2].getElementsByTagName("a")[0].href; location.replace(link); } async function startCleaningOps() { var followingNicks = await getFollowingNicks(); console.log("!!!+ followings: (" + followingNicks.length + ")" + followingNicks); console.log("!!!+ Links are ready. Checking activity now started."); for (var i = 0; i < followingNicks.length; i++) { var nick = followingNicks[i]; if (localStorage.getItem(FOLLOWING_RECORD_KEY_NICK + nick)) { continue; } await visitURLs(nick); } } function visitURLs(nick) { var url = "https://eksisozluk1923.com/biri/" + nick; // Bu nicki kontrol etmek için localStorage a kaydet. localStorage.setItem(FOLLOWING_RECORD_KEY_NICK + nick, true); localStorage.setItem(FOLLOWING_RECORD_KEY_DATE + nick, new Date().getTime()); var bb = document.createElement("a"); bb.setAttribute("href",""); bb.setAttribute("rel","opener"); bb.setAttribute("onClick","window.open('"+url+"'); return false"); bb.setAttribute("style","display: none;"); console.log(bb); bb.click(); console.log("!!! Link: " + url); return new Promise((resolve, reject) => { function visitPage() { console.log("!!! Operation for " + nick + " is now started."); window.addEventListener("focus", function(event) { console.log("!!! Visiting" + nick + " is probably finished, at:" + new Date()); resolve(); }, false); window.addEventListener("blur", function(event) { console.log("!!! " + nick + " is now visiting, at:" + new Date()); }, false); } visitPage(); }); } async function getFollowingNicks() { return new Promise((resolve, reject) => { async function extractNicks() { await scrollToBottom(); console.log("!!! Tüm takip/takipçiler tamamen yüklendi."); setTimeout(() => { //tüm kullanıcılar: //var followerNicks = document.querySelectorAll("#follows-nick "); // geri takip etmeyenler: var followerNicks = document.querySelectorAll("li[data-reverse-follow]:not([data-reverse-follow='true']) > a#follows-nick "); const followings = []; for (var i = 0; i < followerNicks.length; i++) { var nickContainer = followerNicks[i]; followings.push(nickContainer.innerHTML); } resolve(followings); }, 1500); } extractNicks(); }); } function scrollToBottom() { return new Promise((resolve, reject) => { function scrollToBottomOperation() { window.scrollTo(0, document.body.scrollHeight); var followDiv = document.getElementById("follow-list"); console.log("!!! followDiv.childElementCount:" + followDiv.childElementCount); if (followDiv.childElementCount < 100) { console.log("!!! bitti"); resolve(); } else { var isPageDone = followDiv.getAttribute('page-done'); if (isPageDone) { console.log("!!! bitti"); resolve(); } else { console.log("!!! Devam"); setTimeout(scrollToBottomOperation, 500); } } } scrollToBottomOperation(); }); } function createButton(id, text) { let button = document.createElement("button"); button.innerText = text; button.id = id; return button; } function getYazarName() { try { return document.querySelector("#content-body > h1 > a").innerHTML; } catch { try { return document.getElementById("user-profile-title").getAttribute("data-nick"); } catch { return ""; } } }