Fanza Filter Util

filtering util on Fanza doujin

As of 2023-07-22. 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/1223725/Fanza%20Filter%20Util.js

  1. // ==UserScript==
  2. // @name Fanza Filter Util
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description filtering util on Fanza doujin
  6. // @author RamisAmuki
  7. // @match https://www.dmm.co.jp/dc/doujin/-/list/*
  8. // @match https://www.dmm.co.jp/dc/doujin/-/search/=/*
  9. // @match https://www.dmm.co.jp/dc/doujin/-/bookmark/
  10. // @icon https://p.dmm.co.jp/p/common/pinned/favicon.ico
  11. // @grant none
  12. // @license MIT
  13. // ==/UserScript==
  14.  
  15. // ignore list
  16. const is_bookmark_page = location.pathname !== "/dc/doujin/-/bookmark/";
  17. const ignore_querys = [
  18. "span.u-common__ico--basketDone",
  19. "span.listPurchased__btn",
  20. ];
  21. const ignore_genres = ["ボイス"];
  22. const ignore_authors = is_bookmark_page ? ["TGA", "聖華快楽書店"] : [];
  23. const ignore_titles = ["体験版", "無料版"];
  24.  
  25. // query
  26. const querys = is_bookmark_page
  27. ? {
  28. lists: "ul.fn-productList > li.productList__item",
  29. genre: "div.listGenreIco__ico",
  30. author: "div.tileListTtl__txt--author",
  31. title: "div.tileListTtl__txt",
  32. rate: "span.c_icon_priceStatus",
  33. price: "p.c_txt_price",
  34. button_parent: "div.pageNation__item",
  35. }
  36. : {
  37. lists: "ul.basket-list-tile > li.basket-listItem-tile",
  38. genre: "span.c_icon_genre",
  39. author: "p.basket-circle-tile",
  40. title: "b.basket-name-tile",
  41. rate: "span.c_icon_priceStatus",
  42. price: "p.c_txt_price",
  43. button_parent: "div.basket-btnAreaCol1",
  44. };
  45.  
  46. const checker = (liqs) => {
  47. const auhtor = liqs(querys.author).innerText.trim();
  48. const title = liqs(querys.title).innerText;
  49. if (liqs(querys.rate) === null) return true;
  50. // checking
  51. return [
  52. check_rate_price(liqs, querys),
  53. ignore_querys.some((query) => liqs(query) != null),
  54. ignore_genres.includes(liqs(querys.genre).innerText),
  55. ignore_authors.includes(auhtor),
  56. ignore_titles.some((ignore) => title.includes(ignore)),
  57. ].some((b) => b);
  58. };