星之子 发表于 2025-7-10 13:57:26

【油猴脚本】屏蔽首页小电视

本帖最后由 星之子 于 2025-8-12 22:58 编辑

动机
受到@Makima老师编写的【脚本】GM小电视(屏蔽小电视图片)的启发,为了满足自己一些更细微的需求,所以调教DeepSeek写了这个脚本。

功能
这个脚本可以屏蔽GM首页的小电视,避免一些命大的NSFW的内容意外显示。在重新打开界面后也会通过localStorage中的一个键记忆最后一次切换的状态。
与玛奇玛老师的版本相比,追加了两个小功能:

[*]不再使用 [隐藏]、[显示] 这样的按钮(感觉有点此地无银这是可以说的吗),而是直接取代“首页电视”四个字的原本功能,将之作为切换按钮,更美观也更隐蔽。
[*]添加了一个只显示标题的中间状态,现在是在 完整显示 / 仅标题无图片 / 仅导航无标题图片 三种状态间切换。



代码
@Name@Match@Icon
// ==UserScript==
// @Name         首页:屏蔽GM小电视
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description点击"首页电视"切换三种显示模式(完整显示/仅标题/仅导航),无闪烁且切换即时生效
// @author       Étoiles & DeepSeek
// @match      https://www.gamemale.com/*
// @grant      GM_addStyle
// @grant      GM_getValue
// @grant      GM_setValue
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';

    // 定义三种状态
    const STATES = {
      FULL: 0, // 显示全部
      TITLE_ONLY: 1, // 仅显示标题和导航
      NAV_ONLY: 2 // 仅显示导航
    };

    const STORAGE_KEY = 'slideshowState_v3';
    let currentState = GM_getValue(STORAGE_KEY, STATES.FULL);

    // 添加样式规则
    GM_addStyle(`
      .slideshow-state-1 img {
            display: none !important;
      }
      .slideshow-state-2 img,
      .slideshow-state-2 .title {
            display: none !important;
      }
    `);

    // 主逻辑
    function main() {
      const titleLink = document.querySelector('.titletext a');
      if (!titleLink) {
            setTimeout(main, 200);
            return;
      }

      const slideElement = document.querySelector('.module.cl.slidebox');
      if (!slideElement) return;

      // 初始应用状态
      function applyState(state) {
            slideElement.classList.remove('slideshow-state-1', 'slideshow-state-2');
            if (state === STATES.TITLE_ONLY) {
                slideElement.classList.add('slideshow-state-1');
            } else if (state === STATES.NAV_ONLY) {
                slideElement.classList.add('slideshow-state-2');
            }
      }

      // 初始化应用状态
      applyState(currentState);

      // 更新状态函数
      function updateState() {
            currentState = (currentState + 1) % 3;
            GM_setValue(STORAGE_KEY, currentState);
            applyState(currentState);
      }

      // 添加点击事件
      titleLink.addEventListener('click', function(e) {
            e.preventDefault();
            e.stopPropagation();
            updateState();
      });
    }

    // 执行初始化
    if (document.readyState === 'loading') {
      document.addEventListener('DOMContentLoaded', main);
    } else {
      main();
    }
})();


星象占卜

a1b2a9 发表于 2025-7-10 14:06:30

哇,这个功能也是很实用了,在外面天天看小电视出现某些神秘图片我都要一惊一乍)

阿不思的落胤 发表于 2025-7-10 14:07:58

每次都要at一堆用户名真是辛苦了

dxuef 发表于 2025-7-10 14:15:31

好用哎,这样就不怕小电视上弹出来什么命大的标题图片惹

XLK 发表于 2025-7-10 14:20:52

有了这个插件就不怕哪天首页跳出个命大的图片被不小心看到了

毛茸茸兽兽 发表于 2025-7-10 14:38:13

挺不错的哇~就怕帖子标题内容比较逆天(´×ω×`)

娱乐法师火布偶 发表于 2025-7-10 14:52:44

经常会有人在非和谐区上传命大的图,可以一键屏蔽这些吓人的内容

anhou 发表于 2025-7-10 15:06:14

这个插件能屏蔽一些命大的图片挺好的,这样不用担心会被看到了

小幸运 发表于 2025-7-10 15:21:14

这样的话就不用担心被首页的不可名状的图给吓到了惹https://img.gamemale.com/album/202408/03/102115fz2ncq4r7cz47o7f.gif

cdcai 发表于 2025-7-10 15:45:09

挺好的,怕社死可以用这个{:6_167:}

轮回2L 发表于 2025-7-10 17:20:57

一键屏蔽首页可以杜绝尴尬事件厚{:6_163:}

是阿行嘞 发表于 2025-7-10 17:25:58

可以防止我bfnz的好东西,赞美
以后出门在外就开这个脚本惹,彻底扼杀之前差点被发现的问题()

辰翊 发表于 2025-7-10 17:34:00

很不错呢,如果能有一个,鼠标放上去就显示图片,拿走就隐藏的功能,那就完美了

Hadley0T 发表于 2025-7-10 17:42:41

非常实用,有些命大图真的不能上首页。尤其是违规的无码还一直挂着的

赴约波波 发表于 2025-7-10 19:58:54

看上去有用,不过,出门在外或者在公共场合,真的会打开泥潭吗?一些标题就够命大了

MuHuang 发表于 2025-7-10 20:03:11

这个真的挺好的,上次差点被朋友发现,还好我反应快:L

Cassini 发表于 2025-7-10 20:38:05

感谢分享惹,有次上班差点发生我命大事件,喜出柜惹。

cinder 发表于 2025-7-10 21:16:29

從不在外用手機開GM就沒有這種困擾惹~

柏芸 发表于 2025-7-10 21:18:20

非常有帮助的脚本只能说,再也不担心在外面玩泥潭会有什么尴尬场面了;P

114514banana 发表于 2025-7-10 23:19:20

这插件也太实用了吧,之前老是被命大的图片突脸
页: [1] 2
查看完整版本: 【油猴脚本】屏蔽首页小电视