// ==UserScript==
// @name           Amazon personal filter
// @namespace      curipha
// @description    Obscure annoying contents from search result and best sellers
// @include        https://www.amazon.co.jp/*
// @exclude        https://www.amazon.co.jp/ap/*
// @exclude        https://www.amazon.co.jp/mn/*
// @exclude        https://www.amazon.co.jp/clouddrive*
// @version        0.1.9
// @grant          none
// @noframes
// ==/UserScript==

(function() {
  'use strict';

  const block = [
    '無料', '期間限定', '見本',
    '(試し?|ためし|立ち?)読', 'お(試|ため)し', 'スターター', 'STARTER', 'ダイジェスト', '分冊', '単話', '(話|ばら)売り',
    '雑誌', 'Web版', '未分類',
    '([^0-9０-９][0０]|創刊)号', '([Vv]ol|VOL)[. ．　]*[0０]([^0-9０-９]|$)',

    // Rubbish label
    'プチ(キス|デザ|ララ)', 'ハーレクイン', 'セキララ文庫', 'ラブきゅんコミック', '夢ちゅうこみっくす', 'いけない愛恋',
    '(ラブドキッ。|コミック)Bookmark！', '女の子のヒミツ', '純愛革命G!', '黒猫書房', 'モバスぺBook', 'ｽｷして\\?桃色日記', 'リア×ロマ',
    '(BL|恋愛|少女)宣言', '極上男子F!', 'Sプリ', 'ジューシーラブ', '濃蜜エクスタシー120%', 'アンプリール', '絶対恋愛Sweet',
    '家庭サスペンス', '蜜愛エスカレーション', 'コミックジンガイ', 'ペット宣言', 'COMIC維新', 'コミックHIMEクリ', '絶対領域R!',
    'BLスクリーモ', '肌恋', '恋するｿﾜﾚ', 'ｵﾔｼﾞｽﾞﾑ', 'アリアンローズコミックス', 'ロマンス宣言'
  ];

  const opacity = 0.2;
  const pattern = new RegExp('(' + block.join('|') + ')', 'u');

  const opaque = function(list_selector, item_selector, title_func) {
    const gettitle = title_func || (elem => (elem.getAttribute('title') || elem.textContent));

    return function() {
      const result = document.body.querySelectorAll(list_selector);
      for (let item of result) {
        const title = item.querySelector(item_selector);
        if (title) {
          if (pattern.test(gettitle(title).trim())) {
            item.style.opacity = opacity;
          }
          else if (item.style.opacity === opacity) {
            item.style.opacity = 1;
          }
        }
      }
    };
  };

  const mo = [];

  // Search result
  if (document.getElementById('searchTemplate')) {
    mo.push(new MutationObserver(opaque('#searchTemplate .s-result-item', 'h2')));
  }
  if (document.getElementById('mainResults')) {
    mo.push(new MutationObserver(opaque('#mainResults [id^="result_"]', 'h3 .lrg')));
  }

  // Best sellers
  if (document.getElementById('zg_col1')) {
    mo.push(new MutationObserver(opaque('#zg_col1 .zg_item_compact', '.p13n-sc-truncated')));
  }


  mo.map(function(m) { m.observe(document.body, { childList: true, subtree: true }); });
})();

@@ -1127,16 +1127,83 @@
 '%E3%83%AD%E3%83%9E%E3%83%B3%E3%82%B9%E5%AE%A3%E8%A8%80'
+, '%E3%83%A2%E3%83%90%E3%82%B9%E3%83%9ABOOK', '%E3%82%AB%E3%83%AF%E3%82%A4%E3%82%B9%E3%82%AE%EF%BC%81',%0A    '%E3%83%94%E3%83%BC%E3%83%81%E3%83%94%E3%83%B3%E3%82%AF%E3%82%B3%E3%83%9F%E3%83%83%E3%82%AF%E3%82%B9', '%E3%83%95%E3%82%A7%E3%82%A2%E3%83%9C%E3%83%BC%E3%82%A4%E3%82%B3%E3%83%9F%E3%83%83%E3%82%AF%E3%82%B9', '%E9%BB%92%E3%81%B2%E3%82%81%E3%82%B3%E3%83%9F%E3%83%83%E3%82%AF'
 %0A  %5D;%0A%0A 

Update block list