// ==UserScript== // @name 轻量级聚合搜索,支持百度,谷歌,必应,360搜索,搜狗,淘宝,京东,知乎,B站,豆瓣,优酷,爱奇艺,GitHub等 // @namespace http://bbs.91wc.net/aggregate-search.htm // @version 1.3.0 // @description 轻量级聚合搜索,支持百度,谷歌,必应,360搜索,搜狗,淘宝,京东,知乎,B站,豆瓣,优酷,爱奇艺,GitHub,云盘精灵,大圣盘,大力盘,小昭来啦,小可搜搜,支持谷歌搜索链接新窗口打开,可以在下面的自定义处自定义自己的内容,也在代码开关中开启或关闭百度聚合功能及谷歌搜索链接新窗口打开功能。 // @author Wilson // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAEZ0lEQVRYR8WWX2hbVRzHv7+TOhxsZfembIyJdrYncVWk2K5T+2JBO9Tpi7QPOqHzoX9u2sIGivig26MKU1xyb7upHSIIDkQdOlB0fahM2TJ0uLXNTedgRZgmN+0qzLbJ/clNk5ql+XMTqJ6nkPM7v+/nfs/v/M4h/M+DKtVX3zNrxQbhSy7bm7Jr54bkeKV5svGuAJSRmaeIuQvMewDsKiC2wOCTgDiT0BrPVAJTEkAJRvaRwOsA7QZjFoRzTLjo/OYUZj2C6xlcDxIPA3gEQC0YHwryvBXT7p12A1IUwKubAQaCaWGBo9aAfKdUQvWEeReWcAiEgwBiDNGT0Bq+KgdREMAbivQw0RiAyxDotvrllXKJsvOqbnYB+BRAAgJPW/3yXKm1awA2Bye9d4iaGAPjCU12uBXOj1N1k0GYgk2dVqDxerE8awBUIzoG5mZ7saZj7uDOuWoBthwzHxMenGVCMDEgh1wBKCFTI0KIQX0JrfH4qq0jkSesft+3lcKoemQUoF7Y3GkNFl5/mwOqEb3EzEsJTbZmxRR9pp9gH7KZu+cCvp8rgajToy02+AKAMUuTLxVauwpQN3ptu51a/p0ZwURgxTI1FH0UxD8AOGVpsrsS8Zyi/JoBmdCkLAmgGDP7iO3TxPxcPOD7zAn26hGDQftTSTTPD8uZagAUw3yBGB+nYDfMa/6r+TlWHVBD04dB4g1K2bviQ/6ptAO66Xw9LE22VyOe/ohj0/exR0zaKXQUatmrAF7d/JKBZ2o31my8dmDn3xmABQDvW5p0mktVo37stztv3kreKgughMwQEbSlJLb+NSz/zABMgzlsBXzPV6UOYJsR3brMfKMsgNcwX2TGRykbLfOD8uIKQOQTgB6yNOmvFqBuZKbVtu3zxNwUD/gmi9aAol99kJD6hZgPxAO+kyunIFMXOf9VCqIY5qsEHLHE/Cb0tS4XBXAmlJD5hwC+iQfk/pxj9CNA24ipOx5oOF8pgGqYlxhYTgzIlpLHMA2gm18Q8KwAtca0xnDahRGziVJ4LRfKLYSiR3sJPAq2j1gB/+HyAEa0nZgnAD5uab4+t0LF4hTdvEDAdkuTO4rFrLmMvEb0TWZ+pRS1GzBVN50ruSv/XilZA//ue2QKIH+xo1MOIFu8K3FsWZrP69qBnOKbANDuOIGUOGoNy5tlhUfMJjC9DOaevNjLliYfKFsD+QHZ3pB+GTGNEdsT8UHfT/lxih59kji1ByScjllbEJToO2ug8XFXW5AblOkPbwPoTBsKLAKYBXCdQPVwHqWZQcBpBvYC2FDErTW3qqtnuZPMa0y3gcVuG2gj5jYQ7WAgTIwwQ4Q9jHBssCGCs1yjTpo3AFLdQLgGKLf/ufN1H0xtthc9vwK4u8i6bkuTp5y5dQFwEmcuoe8B3F8AYnUr1g3AEd0SvHKPEDWfA9R8GwTbvVbAf2JdHcgKZh4k72KlOJ0iHk967K6FPn/sPwFY7SuGuddOYjH/VbSuW+CmcP8Bvs7fMICKGssAAAAASUVORK5CYII= // @require https://cdn.jsdelivr.net/npm/jquery@1.9.1/jquery.min.js // @match *://*/* // @grant GM_setValue // @grant GM_getValue // @grant unsafeWindow // @license GPL License // @downloadURL none // ==/UserScript== //避免jQuery冲突 this.$ = this.jQuery = jQuery.noConflict(true); (function() { 'use strict'; /////////////// 变量配置 /////////////////////////// //是否开启谷歌搜索链接新窗口打开 var is_google_blank = 1; //是否开启百度聚合搜索 var is_open_multi_search=1; ///////////////////// 这里可以自定义自己的网站 ///////////////////// //默认的搜索引擎,格式:[名称][搜索网址][是否新窗口打开,可省略] 搜索关键词用 #keyword# 表示,每行一个网站 var defaultLinkList = ` [谷歌搜索][https://www.google.com/search?q=#keyword#] [百度搜索][https://www.baidu.com/s?wd=#keyword#] [Bing搜索][https://cn.bing.com/search?q==#keyword#] [360搜索][https://www.so.com/s?q=#keyword#] [搜狗搜索][https://www.sogou.com/web?query=#keyword#]] [GitHub][https://github.com/search?utf8=✓&q=#keyword#] [Stackoverflow][https://stackoverflow.com/search?q=#keyword#][新窗口] [Segmentfault][https://segmentfault.com/search?q=#keyword#] [知乎搜索][https://www.zhihu.com/search?type=content&q=#keyword#] [百度翻译][https://fanyi.baidu.com/#en/zh/#keyword#] [搜狗翻译][https://fanyi.sogou.com/?keyword=#keyword#] [谷歌翻译][https://translate.google.com/?hl=zh-CN&tab=wT0#view=home&op=translate&sl=auto&tl=zh-CN&text=#keyword#][新窗口] [YouTube][https://www.youtube.com/results?search_query=#keyword#] [Quora][https://www.quora.com/search?q=#keyword#][新窗口] [淘宝搜索][https://s.taobao.com/search?q=#keyword#][新窗口] [京东搜索][http://search.jd.com/Search?keyword=#keyword#][新窗口] [Bilibili][http://search.bilibili.com/all?keyword=#keyword#][新窗口] [豆瓣搜索][https://www.douban.com/search?source=suggest&q=#keyword#] [优酷搜索][https://so.youku.com/search_video/q_#keyword#][新窗口] [爱奇艺搜索][https://so.iqiyi.com/so/q_%E5%A5%BD%E5%A5%BD#keyword#][新窗口] [云盘精灵搜][https://www.yunpanjingling.com/search/#keyword#] [大圣盘搜索][https://www.dashengpan.com/search?keyword=#keyword#] [大力盘搜索][https://www.dalipan.com/search?keyword=#keyword#] [小昭来啦][https://www.xiaozhaolaila.com/s/search?q=#keyword#] [小可搜搜][https://www.xiaokesoso.com/s/search?q=#keyword#] `; defaultLinkList = defaultLinkList.replace(/^\n/, '').replace(/\n$/, ''); var main=function(){ //谷歌搜索链接新窗口打开 if(document.domain.indexOf("google.com")!==-1 && is_google_blank){ $("#search div.r a").attr("target", "_blank"); } /////////////// 聚合搜索开始 ////////////////////////////////////////////// if(!is_open_multi_search){ return; } var getY2BVal = function(name){ var ytbobj=document.getElementsByName("search_query"); if(ytbobj && ytbobj[0] && ytbobj[0].value){ return ytbobj[0].value; }; return ''; }; var getkw = function(){ var kw=$("#kw").val()||$("input[name=q]").val()||$("#upquery").val()||$("#baidu_translate_input").val()|| $("#trans-input").val()||$("#Popover2-toggle").val()||$("input.word").val()||$("input[name=q]").eq(1).val() || $("input[name=keyword]").val()||$("input[name=searchInput]").val()||getY2BVal()|| $(".right_contents input.selector_input").val()||""; return encodeURIComponent(kw.replace(/^\s+|\s+$/gm,'')); }; //数据转html var data2html = function(data){ var tpl = `
{{sitename}}
`; var linkList = data || (GM_getValue("wish_s_searchlinklist") || defaultLinkList); var linkArr = linkList.split(/\r*?\n|\r/); var linkhtmls = ""; for(var i in linkArr){ var link=$.trim(linkArr[i]); if(link!==""){ link = link.replace(/【/g, '[').replace(/】/g, ']'); var matches = link.match(/\[(.*?)\][^\[]*?\[(.*?)\](?:[^\[]*?\[(.*?)\])?/); if (matches != null) { var title = $.trim(matches[1]); var target = (matches[3] && (matches[3] == "新窗口" || matches[3] == "新窗口打开"|| matches[3] == "_blank"|| matches[3] == "newwin")) ? 'target="_blank"' : ""; var url = matches[2].indexOf("#keyword#")!==-1 ? $.trim(matches[2]) : $.trim(matches[2]) + "#keyword#"; var linkhtm = tpl.replace(/\{\{sitename\}\}/g, title).replace("{{siteurl}}", url).replace("{{sitetarget}}", target); linkhtmls += linkhtm; } } } return linkhtmls; } var bindSearch=function(force){ force = force||0; if(!force && $("#wish_search_wrapper").length > 0){ return; } var linkList = GM_getValue("wish_s_searchlinklist") || defaultLinkList; var searchLinkList = data2html(linkList); //搜索列表HTML,可在这里调整显示顺序和列表显示效果 var html=`
关闭 设置
`+searchLinkList+`
聚合搜索设置    格式:[名称][搜索网址][是否新窗口打开,可省略]    搜索关键词用 #keyword# 表示,每行一个网站 关闭
恢复出厂设置
`; //追加搜索列表 //var kw=getkw(); //html = html.replace(/#keyword#/gm, kw); if($("#wish_search_wrapper").length > 0){ $("#wish_search_wrapper").remove(); } $("body").append(html); if(document.domain=='www.youtube.com'||document.domain=='www.quora.com'){ $("#wish_search_wrapper").css({left:"auto", right:"20px"}); } if(document.domain=='www.so.com'||document.domain=='www.bing.com'){ $("#wish_search_wrapper").css({left:"15px"}); } //设置列表高度 var wish_search_list = $('#wish_search_list'); var listH=wish_search_list.outerHeight(true); var winH=$(window).height()-70; if(listH > winH){ winH -= 50; $("#wish_search_more_wrapper").show(); $("#wish_search_more_btn").click(function(){ $("#wish_search_more_wrapper").hide(); winH += 44; wish_search_list.height(winH); $("#wish_search_list").css("overflow-y", "auto"); }); } wish_search_list.height(winH); //列表关闭 var wish_s_open_key="__wish_s_open"; $("#wish_search_openclose").click(function(){ if(GM_getValue(wish_s_open_key, 1)){ //关闭 $("#wish_search_content").hide(); $(this).html("开启聚合搜索"); $("#wish_search_settingbtn").hide(); GM_setValue(wish_s_open_key, 0); } else { //开启 $("#wish_search_content").show(); $(this).html("关闭"); $("#wish_search_settingbtn").show(); GM_setValue(wish_s_open_key, 1); } }); if(GM_getValue(wish_s_open_key, 1)){ //开启 $("#wish_search_content").show(); $("#wish_search_openclose").html("关闭"); $("#wish_search_settingbtn").show(); } else { //关闭 $("#wish_search_content").hide(); $("#wish_search_openclose").html("开启聚合搜索"); $("#wish_search_settingbtn").hide(); } //初始化data-href链接 $("#wish_search_list a").each(function(){ var me=$(this); me.attr("data-href", me.attr("href")); }); //链接跳转 $("#wish_search_list a").click(function(){ var me=$(this); if(me.attr("href").indexOf('#keyword#')!==-1){ var href=me.attr("href").replace(/#keyword#/i, getkw()); me.attr("href", href); } return true; }); //动态修改链接 $("#wish_search_list a").on('mouseover', function(){ var me=$(this); var href=me.attr("data-href").replace(/#keyword#/i, getkw()); me.attr("href", href); }); //校验设置数据 var checkData = function(data){ data = data || $("#wish_search_setting_searchlist").val(); data = $.trim(data); if(data == ""){ alert("数据不能为空"); return false; } var linkArr = data.split(/\r*?\n|\r/); for(var i in linkArr){ var link=$.trim(linkArr[i]); if(link!==""){ if(link.toLowerCase().indexOf("#keyword#")===-1){ alert("以下数据缺少#keyword#,请检查后重试!\n" + link); return false; } if(link.toLowerCase().indexOf("【")!==-1||link.toLowerCase().indexOf("】")!==-1){ alert("以下数据含有非法字符【】请,请检查后重试!\n" + link); return false; } var matches = link.match(/\[(.*?)\][^\[]*?\[(.*?)\](?:[^\[]*?\[(.*?)\])?/); if(matches == null){ alert("以下数据格式有误,请检查后重试!\n" + link); return false; } if(!matches[1] || !matches[2]){ alert("以下数据没有匹配到标题或链接,可能格式有误,请检查后重试!\n" + link); return false; } } } return true; } //设置保存 $("#wish_search_setting_save").click(function(){ var data = $("#wish_search_setting_searchlist").val(); if(!checkData(data)){ return false; } var me = $(this); me.attr("disabled", true).html("保存中..."); GM_setValue("wish_s_searchlinklist", data); $("#wish_search_list").html(data2html()); $("#wish_search_setting_tips").html("保存成功").show(); me.html("保存成功"); setTimeout(function(){ me.attr("disabled", false).html("保存"); $("#wish_search_setting_tips").hide(); $("#wish_search_setting_wrapper").hide(); }, 1000); }); //设置按钮被点击 $("#wish_search_settingbtn").click(function(){ $("#wish_search_setting_wrapper").toggle(); $("#wish_search_setting_searchlist").focus(); }); //设置关闭 $("#wish_search_setting_close_a,#wish_search_openclose").click(function(){ $("#wish_search_setting_wrapper").hide(); }); //设置恢复出厂设置 $("#wish_search_setting_reset").click(function(){ if(confirm("您确定要恢复到出厂设置吗?将会清除现有设置且不可恢复!")){ $("#wish_search_setting_searchlist").val(defaultLinkList); var me=$(this); me.html("已恢复到出厂设置,保存后方能生效哦~"); setTimeout(function(){me.html("恢复出厂设置");}, 3000); } }); }; //////// main //////////// //百度翻译 if(document.domain.indexOf("fanyi.baidu.com")!==-1){ bindSearch(); } //百度搜索 else if(document.domain.indexOf("baidu.com")!==-1){ //监控百度首页变化 $('#wrapper_wrapper').on("DOMNodeInserted", function(){ bindSearch(); }); //匹配百度搜索页 if(location.href.indexOf("wd=")!==-1){ bindSearch(); } } //其他 else { bindSearch(); } /////////////// 聚合搜索结束 ////////////////////////////////////////////// }; //获取domain数组 var isDomainAllow = function(){ var data = GM_getValue("wish_s_searchlinklist") || defaultLinkList; data = $.trim(data); if(data == ""){ return false; } if($.inArray(document.domain, ["cn.bing.com","www.bing.com","www.google.com","www.google.com.hk","cn.google.com"]) !==-1){ return true; } var linkArr = data.split(/\r*?\n|\r/); for(var i in linkArr){ var link=$.trim(linkArr[i]); if(link!==""){ var isBlank = link.indexOf("新窗口") !== -1 || link.indexOf("新窗口打开") !== -1 || link.indexOf("_blank") !== -1 || link.indexOf("newwin") !== -1; if(link.indexOf(document.domain) !== -1 && !isBlank){ return true; } } } return false; } //开始执行 if(isDomainAllow()){ main(); } })();