FanzaFilterUtil

filtering util on Fanza doujin

As of 2023-07-31. See the latest version.

This script should not be not be installed directly. It is a library for other scripts to include with the meta directive // @require https://update.sleazyfork.org/scripts/471066/1228410/FanzaFilterUtil.js

// ==UserScript==
// @name         FanzaFilterUtil
// @description  filtering util on Fanza doujin
// @author       RamisAmuki
// @license      MIT
// ==/UserScript==

// ignore list
const is_bookmark_page = location.pathname === "/dc/doujin/-/bookmark/";
const ignore_querys = [
  "span.u-common__ico--basketDone",
  "span.listPurchased__btn",
];
const ignore_genres = ["ボイス"];
const ignore_authors = ["TGA", "聖華快楽書店"];
const ignore_titles = ["体験版", "無料版", "ぼうけんのしょ"];

// query
const querys = !is_bookmark_page
  ? {
      lists: "ul.fn-productList > li.productList__item",
      genre: "div.listGenreIco__ico",
      author: "div.tileListTtl__txt--author",
      title: "div.tileListTtl__txt",
      rate: "span.c_icon_priceStatus",
      price: "p.c_txt_price",
      button_parent: "div.pageNation__item",
    }
  : {
      lists: "ul.basket-list-tile > li.basket-listItem-tile",
      genre: "span.c_icon_genre",
      author: "p.basket-circle-tile",
      title: "b.basket-name-tile",
      rate: "span.c_icon_priceStatus",
      price: "p.c_txt_price",
      button_parent: "div.basket-btnAreaCol1",
    };

const checker = (liqs) => {
  const auhtor = liqs(querys.author).innerText.trim();
  const title = liqs(querys.title).innerText;
  if (liqs(querys.rate) === null) return true;
  // checking
  return [
    check_rate_price(liqs, querys),
    ignore_querys.some((query) => liqs(query) != null),
    ignore_genres.includes(liqs(querys.genre).innerText),
    checkboxEnable("author") ? ignore_authors.includes(auhtor) : false,
    ignore_titles.some((ignore) => title.includes(ignore)),
  ].some((b) => b);
};