// ==UserScript== // @name Google検索結果に時期指定、再生時間指定、画像サイズ指定、日本語のみボタンを設置する // @description 画面解像度が高い人向き ニコ動検索結果にも並べ替えボタンを設置(実験的) Google検索結果にGoogle NewsやTwitter検索へのRSSリンクとRSS Autodiscoveryを埋め込む // @include *://www.google.tld/search?* // @include *://www.nicovideo.jp/search/* // @include *://www.nicovideo.jp/tag/* // @include *://www.nicovideo.jp/mylist_search/* // @version 0.5.1 // @grant none // @namespace https://greasyfork.org/users/181558 // @downloadURL none // ==/UserScript== (function() { 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年以内", "
", /&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分以上", "
", /&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"); addLink("nicovideo.jp/mylist_search/", '//p[@class="font12"]', "", " 
", "人気", " ", nicodeleteOpt, "?sort=p&order=d"); addLink("nicovideo.jp/mylist_search/", '//p[@class="font12"]', "", "", "動画多", "|", nicodeleteOpt, "?sort=n&order=d"); addLink("nicovideo.jp/mylist_search/", '//p[@class="font12"]', "", "", "動画少", " ", nicodeleteOpt, "?sort=n&order=a"); addLink("nicovideo.jp/mylist_search/", '//p[@class="font12"]', "", "", "更新新", " ", nicodeleteOpt, "?sort=u&order=d"); addLink("nicovideo.jp/mylist_search/", '//p[@class="font12"]', "", "", "適合率", " ", nicodeleteOpt, "?sort=r&order=d"); addLink("nicovideo.jp/mylist_search/", '//p[@class="font12"]', "", "", "作成新", "|", nicodeleteOpt, "?sort=c&order=d"); addLink("nicovideo.jp/mylist_search/", '//p[@class="font12"]', "", "", "作成古", " ", nicodeleteOpt, "?sort=c&order=a"); addLink("nicovideo.jp/mylist_search/", '//p[@class="font12"]', "", "", "フォロー多", " ", nicodeleteOpt, "?sort=f&order=d"); //addLink("","" , "", "", "", " ", , "?"); addAutoDiscovery(); return; function addAutoDiscovery() { // Google検索結果に同じ検索ワードでGoogle NewsかTwitter検索へのRSSリンクとRSS Autodiscoveryを埋め込む if (location.href.indexOf("google") == -1) return var ele = eleget0('//input[@aria-label="検索"]|//input[@aria-label="Search"]'); if (!ele) return; var word = ele.value; var opt = (navigator.userLanguage || navigator.browserLanguage || navigator.language.substr(0, 2) == "en") ? "?ned=us&hl=en&gl=US" : "?ned=jp&hl=ja&gl=JP"; if (word.match(/^en:/)) { word = word.replace(/^en:/, ""); opt = "?ned=us&hl=en&gl=US"; } var place = eleget0("//div[@id='hdtbSum']"); var link = place.parentNode.insertBefore(document.createElement("link"), place); var filter = (location.href.match(/tbm=vid|tbm=isch/)) ? " (filter:images OR filter:videos)" : ""; // 動画検索ならTwitterも画像OR動画検索に if (word.match(/^@/)) var url2 = "https://twitrss.me/twitter_user_to_rss/?user=" + encodeURIComponent(word.replace(/^@/, "")); // twitrssは画像が出る else if (word.match(/^#/)) var url2 = "https://queryfeed.net/tw?q=" + encodeURIComponent(word + filter); // queryfeed(alt)は日本語対応&フィルタ可 else var url2 = "https://news.google.com/news/rss/search/section/q/" + encodeURI(word) + opt; // Google News link.rel = "alternate" link.type = "application/rss+xml" link.title = document.title; link.href = url2; var place = eleget0("//div[@id='hdtbSum']"); if (!place) return; var url = url2; var ele = document.createElement('span'); ele.setAttribute("style", "font-weight:normal;"); let rssICON = ''; ele.innerHTML = " " + rssICON + ""; place.appendChild(ele); } 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; var ele = document.createElement('span'); ele.setAttribute("style", "font-weight:normal;"); ele.innerHTML = beforetitle + "" + title + "" + 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) : ""; } })();