Greasy Fork

Greasy Fork is available in English.

Yahoo!ニュースフィルター

yahooニュースで任意の記事を非表示にする

目前为 2023-01-08 提交的版本,查看 最新版本

// ==UserScript==
// @name           Yahoo!ニュースフィルター
// @description    yahooニュースで任意の記事を非表示にする
// @grant          none
// @match          https://www.yahoo.co.jp
// @match          https://news.yahoo.co.jp/*
// @match          https://article.yahoo.co.jp/*
// @version        1.0.1
// @run-at         document-start
// @namespace http://greasyfork.icu/users/3989
// ==/UserScript==

/********************  SETTING **************************/

  const case_insensitive = true;
  const match_fullwidth = true;
  const filterWords = [];

/********************************************************/

'use strict';

(function() {

  const mod = case_insensitive? 'i': null;
  const p = new RegExp(filterWords.join('|'), mod);

  function convertHalfSize(str) {
    if (match_fullwidth) return str.replace(/[A-Za-z0-9]/g, s => String.fromCharCode(s.charCodeAt(0) - 65248));
    return str;
  }

  function removeArticle(d) {
    const a = d.querySelectorAll('[id^="tabpanelTopics"] ul>li, #Stream article, [id^="uamods"] li, ul[class$="list"] li, .yjnSub_list_item, .subList_item');
    for (const title of a) {
      if (p.test(convertHalfSize(title.textContent))) title.style.display = 'none';
    }
  }

  function observer() {
    const b = document.querySelectorAll('.mainColumn, .subColumn, #Topics, #qurireco, #contentsWrap, #yjnSub');
    if (!b) return;

    const mo = new MutationObserver(m => {
      for (const i of m) {
        removeArticle(i.target);
      }
    });
    for (const i of b) {
      mo.observe(i, {childList: true, subtree: true, attributeFilter: ['id']});
    }
  }

  window.addEventListener('DOMContentLoaded', () => {
    removeArticle(document);
    observer();
  });
})();