Greasy Fork

Google検索結果に時期指定、再生時間指定、画像サイズ指定、日本語のみボタンを設置する

画面解像度が高い人向き ニコ動・ヤフオク・ヨドバシ検索結果にも並べ替えボタンを設置 (実験的:Google検索結果にGoogle NewsやTwitter検索へのRSSリンクを追加)

当前为 2021-07-25 提交的版本,查看 最新版本

// ==UserScript==
// @name        Google検索結果に時期指定、再生時間指定、画像サイズ指定、日本語のみボタンを設置する
// @description 画面解像度が高い人向き ニコ動・ヤフオク・ヨドバシ検索結果にも並べ替えボタンを設置 (実験的:Google検索結果にGoogle NewsやTwitter検索へのRSSリンクを追加)
// @include     *://www.google.tld/search?*
// @include     *://www.nicovideo.jp/search/*
// @include     *://www.nicovideo.jp/tag/*
// @include     *://www.nicovideo.jp/mylist_search/*
// @include     *://www.nicovideo.jp/mylist/*
// @match       https://www.nicovideo.jp/user/*/video*
// @include     *://auctions.yahoo.co.jp/search/*
// @include     *://auctions.yahoo.co.jp/category/list/*
// @match       *://www.ebay.com/sch/*
// @match       *://www.yodobashi.com/*
// @match       https://duckduckgo.com/?q=*
// @match     https://togetter.com/search?t=q&q=*
// @version     0.7.16
// @grant       none
// @run-at document-idle
// @namespace https://greasyfork.org/users/181558
// ==/UserScript==

