Greasy Fork 还支持 简体中文。

ZhihuHotFilter-JavaScript

2022/10/16 10:00:00

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name        ZhihuHotFilter-JavaScript
// @namespace   Violentmonkey Scripts
// @match       https://www.zhihu.com/hot
// @require     https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js
// @grant       window.open
// @grant       window.focus
// @version     1.0
// @author      尼尼尼@知乎
// @author      备份公众号:尼尼尼不打拳
// @description 2022/10/16 10:00:00
// @license     GPL3
// ==/UserScript==


// 知乎用户用于过滤热榜中,自己感兴趣话题的Javascript脚本。

// 简要操作说明:
// 1.在浏览器扩展商店中搜索“暴力猴“、”油猴“之类扩展插件,安装并启用。下面以”暴力猴“为例。
// 2.在暴力猴插件中点击”+“号,新建JS脚本,将此脚本内容全部复制粘贴进去并保存。
// 3.登录知乎账户,进入知乎“热榜页”。在暴力猴插件控制台中启用上面保存的脚本。
// 4.刷新页面,会看到页面顶部多出一个绿色”点击过滤话题“的按钮。

// 建议用途:根据关键字过滤知乎热榜中自己感兴趣的话,关键字可自行修改。

(function() {
        'use strict';

        //全局变量设置
        var resultPage='';//检测结果页面文本。
        var resultList = [];

        function c(v){
            console.log(v);
        }

        // 关键词数组设置,可自行修改
        var keyWordList = ['男','女','儿','婚','孕','彩礼','嫁','娶','骚扰','姑','娘','姐','妹','哥','兄','弟','暴','偷拍','妇','夫','妻','父','母','爹','妈','婴','童','教授','奸','亵','嫖','孩','杨笠','张桂梅','卫生巾'];

        //获取热榜上所有提问链接
        function getAllHotLinks(){
            var linkList = [];
            var currentPageLinks = document.querySelectorAll("div[class = 'HotItem-content'] > a");

            if( currentPageLinks.length !== 0){
                //存入数组并计数
                currentPageLinks.forEach(function (listItem) {
                    //取出关键信息并存入数组
                    let link = listItem.href;
                    let title = listItem.title;
                    let infoItem = {title, link};
                    linkList.push(infoItem);
                });
            }
            return linkList;

        }

        // 按关键字过滤话题
        function execHotFilter() {
            let allHotLinks = getAllHotLinks();
            if (allHotLinks.length !== 0) {
                allHotLinks.forEach(
                    function (listItem) {
                        let text = listItem.title;
                        keyWordList.forEach(
                            function (word) {
                                if (text.includes(word)) {
                                    resultList.push(listItem);
                                }
                            }
                        )
                    }
                )
            }

            //数组去重
            let uniqueResultList = [];
            resultList.forEach( item => !uniqueResultList.includes(item) ? uniqueResultList.push(item) : '')

            showResult(uniqueResultList);
            resultList = [];
            uniqueResultList = [];
        }

        //展示结果
        function showResult(uniqueResultList){
            resultPage = '<!DOCTYPE html><html><body><div><b>可能感兴趣的话题:'
                  + '</b></div><p><div><table>';

            if(uniqueResultList.length !== 0) {
                uniqueResultList.forEach(function (listItem) {
                    let cell = '<tr><td>'
                        + listItem.title
                        + '</td><td>'
                        + '<a href="'+listItem.link+'" target=_blank>'
                        + listItem.link
                        + '</a></td></tr>';

                    resultPage += cell;
                });
            }

            resultPage +='</table></div></body></html>';

            //新建浏览器标签,并展示检查结果。
            const newTab = window.open('','_blank');
            newTab.document.write(resultPage);
            newTab.focus();
        }

        function main() {
            c("执行main");
            addFilterButton();
        }

        //在页面上添加执行按钮
        function addFilterButton() {
            $('body').append('<div id="FilterHot">点击过滤话题</div>')
            $('#FilterHot').css('width', '200px')
            $('#FilterHot').css('position', 'absolute')
            $('#FilterHot').css('top', '70px')
            $('#FilterHot').css('left', '350px')
            $('#FilterHot').css('background-color', '#0000ff')
            $('#FilterHot').css('color', 'white')
            $('#FilterHot').css('font-size', 'large')
            $('#FilterHot').css('z-index', 100)
            $('#FilterHot').css('border-radius', '25px')
            $('#FilterHot').css('text-align', 'center')
            $('#FilterHot').click(function () {
                execHotFilter(getAllHotLinks());
            });
            //$('#CheckLink').draggable();

        }

        document.onreadystatechange = function(){
            if(document.readyState === "complete"){
                main();
            }

        }
    }



)();