Greasy Fork is available in English.

Facebook-yian

Facebook一键脚本,支持点赞、移除推荐,并根据好友数量条件手动控制页面。提供UI按钮以控制开关,状态跨页面持久化保存,开关状态UI美化。

Этот скрипт недоступен для установки пользователем. Он является библиотекой, которая подключается к другим скриптам мета-ключом // @require https://update.greasyfork.org/scripts/490096/1345708/Facebook-yian.js

// ==UserScript==
// @name         Facebook狗推专用
// @namespace    http://tampermonkey.net/
// @version      2.2.2
// @description  Facebook一键脚本,支持点赞、移除推荐,并根据好友数量条件手动控制页面。提供UI按钮以控制开关,状态跨页面持久化保存,开关状态UI美化。
// @author       亦安
// @match        https://www.facebook.com/*
// @grant        none
// @downloadURL https://update.greasyfork.org/scripts/490096/Facebook%E7%8B%97%E6%8E%A8%E4%B8%93%E7%94%A8.user.js
// @updateURL https://update.greasyfork.org/scripts/490096/Facebook%E7%8B%97%E6%8E%A8%E4%B8%93%E7%94%A8.meta.js
// ==/UserScript==



(function () {
  "use strict";

  // 读取初始状态
  let isChecking = localStorage.getItem("fb-friendCheckEnabled") === "true";
  let checkInterval;

  const settings = {
    likeButton: {
      text: "一键点赞",
      bottom: "50px",
      action: likeAction,
    },
    removeButton: {
      text: "移除推荐",
      bottom: "100px",
      action: removeRecommendations,
    },
    listPullupButton: {
      text: "一键列表上拉",
      bottom: "150px",
      action: listPullupAction,
    },
  };

  function toggleFriendCheck() {
    isChecking = !isChecking;
    localStorage.setItem("fb-friendCheckEnabled", isChecking.toString());
    updateButtonState();
    manageFriendCheck();
  }

  function updateButtonState() {
    const button = document.getElementById("fb-enhanced-checkFriendButton");
    if (button) {
      button.textContent = isChecking ? "停止检查好友数量" : "开始检查好友数量";
    }
  }

  function manageFriendCheck() {
    if (isChecking) {
      startFriendCheck();
    } else {
      if (checkInterval) clearInterval(checkInterval);
    }
  }

  function startFriendCheck() {
    if (checkInterval) clearInterval(checkInterval);
    checkInterval = setInterval(checkFriends, 500);
  }

  function checkFriends() {
    const links = document.querySelectorAll("a");
    for (let link of links) {
      if (link.textContent.includes("位好友")) {
        const friendCount = parseInt(link.textContent.split(" ")[0].replace(/,/g, ""), 10);
        if (friendCount < 10 || friendCount > 1000) {
          window.close();
          return;
        }
      }
    }
  }

  function createEnhancedButton() {
    let button = document.createElement("button");
    button.id = "fb-enhanced-checkFriendButton";
    button.textContent = isChecking ? "停止检查好友数量" : "开始检查好友数量";
    button.style = "position: fixed; bottom: 200px; right: 20px; z-index: 10000; padding: 10px 15px; font-size: 16px; border: none; border-radius: 5px; color: white; cursor: pointer; background-color: #4267B2;";
    button.onclick = toggleFriendCheck;
    document.body.appendChild(button);
  }

  function createButton({ text, bottom, action }) {
    let btn = document.createElement("button");
    btn.textContent = text;
    btn.style = `position: fixed; bottom: ${bottom}; right: 20px; z-index: 10000; padding: 10px 15px; font-size: 16px; border: none; border-radius: 5px; color: white; cursor: pointer; background-color: #4267B2;`;
    btn.addEventListener("click", action);
    document.body.appendChild(btn);
    return btn;
  }

  // 以下为代码2中的其他功能实现
  function likeAction() {
    const likeButtons = Array.from(
      document.querySelectorAll('div[aria-label="赞"][role="button"]'),
    );
    const numberOfLikes = Math.floor(Math.random() * 8) + 3;
    for (let i = 0; i < numberOfLikes; i++) {
      const randomIndex = Math.floor(Math.random() * likeButtons.length);
      const buttonToClick = likeButtons[randomIndex];
      if (buttonToClick) {
        setTimeout(
          () => buttonToClick.click(),
          Math.random() * (2000 - 1000) + 1000,
        );
        likeButtons.splice(randomIndex, 1);
      }
    }
  }

  function removeRecommendations() {
    setInterval(() => {
      const buttons = document.querySelectorAll('div[role="none"]');
      buttons.forEach(function (button) {
        if (
          button.innerText.includes("移除") ||
          button.innerText.includes("删除")
        ) {
          button.click();
        }
      });
    }, 1000);
  }
function listPullupAction() {
    const targetClassName =
      "x6s0dn4 xkh2ocl x1q0q8m5 x1qhh985 xu3j5b3 xcfux6l x26u7qi xm0m39n x13fuv20 x972fbf x9f619 x78zum5 x1q0g3np x1iyjqo2 xs83m0k x1qughib xat24cr x11i5rnm x1mh8g0r xdj266r xexx8yu x1n2onr6 x1ja2u2z";
    const elements = document.querySelectorAll(
      `div.${targetClassName.replace(/\s/g, ".")}`,
    );
    const friendLinks = [];
    elements.forEach((element) => {
      if (element.textContent.includes("添加好友")) {
        const link = element.querySelector("a");
        if (link && link.href) {
          friendLinks.push(link.href);
        }
      }
    });

    function openLinksInBatches(links, batchSize, interval) {
      let index = 0;
      function openBatch() {
        const batch = links.slice(index, index + batchSize);
        batch.forEach((link) => window.open(link, "_blank"));
        index += batchSize;
        if (index < links.length) {
          setTimeout(openBatch, interval);
        }
      }
      openBatch();
    }
    openLinksInBatches(friendLinks, 10, 20000);
}

  function initialize() {
    Object.values(settings).forEach((setting) => {
      createButton(setting);
    });
    createEnhancedButton(); // 创建增强检查好友数量的按钮
    updateButtonState();
    manageFriendCheck();
  }

  initialize();
})();