Greasy Fork

Greasy Fork is available in English.

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

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

当前为 2020-05-30 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==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/*
// @include     *://auctions.yahoo.co.jp/search/*
// @include     *://auctions.yahoo.co.jp/category/list/*
// @match       *://www.ebay.com/sch/*
// @match       *://www.yodobashi.com/*
// @version     0.7.3
// @grant       none
// @namespace http://greasyfork.icu/users/181558
// ==/UserScript==

(function() {
  //let googleAP="//div[@id='hdtbSum']|/HTML/BODY/DIV[2]/C-WIZ[1]/DIV[1]/DIV[1]/DIV[1]";
  addLink("google", "//div[@id='hdtbSum']", "none", "", "全て", "|", /&tbs=qdr:[hdwmy]/, "");
  addLink("google", "//div[@id='hdtbSum']", "", "", "1時間以内", "|", /&tbs=qdr:[hdwmy]/, "&tbs=qdr:h");
  addLink("google", "//div[@id='hdtbSum']", "", "", "24時間以内", "|", /&tbs=qdr:[hdwmy]/, "&tbs=qdr:d");
  addLink("google", "//div[@id='hdtbSum']", "", "", "1週間以内", "|", /&tbs=qdr:[hdwmy]/, "&tbs=qdr:w");
  addLink("google", "//div[@id='hdtbSum']", "", "", "1ヶ月以内", "|", /&tbs=qdr:[hdwmy]/, "&tbs=qdr:m");
  addLink("google", "//div[@id='hdtbSum']", "", "", "1年以内", "<DIV></DIV>", /&tbs=qdr:[hdwmy]/, "&tbs=qdr:y");
  addLink("google", "//div[@id='hdtbSum']", "&tbm=vid", "", "動画", "|", /&tbs=qdr:[hdwmy]/, "");
  addLink("google", "//div[@id='hdtbSum']", "&tbm=vid", "", "4分未満", "|", /&tbs=dur:[sml]/, "&tbs=dur:s");
  addLink("google", "//div[@id='hdtbSum']", "&tbm=vid", "", "4~20分", "|", /&tbs=dur:[sml]/, "&tbs=dur:m");
  addLink("google", "//div[@id='hdtbSum']", "&tbm=vid", "", "20分以上", "<DIV></DIV>", /&tbs=dur:[sml]/, "&tbs=dur:l");
  addLink("google", "//div[@id='hdtbSum']", "&tbm=isch", "", "画像", "|", /&tbs=isz:[iml]/, "");
  addLink("google", "//div[@id='hdtbSum']", "&tbm=isch", "", "アイコンサイズ", "|", /&tbs=isz:[iml]/, "&tbs=isz:i");
  addLink("google", "//div[@id='hdtbSum']", "&tbm=isch", "", "中", "|", /&tbs=isz:[iml]/, "&tbs=isz:m");
  addLink("google", "//div[@id='hdtbSum']", "&tbm=isch", "", "大", " ", /&tbs=isz:[iml]/, "&tbs=isz:l");
  addLink("google", "//div[@id='hdtbSum']", "", "", "日本語のみ", "", /&lr=lang_ja/, "&lr=lang_ja");

  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);

  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.textAlign = "right";
    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", '//span[@class="srcResultsInfoInnerText"]', "", "   ", "人気", " ", /&sorttyp=\w*/, "&sorttyp=COINCIDENCE_RANKING");
    addLink("yodobashi", '//span[@class="srcResultsInfoInnerText"]', "", "", "新着", " ", /&sorttyp=\w*/, "&sorttyp=NEW_ARRIVAL_RANKING");
    addLink("yodobashi", '//span[@class="srcResultsInfoInnerText"]', "", "", "安い", "|", /&sorttyp=\w*/, "&sorttyp=SELL_PRICE_ASC");
    addLink("yodobashi", '//span[@class="srcResultsInfoInnerText"]', "", "", "高い", " ", /&sorttyp=\w*/, "&sorttyp=SELL_PRICE_DESC");
    addLink("yodobashi", '//span[@class="srcResultsInfoInnerText"]', "", "", "新発売", " ", /&sorttyp=\w*/, "&sorttyp=RELEASE_DATE_DESC");
  }
  //addLink("","" , "", "", "", " ", , "?");
  setTimeout(() => addAutoDiscovery(), 100);
  //  addAutoDiscovery();

  return;

  function addAutoDiscovery() { // Google検索結果に同じ検索ワードでGoogle NewsかTwitter検索へのRSSリンクとRSS Autodiscoveryを埋め込む
    embedAutoDiscovery('google', "//div[@id='hdtbSum']", '//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', "//div[@id='hdtbSum']", '//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', "//div[@id='hdtbSum']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@#])/, "$1", "*** | Reddit (En)", "https://www.reddit.com/search.rss?q=***&sort=new")
    //    embedAutoDiscovery('google',"//div[@id='hdtbSum']",'//input[@aria-label="検索"]|//input[@aria-label="Search"]', /(^@)/, "", "*** | TwitRSS Twitterユーザー", "https://twitrss.me/twitter_user_to_rss/?user=***")
    embedAutoDiscovery('google', "//div[@id='hdtbSum']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@])/, "$1", "*** | Queryfeed Twitterキーワード", "https://queryfeed.net/tw?q=***")
    embedAutoDiscovery('google', "//div[@id='hdtbSum']", '//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',"//div[@id='hdtbSum']",'//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@])/, "$1", "*** (filter:videos) | Queryfeed Twitterキーワード 動画", "https://queryfeed.net/tw?q=***%20 (filter:videos)")
    embedAutoDiscovery('google', "//div[@id='hdtbSum']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /(^@)/, "from:@", "from:*** | Queryfeed Twitterユーザー名", "https://queryfeed.net/tw?q=***")
    embedAutoDiscovery('google', "//div[@id='hdtbSum']", '//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', "//div[@id='hdtbSum']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@])/, "$1", "*** | Queryfeed Instagram ユーザーネーム", "https://queryfeed.net/instagram?q=***");
    embedAutoDiscovery('google', "//div[@id='hdtbSum']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@])/, "\#$1", "#*** | Queryfeed Instagram ハッシュタグ", "https://queryfeed.net/instagram?q=***");
    embedAutoDiscovery('google', "//div[@id='hdtbSum']", '//input[@aria-label="検索"]|//input[@aria-label="Search"]', /^([^@])/, "$1", "*** | DeviantArt (En) キーワード", "https://backend.deviantart.com/rss.xml?q=***");
    embedAutoDiscovery('google', "//div[@id='hdtbSum']", '//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 (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 や、ユーザー検索なら半角英数以外を含んだらやらない
    //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);
    //    var place = eleget0("//div[text()='ニュース']|//a[text()='ニュース']");
    if (!place) return;
    var url = link.href;
    var ele = place.appendChild(document.createElement('span'));
    ele.setAttribute("style", "font-weight:normal;");
    let rssICON = '<img 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;
  }

  function addLink(site, placexpath, terms, beforetitle, title, append, deleteoption, option) {
    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 href=" + url + " rel=\"noopener noreferrer nofollow\">" + title + "</a>" + append;
    place.appendChild(ele);
    return;
  }

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

})();