(function() {

  //  const NITTER_INSTANCES = ["nitter.net","nitter.42l.fr","nitter.pussthecat.org","nitter.nixnet.services","nitter.tedomum.net","nitter.fdn.fr","nitter.kavin.rocks","tweet.lambda.dance","nitter.cc","nitter.unixfox.eu","nitter.domain.glass","nitter.himiko.cloud","nitter.eu","nitter.namazso.eu","nitter.mastodont.cat","nitter.mailstation.de","nitter.actionsack.com","nitter.cattube.org","birdsite.xanny.family","nitter.40two.app","nitter.skrep.in","nitter.hu","nitter.database.red"]; // 使うnitterのインスタンス(https://github.com/zedeus/nitter/wiki/Instances)
  const NITTER_INSTANCES = ["nitter.42l.fr", "nitter.pussthecat.org", "nitter.nixnet.services", "nitter.tedomum.net", "nitter.fdn.fr", "nitter.kavin.rocks", "tweet.lambda.dance", "nitter.cc", "nitter.unixfox.eu", "nitter.himiko.cloud", "nitter.namazso.eu", "nitter.mastodont.cat", "nitter.mailstation.de", "nitter.actionsack.com", "nitter.cattube.org", "birdsite.xanny.family", "nitter.skrep.in", "nitter.database.red"]; // 使うnitterのインスタンス(https://github.com/zedeus/nitter/wiki/Instances)
  const NITTER_INSTANCE = NITTER_INSTANCES[Math.floor(Math.random() * (NITTER_INSTANCES.length))];

  if (location.href.indexOf('https://togetter.com/search?t=q&q=') !== -1) {
    addLink("togetter", '//div[@class="search_input_box"]', "none", " ", "関連度高", "", /\&sort=.*/, "&sort=relation");
    addLink("togetter", '//div[@class="search_input_box"]', "none", " ", "ビュー多", "", /\&sort=.*/, "&sort=view_count");
    addLink("togetter", '//div[@class="search_input_box"]', "none", "|", "ビュー少", "", /\&sort=.*/, "&sort=view_count_asc");
    addLink("togetter", '//div[@class="search_input_box"]', "none", " ", "新しい", "", /\&sort=.*/, "&sort=created_at");
    addLink("togetter", '//div[@class="search_input_box"]', "none", "|", "古い", "", /\&sort=.*/, "&sort=created_at_asc");
    return;
  }
  var p = eleget0('//button[@aria-label="Google 検索"]|//input[@name="q" and @aria-label="Search"]');
  if (p) {
    var e = document.createElement("div");
    e.id = "gkbPanel";
    e.style = "position:absolute;top:0.7em;left:860px; z-index:330;line-height:1.3em;";
    document.body.appendChild(e);
    addLink("google", "//div[@id='gkbPanel']", "none", "", "全て", "|", /&tbs=qdr(%3A|:)[hdwmy]\d*|.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov|&lr=lang_en|&lr=lang_ja/, "");
    addLink("google", "//div[@id='gkbPanel']", "", "", "1時間以内", "|", /&tbs=qdr(%3A|:)[hdwmy]\d*/, "&tbs=qdr:h1");
    addLink("google", "//div[@id='gkbPanel']", "", "", "24時間以内", "|", /&tbs=qdr(%3A|:)[hdwmy]\d*/, "&tbs=qdr:d1");
    addLink("google", "//div[@id='gkbPanel']", "", "", "1週間以内", "|", /&tbs=qdr(%3A|:)[hdwmy]\d*/, "&tbs=qdr:w1");
    addLink("google", "//div[@id='gkbPanel']", "", "", "1ヶ月以内", "|", /&tbs=qdr(%3A|:)[hdwmy]\d*/, "&tbs=qdr:m1");
    addLink("google", "//div[@id='gkbPanel']", "", "", "1年以内", "<DIV></DIV>", /&tbs=qdr(%3A|:)[hdwmy]\d*/, "&tbs=qdr:y1");
    addLink("google", "//div[@id='gkbPanel']", "&tbm=vid", "", "動画", "|", /&tbs=qdr(%3A|:)[hdwmy]\d*/, "");
    addLink("google", "//div[@id='gkbPanel']", "&tbm=vid", "", "4分未満", "|", /&tbs=dur:[sml]/, "&tbs=dur:s");
    addLink("google", "//div[@id='gkbPanel']", "&tbm=vid", "", "4~20分", "|", /&tbs=dur:[sml]/, "&tbs=dur:m");
    addLink("google", "//div[@id='gkbPanel']", "&tbm=vid", "", "20分以上", " <span id='gkbPanelVideo'><span>", /&tbs=dur:[sml]/, "&tbs=dur:l");
    //    addLink2(/^https?:\/\/www\.google\..*\/search\?/, "//div[@id='gkbPanel']", "", "", "YouTube", "|", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://www.youtube.com/results?search_query=***");
    addLink2(/www\.google\./, "//div[@id='gkbPanel']", "", "", "YouTube", "|", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://www.youtube.com/results?search_query=***");
    addLink2(/www\.google\./, "//div[@id='gkbPanel']", "", "", "ニコニコ動画", " <DIV></DIV>", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://www.nicovideo.jp/search/***?sort=f&order=d");
    addLink("google", "//div[@id='gkbPanel']", "&tbm=isch", "", "画像", "|", /&tbs=isz:[iml]/, "");
    addLink("google", "//div[@id='gkbPanel']", "&tbm=isch", "", "アイコンサイズ", "|", /&tbs=isz:[iml]/, "&tbs=isz:i");
    addLink("google", "//div[@id='gkbPanel']", "&tbm=isch", "", "中", "|", /&tbs=isz:[iml]/, "&tbs=isz:m");
    addLink("google", "//div[@id='gkbPanel']", "&tbm=isch", "", "大", "|", /&tbs=isz:[iml]/, "&tbs=isz:l");
    addLink2(/www\.google\./, "//div[@id='gkbPanel']", "", "", "Pinterest", "|", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://www.pinterest.jp/search/pins/?q=***&rs=typed");
    addLink2(/www\.google\./, "//div[@id='gkbPanel']", "", "", "twitter", " <span id='gkbPanelImage'><span>", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://twitter.com/search?q=***%20(filter:images OR filter:videos)&src=typd&f=live&vertical=default");
    addLink("google", "//div[@id='gkbPanel']", "", "", "日本語のみ", "|", /&lr=lang_en/, "&lr=lang_ja");
    addLink("google", "//div[@id='gkbPanel']", "", "", "英語のみ", "<div></div>", /&lr=lang_ja/, "&lr=lang_en");
    addLink2(/www\.google\./, "//div[@id='gkbPanel']", "", "<span id='gkbPanelLast' style='position:absolute'></span>", "reddit", "|", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://www.google.co.jp/search?q=***+site:reddit.com", "notJP");
    addLink2(/www\.google\./, "//div[@id='gkbPanel']", "", "", "Quora", " ", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://www.google.co.jp/search?q=***+site:quora.com", "notJP");
    //addLink2(/www\.google\./, "//div[@id='gkbPanel']", "", "", "PubMed", "|", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://pubmed.ncbi.nlm.nih.gov/?term=***", "notJP");
    addLink2(/www\.google\./, "//div[@id='gkbPanel']", "", "", "PubMed", "|", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://www.google.co.jp/search?q=***+site:pubmed.ncbi.nlm.nih.gov", "notJP");
    //    addLink2(/www\.google\./, "//div[@id='gkbPanel']", "", "", "Scholar", " ", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://scholar.google.co.jp/scholar?hl=ja&as_sdt=0%2C5&q=***&btnG=");
    addLink2(/www\.google\./, "//div[@id='gkbPanel']", "", "", "Scholar", " ", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://scholar.google.co.jp/scholar?q=***");
    addLink2(/www\.google\./, "//div[@id='gkbPanel']", "", "", "Trends", " ", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://trends.google.co.jp/trends/explore?date=all&q=***");
    addLink2(/^https?:\/\/www\.google\..*\/search\?/, "//div[@id='gkbPanel']", "", "", "twitter", "|", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*/, "https://twitter.com/search?q=***&src=typd&f=live&vertical=default");
    //    addLink2(/^https?:\/\/www\.google\..*\/search\?/, "//div[@id='gkbPanel']", "", "", "togetter", " <span id='gkbPanelSite'></span><div></div><span id='gkbPanelRSS'></span>", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*/, "https://togetter.com/search?t=q&q=***"); // 途中で改行する
    addLink2(/^https?:\/\/www\.google\..*\/search\?/, "//div[@id='gkbPanel']", "", "", "togetter", " <span id='gkbPanelSite'></span><span id='gkbPanelRSS'>", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*/, "https://togetter.com/search?t=q&q=***");
  }

  var p = eleget0('//input[@name="q" and @tabindex="1" and @id="search_form_input"]');
  if (p) {
    var e = document.createElement("div");
    e.id = "ddgPanel";
    e.style = "position:absolute;top:0.7em;left:760px; z-index:330;line-height:1.3em;";
    document.body.appendChild(e);
    addLink("duckduckgo", "//div[@id='ddgPanel']", "none", "", "全て", "|", /(&iaf=.*)|(&iax=.*)|(&iar=.*)|(&ia=.*)|(&df=[hdwmy])|.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/g, "");
    addLink("duckduckgo", "//div[@id='ddgPanel']", "", "", "24時間以内", "|", /(&iaf=.*)|(&iax=.*)|(&iar=.*)|(&ia=.*)|(&df=[hdwmy])/g, "&df=d");
    addLink("duckduckgo", "//div[@id='ddgPanel']", "", "", "1週間以内", "|", /(&iaf=.*)|(&iax=.*)|(&iar=.*)|(&ia=.*)|(&df=[hdwmy])/g, "&df=w");
    addLink("duckduckgo", "//div[@id='ddgPanel']", "", "", "1ヶ月以内", "|", /(&iaf=.*)|(&iax=.*)|(&iar=.*)|(&ia=.*)|(&df=[hdwmy])/g, "&df=m");
    addLink("duckduckgo", "//div[@id='ddgPanel']", "", "", "1年以内", "<DIV></DIV>", /(&iax=.*)|(&iar=.*)|(&ia=.*)|(&df=[hdwmy])/g, "&df=y");
    addLink("duckduckgo", "//div[@id='ddgPanel']", "", "", "動画", "|", /(&iaf=.*)|(&iax=.*)|(&iar=.*)|(&ia=.*)|(&df=[hdwmy])/g, "&iar=videos&iax=videos&ia=videos");
    addLink("duckduckgo", "//div[@id='ddgPanel']", "", "", "短い", "|", /(&iaf=.*)|(&iax=.*)|(&iar=.*)|(&ia=.*)|(&df=[hdwmy])/g, "&iar=videos&iax=videos&ia=videos&iaf=videoDuration%3Ashort");
    addLink("duckduckgo", "//div[@id='ddgPanel']", "", "", "中", "|", /(&iaf=.*)|(&iax=.*)|(&iar=.*)|(&ia=.*)|(&df=[hdwmy])/g, "&iar=videos&iax=videos&ia=videos&iaf=videoDuration%3Amedium");
    addLink("duckduckgo", "//div[@id='ddgPanel']", "", "", "長い", " <span id='ddgPanelVideo'><span>", /(&iaf=.*)|(&iax=.*)|(&iar=.*)|(&ia=.*)|(&df=[hdwmy])/g, "&iar=videos&iax=videos&ia=videos&iaf=videoDuration%3Along");
    addLink2(/^https:\/\/duckduckgo.com\/\?q=/, "//div[@id='ddgPanel']", "", "", "YouTube", "|", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://www.youtube.com/results?search_query=***");
    addLink2(/^https:\/\/duckduckgo.com\/\?q=/, "//div[@id='ddgPanel']", "", "", "ニコニコ動画", "<DIV></DIV>", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://www.nicovideo.jp/search/***?sort=f&order=d");
    addLink("duckduckgo", "//div[@id='ddgPanel']", "", "", "画像", "|", /(&iaf=.*)|(&iax=.*)|(&iar=.*)|(&ia=.*)|(&df=[hdwmy])/g, "&iax=images&ia=images");
    addLink("duckduckgo", "//div[@id='ddgPanel']", "", "", "小", "|", /(&iaf=.*)|(&iax=.*)|(&iar=.*)|(&ia=.*)|(&df=[hdwmy])/g, "&iax=images&ia=images&iaf=size%3ASmall");
    addLink("duckduckgo", "//div[@id='ddgPanel']", "", "", "中", "|", /(&iaf=.*)|(&iax=.*)|(&iar=.*)|(&ia=.*)|(&df=[hdwmy])/g, "&iax=images&ia=images&iaf=size%3AMedium");
    addLink("duckduckgo", "//div[@id='ddgPanel']", "", "", "大", "|", /(&iaf=.*)|(&iax=.*)|(&iar=.*)|(&ia=.*)|(&df=[hdwmy])/g, "&iax=images&ia=images&iaf=size%3ALarge");
    addLink("duckduckgo", "//div[@id='ddgPanel']", "", "", "壁紙", "|", /(&iaf=.*)|(&iax=.*)|(&iar=.*)|(&ia=.*)|(&df=[hdwmy])/g, "&iax=images&ia=images&iaf=size%3AWallpaper");
    addLink2(/^https:\/\/duckduckgo.com\/\?q=/, "//div[@id='ddgPanel']", "", "", "Pinterest", "|", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://www.pinterest.jp/search/pins/?q=***&rs=typed");
    addLink2(/^https:\/\/duckduckgo.com\/\?q=/, "//div[@id='ddgPanel']", "", "", "twitter", " <span id='ddgPanelImage'><span><div></div>", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://twitter.com/search?q=***%20(filter:images OR filter:videos)&src=typd&f=live&vertical=default");
    addLink2(/^https:\/\/duckduckgo.com\/\?q=/, "//div[@id='ddgPanel']", "", "", "reddit", "|", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://duckduckgo.com/?q=***+site:reddit.com", "notJP");
    addLink2(/^https:\/\/duckduckgo.com\/\?q=/, "//div[@id='ddgPanel']", "", "", "Quora", " ", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://duckduckgo.com/?q=***+site:quora.com", "notJP");
    //addLink2(/^https:\/\/duckduckgo.com\/\?q=/, "//div[@id='ddgPanel']", "", "", "PubMed", "|", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://pubmed.ncbi.nlm.nih.gov/?term=***", "notJP");
    addLink2(/^https:\/\/duckduckgo.com\/\?q=/, "//div[@id='ddgPanel']", "", "", "PubMed", "|", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://duckduckgo.com/?q=***+site:pubmed.ncbi.nlm.nih.gov", "notJP");
    addLink2(/^https:\/\/duckduckgo.com\/\?q=/, "//div[@id='ddgPanel']", "", "", "Scholar", " ", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*|.site:pubmed\.ncbi\.nlm\.nih\.gov/, "https://scholar.google.co.jp/scholar?hl=ja&as_sdt=0%2C5&q=***&btnG=");
    addLink2(/^https:\/\/duckduckgo.com\/\?q=/, "//div[@id='ddgPanel']", "", "", "twitter", "|", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*/, "https://twitter.com/search?q=***&src=typd&f=live&vertical=default");
    addLink2(/^https:\/\/duckduckgo.com\/\?q=/, "//div[@id='ddgPanel']", "", "", "togetter", " <span id='ddgPanelSite'></span><span id='ddgPanelRSS'>", /.site:reddit\.com|.site:quora\.com|.site:https:\/\/www\.ted\.com\/.*/, "https://togetter.com/search?t=q&q=***");
  }

  var nicoPlace = '//div[@class="message"]|//div[@class="contentBody"]';
  var nicodeleteOpt = /[\?&]f_range=.|[\?&]l_range=.|[\?&]opt_md=.*|[\?&]start=.*|[\?&]end=.*|[\?&]ref=[^&]*|[\?&]sort=.|[\?&]order=.|[\?&]page=\d*|[\?&]track=[^&]*/g;
  addLink("nico", nicoPlace, "", "", "人気高", "|", nicodeleteOpt, "?sort=h&order=d");
  addLink("nico", nicoPlace, "", "", "お勧め", " ", nicodeleteOpt, "?sort=p&order=d");
  addLink("nico", nicoPlace, "", "", "投稿新", "|", nicodeleteOpt, "?sort=f&order=d");
  addLink("nico", nicoPlace, "", "", "投稿古", " ", nicodeleteOpt, "?sort=f&order=a");
  addLink("nico", nicoPlace, "", "", "コメ新", "|", nicodeleteOpt, "?sort=n&order=d");
  addLink("nico", nicoPlace, "", "", "コメ古", " ", nicodeleteOpt, "?sort=n&order=a");
  addLink("nico", nicoPlace, "", "", "コメ多", "|", nicodeleteOpt, "?sort=r&order=d");
  addLink("nico", nicoPlace, "", "", "コメ少", " ", nicodeleteOpt, "?sort=r&order=a");
  addLink("nico", nicoPlace, "", "", "再生多", "|", nicodeleteOpt, "?sort=v&order=d");
  addLink("nico", nicoPlace, "", "", "再生少", " ", nicodeleteOpt, "?sort=v&order=a");
  addLink("nico", nicoPlace, "", "", "マイリス多", "|", nicodeleteOpt, "?sort=m&order=d");
  addLink("nico", nicoPlace, "", "", "マイリス少", " ", nicodeleteOpt, "?sort=m&order=a");
  addLink("nico", nicoPlace, "", "", "時間長", "|", nicodeleteOpt, "?sort=l&order=d");
  addLink("nico", nicoPlace, "", "", "時間短", " ", nicodeleteOpt, "?sort=l&order=a");

  var nicodeleteOpt = /[\?&]f_range=.|[\?&]l_range=.|[\?&]opt_md=.*|[\?&]start=.*|[\?&]end=.*|[\?&]ref=[^&]*|[\?&\+]sort=.|[\?&]order=.|[\?&]page=\d*|[\?&]track=[^&]*/g;
  addLink("nicovideo.jp/mylist_search/", '//table[@id="b_message"]/tbody/tr/td[2]', "", " <BR>", "人気", " ", nicodeleteOpt, "?sort=p&order=d");
  addLink("nicovideo.jp/mylist_search/", '//table[@id="b_message"]/tbody/tr/td[2]', "", "", "動画多", "|", nicodeleteOpt, "?sort=n&order=d");
  addLink("nicovideo.jp/mylist_search/", '//table[@id="b_message"]/tbody/tr/td[2]', "", "", "動画少", " ", nicodeleteOpt, "?sort=n&order=a");
  addLink("nicovideo.jp/mylist_search/", '//table[@id="b_message"]/tbody/tr/td[2]', "", "", "更新新", " ", nicodeleteOpt, "?sort=u&order=d");
  addLink("nicovideo.jp/mylist_search/", '//table[@id="b_message"]/tbody/tr/td[2]', "", "", "適合高", " ", nicodeleteOpt, "?sort=r&order=d");
  addLink("nicovideo.jp/mylist_search/", '//table[@id="b_message"]/tbody/tr/td[2]', "", "", "作成新", "|", nicodeleteOpt, "?sort=c&order=d");
  addLink("nicovideo.jp/mylist_search/", '//table[@id="b_message"]/tbody/tr/td[2]', "", "", "作成古", " ", nicodeleteOpt, "?sort=c&order=a");
  addLink("nicovideo.jp/mylist_search/", '//table[@id="b_message"]/tbody/tr/td[2]', "", "", "フォロー多", " ", nicodeleteOpt, "?sort=f&order=d");

  setTimeout(() => {
    var nicodeleteOpt = /[\?&]f_range=.|[\?&]l_range=.|[\?&]opt_md=.*|[\?&]start=.*|[\?&]end=.*|[\?&]ref=[^&]*|\#\+sort=\d*|[\?&]order=.|[\?&]page=\d*|[\?&]track=[^&]*/g;
    var nicoPlace = '//div[@id="SYS_box_mylist_header"]/div/h1/..';
    addLink("nicovideo.jp/mylist/", nicoPlace, "", "", "登録新", "|", nicodeleteOpt, "#+sort=1");
    addLink("nicovideo.jp/mylist/", nicoPlace, "", "", "登録古", " ", nicodeleteOpt, "#+sort=0");
    //  addLink("nicovideo.jp/mylist/", nicoPlace, "", "", "タイトル↓", "|", nicodeleteOpt, "#+sort=4");
    //  addLink("nicovideo.jp/mylist/", nicoPlace, "", "", "タイトル↑", " ", nicodeleteOpt, "#+sort=5");
    addLink("nicovideo.jp/mylist/", nicoPlace, "", "", "投稿新", "|", nicodeleteOpt, "#+sort=6");
    addLink("nicovideo.jp/mylist/", nicoPlace, "", "", "投稿古", " ", nicodeleteOpt, "#+sort=7");
    addLink("nicovideo.jp/mylist/", nicoPlace, "", "", "コメ新", " ", nicodeleteOpt, "#+sort=10");
    addLink("nicovideo.jp/mylist/", nicoPlace, "", "", "コメ多", " ", nicodeleteOpt, "#+sort=12");
    addLink("nicovideo.jp/mylist/", nicoPlace, "", "", "再生多", " ", nicodeleteOpt, "#+sort=8");
    addLink("nicovideo.jp/mylist/", nicoPlace, "", "", "マイリス多", " ", nicodeleteOpt, "#+sort=14");
    addLink("nicovideo.jp/mylist/", nicoPlace, "", "", "時間長", "|", nicodeleteOpt, "#+sort=16");
    addLink("nicovideo.jp/mylist/", nicoPlace, "", "", "時間短", " ", nicodeleteOpt, "#+sort=17");
  }, 100);

  setTimeout(() => {
    var nicodeleteOpt = /[\?&].+/g; //sortKey=.+/g;
    addLink(/\/\/www\.nicovideo\.jp\/user\/\d+\/video.*/, '//button[@class="Selectbox-button"]/../..', "", "", "投稿新", "|", nicodeleteOpt, "?sortKey=registeredAt&sortOrder=desc");
    addLink(/\/\/www\.nicovideo\.jp\/user\/\d+\/video.*/, '//button[@class="Selectbox-button"]/../..', "", "", "投稿古", " ", nicodeleteOpt, "?sortKey=registeredAt&sortOrder=asc");
    addLink(/\/\/www\.nicovideo\.jp\/user\/\d+\/video.*/, '//button[@class="Selectbox-button"]/../..', "", "", "再生多", "|", nicodeleteOpt, "?sortKey=viewCount&sortOrder=desc");
    addLink(/\/\/www\.nicovideo\.jp\/user\/\d+\/video.*/, '//button[@class="Selectbox-button"]/../..', "", "", "再生少", " ", nicodeleteOpt, "?sortKey=viewCount&sortOrder=asc");
    addLink(/\/\/www\.nicovideo\.jp\/user\/\d+\/video.*/, '//button[@class="Selectbox-button"]/../..', "", "", "コメ新", " ", nicodeleteOpt, "?sortKey=lastCommentTime&sortOrder=desc");
    //addLink(/\/\/www\.nicovideo\.jp\/user\/\d+\/video.*/, '//button[@class="Selectbox-button"]/../..', "", "", "コメ新", "|", nicodeleteOpt, "?sortKey=lastCommentTime&sortOrder=desc");
    //addLink(/\/\/www\.nicovideo\.jp\/user\/\d+\/video.*/, '//button[@class="Selectbox-button"]/../..', "", "", "コメ古", " ", nicodeleteOpt, "?sortKey=lastCommentTime&sortOrder=asc");
    addLink(/\/\/www\.nicovideo\.jp\/user\/\d+\/video.*/, '//button[@class="Selectbox-button"]/../..', "", "", "コメ多", "|", nicodeleteOpt, "?sortKey=commentCount&sortOrder=desc");
    addLink(/\/\/www\.nicovideo\.jp\/user\/\d+\/video.*/, '//button[@class="Selectbox-button"]/../..', "", "", "コメ少", " ", nicodeleteOpt, "?sortKey=commentCount&sortOrder=desc");
    addLink(/\/\/www\.nicovideo\.jp\/user\/\d+\/video.*/, '//button[@class="Selectbox-button"]/../..', "", "", "マイリス多", "|", nicodeleteOpt, "?sortKey=mylistCount&sortOrder=desc");
    addLink(/\/\/www\.nicovideo\.jp\/user\/\d+\/video.*/, '//button[@class="Selectbox-button"]/../..', "", "", "マイリス少", " ", nicodeleteOpt, "?sortKey=mylistCount&sortOrder=asc");
    addLink(/\/\/www\.nicovideo\.jp\/user\/\d+\/video.*/, '//button[@class="Selectbox-button"]/../..', "", "", "時間長", "|", nicodeleteOpt, "?sortKey=duration&sortOrder=desc");
    addLink(/\/\/www\.nicovideo\.jp\/user\/\d+\/video.*/, '//button[@class="Selectbox-button"]/../..', "", "", "時間短", " ", nicodeleteOpt, "?sortKey=duration&sortOrder=desc");
  }, performance.now() * 3);

  if (location.href.indexOf("auctions.yahoo.co.jp/") !== -1) {
    var yadeleteOpt = /[\?&]s1=.*&o1=.*(?=&)|[\?&]s1=.*&o1=.*(?=$)/g;
    var pta = '//a[@class="Info__closedLink"]|//div[@class="Option"]/..';
    var ele = eleget0(pta);
    if (ele) ele.style.display = "inline";
    addLink("auctions.yahoo.co.jp/", pta, "", " ", "おすすめ", " ", yadeleteOpt, "[&?]s1=score2&o1=d");
    addLink("auctions.yahoo.co.jp/", pta, "", "", "現価安", "|", yadeleteOpt, "[&?]s1=cbids&o1=a");
    addLink("auctions.yahoo.co.jp/", pta, "", "", "現価高", " ", yadeleteOpt, "[&?]s1=cbids&o1=d");
    addLink("auctions.yahoo.co.jp/", pta, "", "", "残時短", "|", yadeleteOpt, "[&?]s1=end&o1=a");
    addLink("auctions.yahoo.co.jp/", pta, "", "", "残時長", " ", yadeleteOpt, "[&?]s1=end&o1=d");
    addLink("auctions.yahoo.co.jp/", pta, "", "", "入札少", "|", yadeleteOpt, "[&?]s1=bids&o1=d");
    addLink("auctions.yahoo.co.jp/", pta, "", "", "入札多", " ", yadeleteOpt, "[&?]s1=bids&o1=a");
    addLink("auctions.yahoo.co.jp/", pta, "", "", "即決安", "|", yadeleteOpt, "[&?]s1=bidorbuy&o1=a");
    addLink("auctions.yahoo.co.jp/", pta, "", "", "即決高", " ", yadeleteOpt, "[&?]s1=bidorbuy&o1=d");
    addLink("auctions.yahoo.co.jp/", pta, "", "", "新しい", "", yadeleteOpt, "[&?]s1=new&o1=d");
  }

  if (location.href.match(/yodobashi\.com\/.*\?.*?=/)) {
    addLink("yodobashi", '//div[@class="srcResultBoxNew"]/div/div', "", "   ", "人気", " ", /&sorttyp=\w*/, "&sorttyp=COINCIDENCE_RANKING");
    addLink("yodobashi", '//div[@class="srcResultBoxNew"]/div/div', "", "", "新着", " ", /&sorttyp=\w*/, "&sorttyp=NEW_ARRIVAL_RANKING");
    addLink("yodobashi", '//div[@class="srcResultBoxNew"]/div/div', "", "", "安い", "|", /&sorttyp=\w*/, "&sorttyp=SELL_PRICE_ASC");
    addLink("yodobashi", '//div[@class="srcResultBoxNew"]/div/div', "", "", "高い", " ", /&sorttyp=\w*/, "&sorttyp=SELL_PRICE_DESC");
    addLink("yodobashi", '//div[@class="srcResultBoxNew"]/div/div', "", "", "新発売", " ", /&sorttyp=\w*/, "&sorttyp=RELEASE_DATE_DESC");
  }
  //addLink("","" , "", "", "", " ", , "?");
  //  setTimeout(() => addAutoDiscovery(), 100);
  addAutoDiscovery();

  return;

  function addAutoDiscovery() { // Google検索結果に同じ検索ワードでGoogle NewsかTwitter検索へのRSSリンクとRSS Autodiscoveryを埋め込む
    embedAutoDiscovery('google', "//span[@id='gkbPanelRSS']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@#])/, "$1", "*** | Google ニュース", "https://news.google.com/news/rss/search/section/q/***?ned=jp&hl=ja&gl=JP")
    embedAutoDiscovery('google', "//span[@id='gkbPanelRSS']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@#])/, "$1", "*** | Google News (En)", "https://news.google.com/news/rss/search/section/q/***?ned=us&hl=en&gl=US")
    embedAutoDiscovery('google', "//span[@id='gkbPanelRSS']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@#])/, "$1", "*** | Reddit (En)", "https://www.reddit.com/search.rss?q=***&sort=new")
    embedAutoDiscovery('google', "//span[@id='gkbPanelRSS']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@#])/, "$1", "*** | 5chスレタイ検索", "https://ff5ch.syoboi.jp/?q=***&alt=rss")
    //    embedAutoDiscovery('google',"//span[@id='gkbPanelRSS']",'//input[@aria-label="検索"]|//input[@aria-label="Search"]', /(^@)/, "", "*** | TwitRSS Twitterユーザー", "https://twitrss.me/twitter_user_to_rss/?user=***")
    //    embedAutoDiscovery('google', "//span[@id='gkbPanelRSS']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@])/, "$1", "*** | Queryfeed Twitterキーワード", "https://queryfeed.net/tw?q=***")
    //    embedAutoDiscovery('google', "//span[@id='gkbPanelRSS']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@])/, "$1", "*** (filter:images OR filter:videos) | Queryfeed Twitterキーワード 画像か動画", "https://queryfeed.net/tw?q=***%20 (filter:images OR filter:videos)")
    //    embedAutoDiscovery('google',"//span[@id='gkbPanelRSS']",'//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@])/, "$1", "*** (filter:videos) | Queryfeed Twitterキーワード 動画", "https://queryfeed.net/tw?q=***%20 (filter:videos)")
    embedAutoDiscovery('google', "//span[@id='gkbPanelRSS']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@])/, "$1", "*** | Nitter Twitterキーワード", "https://" + NITTER_INSTANCE + "/search/rss?f=tweets&q=***")
    embedAutoDiscovery('google', "//span[@id='gkbPanelRSS']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@])/, "$1", "*** | Nitter Twitterキーワード 画像か動画", "https://" + NITTER_INSTANCE + "/search/rss?f=tweets&q=***+(filter:images OR filter:videos)")
    embedAutoDiscovery('google', "//span[@id='gkbPanelRSS']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@])/, "$1", "*** | Nitter Twitterキーワード 日本語ツイートのみ", "https://" + NITTER_INSTANCE + "/search/rss?f=tweets&q=***+lang:ja")
    embedAutoDiscovery('google', "//span[@id='gkbPanelRSS']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@])/, "$1", "*** | Nitter Twitterキーワード 日本語ツイートのみ 画像か動画", "https://" + NITTER_INSTANCE + "/search/rss?f=tweets&q=***+lang:ja+(filter:images OR filter:videos)")
    //    embedAutoDiscovery('google', "//span[@id='gkbPanelRSS']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /(^@)/, "from:@", "from:*** | Queryfeed Twitterユーザー名", "https://queryfeed.net/tw?q=***")
    //    embedAutoDiscovery('google', "//span[@id='gkbPanelRSS']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /(^@)/, "from:@", "from:*** (filter:images OR filter:videos) | Queryfeed Twitterユーザー 画像か動画", "https://queryfeed.net/tw?q=***%20 (filter:images OR filter:videos)")
    embedAutoDiscovery('google', "//span[@id='gkbPanelRSS']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /(^@)/, "", "*** | Nitter Twitterユーザー名", "https://" + NITTER_INSTANCE + "/***/rss")
    embedAutoDiscovery('google', "//span[@id='gkbPanelRSS']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /(^@)/, "", "*** | Nitter Twitterユーザー 画像か動画", "https://" + NITTER_INSTANCE + "/***/media/rss")
    //    embedAutoDiscovery('google', "//span[@id='gkbPanelRSS']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@])/, "$1", "*** | Queryfeed Instagram ユーザーネーム", "https://queryfeed.net/instagram?q=***");
    //    embedAutoDiscovery('google', "//span[@id='gkbPanelRSS']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@])/, "\#$1", "#*** | Queryfeed Instagram ハッシュタグ", "https://queryfeed.net/instagram?q=***");
    embedAutoDiscovery('google', "//span[@id='gkbPanelRSS']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@])/, "$1", "*** | DeviantArt (En) キーワード", "https://backend.deviantart.com/rss.xml?q=***");
    embedAutoDiscovery('google', "//span[@id='gkbPanelRSS']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@])/, "$1", "*** | CiNii 論文検索 キーワード", "https://ci.nii.ac.jp/opensearch/search?q=***&range=2&sortorder=1&start=1&count=20&format=rss");

    embedAutoDiscovery('ebay', '//div[@id="gh-ac-box2"]/input/..', '//div[@id="gh-ac-box2"]/input', /^([^@])/, "$1", "*** | eBay キーワード", "https://www.ebay.com/sch/i.html?_nkw=***&_rss=1");
    return;
  }

  function embedAutoDiscovery(site, place, wordXP, wordtermRE, replaceStr, itemName, url) {
    if (site.constructor == RegExp) {
      if (!(location.href.match(site))) return;
    } else {
      if (location.href.indexOf(site) == -1) return
    }
    //else console.log(site)
    var ele = eleget0(wordXP);
    if (!ele || !(ele.value.match(wordtermRE))) return;
    var word = ele.value;
    if (itemName.match(/\(En\)|ユーザー名|ユーザーネーム|DeviantArt/) && !(word.match(/^[\x20-\x7e]*$/))) return; // google news en や、ユーザー検索なら半角英数以外を含んだらやらない
    if (itemName.match("日本語ツイートのみ") && !(word.match(/^[\x20-\x7e]*$/))) return;
    //console.log(ele, word)
    var link = document.body.parentNode.insertBefore(document.createElement("link"), document.body);
    link.title = itemName.replace("***", word);
    link.rel = "alternate"
    link.type = "application/rss+xml"
    link.href = url.replace("***", encodeURIComponent(word.replace(wordtermRE, replaceStr)));

    var place = eleget0(place);

    if (!place) return;
    var url = link.href;
    var ele = place.appendChild(document.createElement('span'));
    ele.setAttribute("style", "font-weight:normal;");
    let rssICON = '<img style="vertical-align: bottom;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABdUlEQVQ4ja3TL2iWURTH8c+VJwwxjjeMBQUxGRdkGESHBothw3CDwfTaFiwDm1MQViyiQRG8iviCYBAGKg60GEwm/2AZQ8bixIXxXsNzH717dSLiKYdzOHzv+Z17TsjJcdzEOBrs0VrnOxtWfhsb6IecfMBB/2Yfm/IyPMXbAjuKyb8A9JrSNqyE6BrkBKZxEWf+AGhCTr5iL+7hDt6FaL2ryMkM7mLiN4CtkJNvGKuSQ7zBEgYhkpNJPMehUUA96VuYw3XsxyMs52Q8RKs4gbXRFmrApxANQjSPA7iMGaxUkHOjgFrCSzzEkxDbl3Iyiwd4gVNFzmM/B7tDwjHcwOecLOREiAa4gpOYLXVLu0kYYoBnWMRCyV/FF8yX+BVWa0C3ordDNBei09qlupSTiRBt4T6O5KQX4g/IL4DNqpvNMpdO6+tSe7jE77uuG+1hwIWygWOV3rM52af9FTifkylMlXj7vxxTXzv9np3nvJt157yO/nf0A3GlIF+BggAAAABJRU5ErkJggg==">';
    ele.innerHTML = " <a href=" + link.href + " rel=\"noopener noreferrer nofollow\" title='" + link.title + "'>" + rssICON + "</a>";
    return;
  }q

  function addLink(site, placexpath, terms, beforetitle, title, append, deleteoption, option) {
    if (site.constructor == RegExp) {
      if (!(location.href.match(site))) { return; }
    } else {
      if (location.href.indexOf(site) == -1) return
    }
    var place = eleget0(placexpath);
    if (!place) return;

    var url = window.location.href;
    if (terms !== "") url = url.replace(/&tbm=.*/, "");
    if (terms !== "none") url = url + terms;
    url = url.replace(deleteoption, '');

    option = option.replace("[&?]", (url.indexOf("?") == -1) ? "?" : "&");
    url += option;

    var ele = document.createElement('span');
    ele.setAttribute("style", "font-weight:normal;");
    ele.innerHTML = beforetitle + "<a referrerpolicy='no-referrer' rel='nofollow noopener noreferrer' href='" + url + "'>" + title + "</a>" + append;
    place.appendChild(ele);
    return;
  }

  function addLink2(site, placexpath, terms, beforetitle, title, append, deleteoption, option, language = "all") {
    if (site.test(location.href) === false) return;
    var place = eleget0(placexpath);
    if (!place) return;

    let searchWord = eleget0('//input[@aria-label="検索"]|//input[@aria-label="Search"]|//input[@type="text" and @name="q" and @id="search_form_input" and @autocorrect="off"]|//input[@name="q" and @aria-label="Search"]').value;
    if (language == "notJP" && !(searchWord.match(/^[\x20-\x7e]*$/))) return; // 半角英数以外を含んだらやらない
    searchWord = searchWord.replace(deleteoption, '');

    var ele = place.appendChild(document.createElement('span'));
    ele.innerHTML = beforetitle + "<a referrerpolicy='no-referrer' rel='nofollow noopener noreferrer' href=\"" + option.replace('***', encodeURIComponent(searchWord).replace(deleteoption, "")) + "\"" + " >" + title + "</a>" + append;
  }

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

  function xa(xpath, node = document) {
    if (!xpath) return [];
    if (xpath.match(/^\/\//)) {
      try {
        var array = [];
        var ele = document.evaluate("." + xpath, node, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
        for (var i = 0; i < ele.snapshotLength; i++) array[i] = ele.snapshotItem(i);
        return array;
      } catch (e) { return []; }
    } else {
      return $(xpath);
    }
  }

})();