Greasy Fork

Greasy Fork is available in English.

Amazonを基点に好みに合う漫画を探しやすくする

Amazonの本の詳細画面に書名や著者名で類似漫画検索、Web漫画アンテナ、試し読み、Calilを検索するリンクを追加します

当前为 2018-04-23 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Amazonを基点に好みに合う漫画を探しやすくする
// @description  Amazonの本の詳細画面に書名や著者名で類似漫画検索、Web漫画アンテナ、試し読み、Calilを検索するリンクを追加します
// @version      0.1
// @match  *://ruijianime.com/comic/ruiji/ruiji.php?title=*
// @match  *://ruijianime.com/comic/keyword/*
// @match  *://www.amazon.co.jp/*
// @match  *://webcomics.jp/*
// @grant none
// @namespace http://greasyfork.icu/users/181558
// ==/UserScript==

(function() {

  var calilpref = localStorage.getItem("calilpref") || "tokyo";
  var webmangaantena = '<a href="http://webcomics.jp/search?q=***">Web漫画アンテナ</a>';
  var webmangaantenasakusha = '<a href="http://webcomics.jp/search?q=***">Web漫画アンテナ</a>';
  var tameshiyomi = '<a href="https://duckduckgo.com/?q=!ducky+***%20%E8%A9%A6%E3%81%97%E8%AA%AD%E3%81%BF%20-dokidokivisual.com%20-intitle:%E3%81%BE%E3%81%A8%E3%82%81">試し読み</a>';
  var ruijimanga = '<a href="http://ruijianime.com/comic/ruiji/ruiji.php?title=***">類似漫画検索</a>';
  var caariru = '<a href="https://calil.jp/local/search?csid=' + calilpref + '&q=***">Calil</a>';

  //Shift+LでCalil都道府県変更
  document.addEventListener("keydown", function(e) {
      if (/input|textarea/i.test(e.target.tagName) || location.href.indexOf("amazon") == -1) return;
      if (e.shiftKey && String.fromCharCode(e.which).toLowerCase() == "l") {
        calilpref = window.prompt("calil検索する図書館の都道府県名を入力してください(例:tokyo)\r\n(参照)https://calil.jp/local/", calilpref) || "tokyo";
        localStorage.setItem("calilpref", calilpref);
        location.reload();
      }
    },
    false);

  addLinks();
  if (location.href.match(/webcomics|ruijianime/)) document.addEventListener("AutoPagerize_DOMNodeInserted", addLinks);
  return;

  //実際にリンクを付ける
  function addLinks() {

    //前回つけたリンクがあれば除去する
    var ele = eleget("//span[@class='ruijiSc']");
    for (var i = ele.snapshotLength; i--;) {
      ele.snapshotItem(i).parentNode.removeChild(ele.snapshotItem(i));
    }

    if (location.href.indexOf("webcomics") != -1) {
      ele2links('//div[@class="entry-title"]/a', "", "", ruijimanga);
      ele2links('//div[@class="entry-title"]/a', "", "", tameshiyomi);
      ele2links('//div[@class="comic-title"]/h2/a', "", "", tameshiyomi);
      ele2links('//div[@class="comic-title"]/h2/a', "", "", ruijimanga);
      ele2links("//div[@class='comic-author']", "", "", webmangaantenasakusha, "", "作者: ")
    }

    if (location.href.indexOf("ruiji") != -1) {
      ele2links("//div[@class='origin_one']/h2/a", "", "", webmangaantena);
      ele2links("//div[@class='origin_one']/h2/a", "", "", tameshiyomi);
      ele2links("//div[@class='sm_one']/h2/a", "", "", webmangaantena);
      ele2links("//div[@class='sm_one']/h2/a", "", "", tameshiyomi);
      ele2links("//div[@class='sm_one']/h2/a", "", "", ruijimanga); // ,"float: right;background-color:#ffffff;"
      ele2links('//p[@class="date ruiji_date"]/span[@class="no_matched"]', "", "", webmangaantenasakusha, "");
      ele2links('//p[@class="date ruiji_date"]/span[@class="matched"]', "", "", webmangaantenasakusha, "");
      ele2links('//p[@class="date ruiji_date"]/a', "", "", webmangaantenasakusha, "");
      ele2links("//div[@id='wrap']/article/div[@class='sm_one_tag_search easy_tag']/h2/a", "", "", webmangaantena);
      ele2links("//div[@id='wrap']/article/div[@class='sm_one_tag_search easy_tag']/h2/a", "", "", tameshiyomi);
      ele2links("//div[@id='wrap']/article/div[@class='sm_one_tag_search easy_tag']/h2/a", "", "", ruijimanga); //, "float: right;background-color:#ffffff;"
    }

    if (location.href.indexOf("amazon") != -1) {
      /*      var cate = eleget0('//select[@id="searchDropdownBox"]');
            if (cate.value == "search-alias=digital-text" || cate.value == "search-alias=stripbooks") { //カテゴリが本かkindleなら
      */
      var cate = eleget0('//span[@class="nav-a-content"]').innerText;
      if (cate == "本" || cate == "Kindleストア") { //カテゴリが本かkindleなら
        var amagen =
          eleget0("//div[@id='wayfinding-breadcrumbs_feature_div']/ul").innerText +
          eleget0("//span[@id='productTitle']").innerText +
          eleget0("//span[@id='ebooksProductTitle']").innerText +
          eleget0('//span[@class="a-size-medium a-color-secondary a-text-normal"]').innerText;
        if (amagen) {
          if (amagen.indexOf("コミック") != -1) {
            ele2links("//span[@id='productTitle']", " ", "comic", webmangaantena);
            ele2links("//span[@id='productTitle']", " ", "comic", ruijimanga);
            ele2links("//span[@id='productTitle']", " ", "comic", tameshiyomi);
            ele2links("//span[@id='ebooksProductTitle']", " ", "comic", webmangaantena);
            ele2links("//span[@id='ebooksProductTitle']", " ", "comic", ruijimanga);
            ele2links("//span[@id='ebooksProductTitle']", " ", "comic", tameshiyomi);
            ele2links('//span[@class="author notFaded"]/span/a[@class="a-link-normal contributorNameID"]', "", "comic", webmangaantena, "");
            ele2links('//span[@class="author notFaded"]/a[@class="a-link-normal"]', "", "comic", webmangaantenasakusha, "")
            ele2links("//span[@id='ebooksProductTitle']", " ", "comic", caariru);
            ele2links("//span[@id='productTitle']", " ", "comic", caariru);
          } else {
            ele2links("//span[@id='ebooksProductTitle']", " ", "", caariru);
            ele2links("//span[@id='productTitle']", " ", "", caariru);
          }
          ele2links('//span[@class="author notFaded"]/span/a[@class="a-link-normal contributorNameID"]', "", "calilAuthor", caariru, "");
          ele2links('//span[@class="author notFaded"]/a[@class="a-link-normal"]', "", "calilAuthor", caariru, "");

          // 著者名の下にも出版社名を書き写す
          var ele = eleget0("//li[(b/text()='出版社:')]");
          var choshanoshita = eleget0('//div[@id="bylineInfo"]');
          var pub = document.createElement("div");
          if (pub && ele) {
            pub.innerHTML = ele.innerHTML.replace(/\<b\>.*\<\/b\>/, "").replace(/\(.*\)/, "");
            choshanoshita.appendChild(pub);
          }
        }
      }
    }

    // 「新しいタブで開く」指定を外す
    var ele = eleget('//a[@target="_blank"]');
    for (var i = ele.snapshotLength; i--;) ele.snapshotItem(i).removeAttribute("target");
    return;
  }

  function eleget0(xpath) {
    var ele = document.evaluate(xpath, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
    return ele.snapshotLength > 0 ? ele.snapshotItem(0) : "";
  }

  function eleget(xpath) {
    return document.evaluate(xpath, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  }

  function ele2links(xpath, cutchar1, cutchar2, url, styleadd, cutchar3) {
    styleadd = styleadd === undefined ? "float: right;" : styleadd;
    var ele = eleget(xpath);

    for (var i = ele.snapshotLength; i--;) {
      var text = ele.snapshotItem(i).innerText;
      if (cutchar3 != "")
        if (text.indexOf(cutchar3) != -1) text = text.substr(text.indexOf(cutchar3) + cutchar3.length);
      if (cutchar1 != "") {
        var splitPos = text.search(cutchar2 == "comic" ? /-|-|―|~|:|:|\(|(| \d| \d|(\s| )([0-9]|[0-9])/ : /―|~|\(|(/);
        if (splitPos != -1) text = text.substr(0, splitPos);
      }

      if (url == ruijimanga) text = text.replace("!", "!").replace("?", "?");

      if (url == caariru) text = text.replace(/[\s :]/g, "");
      //    if (cutchar2=="calilAuthor"){ text=text.replace(/[\s :]/g,"");}
      //    if (cutchar2=="calilAuthor"){ text=text.replace(/\s(?=[^ -~。-゚\t])/,"");}
      text = text.trim();
      var link = document.createElement("span");
      var url2 = url.replace("***", text);
      var bgcol = "background-color:#c9e9ff;";
      link.setAttribute("style", "font-size:15px; font-weight:bold; margin:2px;  text-decoration:none; text-align:center; padding:1px 7px 1px; border-radius:5px; " + bgcol + styleadd);
      link.setAttribute("title", text);
      link.setAttribute("class", "ruijiSc");
      link.innerHTML = url2;
      ele.snapshotItem(i).parentNode.appendChild(link);
    }
    return;
  }
})();