// ==UserScript==
// @name 百度搜索 - 优化
// @namespace http://tampermonkey.net/
// @home-url https://greasyfork.org/zh-CN/scripts/31642
// @description 1、屏蔽百度推广 2、居中单列(可选) 3、居中双列(可选) 4.自动下一页(可选)
// @version 5.1.1
// @author 浮生未歇
// @run-at document-start
// @match *://ipv6.baidu.com/*
// @match *://www.baidu.com/
// @match *://www.baidu.com/?*
// @match *://www.baidu.com/s?*
// @match *://www.baidu.com/#*
// @match *://www.baidu.com/baidu?*
// @exclude ^https://www.baidu.com/home*
// @exclude ^https://www.baidu.com/sf*
// @exclude ^https://www.baidu.com/search*
// @exclude ^https://www.baidu.com/link*
// @exclude ^https://www.baidu.com/s*tn=news*
// @require https://lib.baomitu.com/jquery/3.5.0/jquery.min.js
// @connect self
// @connect baidu.com
// @connect bing.com
// @grant GM_addStyle
// @grant GM_getResourceText
// @grant GM_getResourceURL
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_deleteValue
// @grant GM_xmlhttpRequest
// ==/UserScript==
(function () {
const UserConfig = {
BG_IMAGE_URL: "",
};
const SYSTEM_CONFIGS = {
IS_DEBUG: false,
PAGE_SELECT_NAME: "BD_PAGE_SELECT",
PAGE_AUTO_NEXT_PAGE_NAME: "IS_AUTO_NEXT_PAGE",
DEFAULT_PAGE_SELECT_VALUE: 1,
DEFAULT_AUTO_NEXT_PAGE_SWITCH: false,
BAIDU_STYLES: {
INDEX: "baiduIndexStyle",
BASE: "baiduBaseStyle",
MENU: "baiduMenu",
ONE_PAGE: "baiduOne",
TWO_PAGE: "baiduTwo",
THREE_PAGE: "baiduThree"
},
};
const SIDEBAR_TOOLBAR_ITEMS = {
"百度识图": "https://graph.baidu.com/pcpage/index?tpl_from=pc",
"百度资讯": "https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&ie=utf-8&word=%s",
"百度文库": "https://wenku.baidu.com/search?lm=0&od=0&ie=utf-8&word=%s",
"百度知道": "https://zhidao.baidu.com/search?ct=17&pn=0&tn=ikaslist&rn=10&fr=wenku&word=%s",
"百度贴吧": "https://tieba.baidu.com/f?kw=%s&t=4",
"百度图片": "https://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&word=%s&t=3",
"百度地图": "https://map.baidu.com/",
"Google": "https://www.google.com/search?&num=20&newwindow=1&q=%s",
"Bing": "https://www.bing.com/search?q=%s",
"淘宝": "https://s.taobao.com/search?q=%s",
"京东": "https://search.jd.com/Search?keyword=%s&enc=utf-8"
};
let LAYOUT_TYPE;
(function (LAYOUT_TYPE) {
LAYOUT_TYPE[LAYOUT_TYPE["General"] = 0] = "General";
LAYOUT_TYPE[LAYOUT_TYPE["OneCenter"] = 1] = "OneCenter";
LAYOUT_TYPE[LAYOUT_TYPE["TwoCenter"] = 2] = "TwoCenter";
LAYOUT_TYPE[LAYOUT_TYPE["ThreeCenter"] = 3] = "ThreeCenter";
})(LAYOUT_TYPE || (LAYOUT_TYPE = {}));
;
let SILTER_BAR_MODE;
(function (SILTER_BAR_MODE) {
SILTER_BAR_MODE[SILTER_BAR_MODE["auto"] = 0] = "auto";
SILTER_BAR_MODE[SILTER_BAR_MODE["show"] = 1] = "show";
SILTER_BAR_MODE[SILTER_BAR_MODE["hidden"] = 2] = "hidden";
})(SILTER_BAR_MODE || (SILTER_BAR_MODE = {}));
let ADDITION_FUNCTION;
(function (ADDITION_FUNCTION) {
ADDITION_FUNCTION[ADDITION_FUNCTION["AutoNextPage"] = 0] = "AutoNextPage";
ADDITION_FUNCTION[ADDITION_FUNCTION["SideToolBar"] = 1] = "SideToolBar";
})(ADDITION_FUNCTION || (ADDITION_FUNCTION = {}));
const LAYOUT_CONFIG = {
saveName: "PAGE_LAYOUT",
defaultValue: LAYOUT_TYPE.General
};
const SILDER_BAR_CONFIG = {
saveName: "silder_bar",
defaultValue: SILTER_BAR_MODE.hidden
};
const ADDITION_FUNCTION_CONFIGS = {
AutoNextPage: {
saveName: "funciton_auto_next_page",
defaultSwitch: false,
functionName: ADDITION_FUNCTION.AutoNextPage
},
SideToolBar: {
saveName: "funciton_side_tool_bar",
defaultSwitch: false,
functionName: ADDITION_FUNCTION.SideToolBar
}
};
const INLINE_STYLE_BASE = `#content_left .c-container[data-lp],#content_left>.c-container[tpl=short_video_pc],#content_left>div>.c-container[tpl=short_video_pc],#content_left>table,#content_right,#demo,#ent_sug,#foot,#head .headBlock,#imsg,#page .fk,#result_logo img,#rs_new,#rs_top_new,#searchTag,#top-ad,#u>a .c-icon,.c-recommend,.hint_common_restop,.hit_top_new,.leftBlock,.rrecom-btn-parent,body>.res_top_banner,iframe{display:none!important}#content_left>div:not([id]),#content_left>div[style*='display:block !important;'],body>div[style*='position: absolute;'],body>div[style*='position: fixed;']{display:none!important;position:absolute!important;top:-1px!important;clip:rect(0 0 0 0)!important;z-index:-1!important}.bd-none{display:none!important}#form{display:none!important}#baidu_content_left{margin-left:200px}.c-container{display:inline-block;margin:20px auto}#container{position:relative!important;padding-top:60px!important}body{background:#f1f2f3!important}html{overflow-y:scroll}:root{overflow-y:auto;overflow-x:hidden}:root body{position:absolute}body{width:100vw;overflow:hidden}#form{position:absolute!important;z-index:-1;-webkit-transform:scaleX(0);transform:scaleX(0)}.bd-container-search{position:absolute;top:8px;left:150px}.bd-docker{position:absolute;top:0;left:0}.bd-barbox-ul{position:absolute;display:flow-root;width:640px;height:40px;font-size:18px;line-height:1.2;text-align:center;z-index:2}.bd-barbox-li{float:left;position:relative}.bd-barbox-li:first-of-type:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;z-index:-1}.bd-barbox-button,.bd-barbox-input{border:none!important;outline:0!important}.bd-barbox-input{position:relative;width:540px;height:40px;color:#000;font-size:inherit;border-radius:3px 0 0 3px;background:#e3e3e3!important;padding-left:15px;padding-right:10px;-webkit-transition:width .3s;transition:width .3s;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.bd-barbox-input:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;z-index:-1;background:#fff}.bd-barbox-button{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:100px;height:40px;line-height:1;font-size:inherit;background:linear-gradient(40deg,#18c0fe,#1677ff);border-radius:0 3px 3px 0;color:#fff;-webkit-transition:background .3s;transition:background .3s}.bd-barbox-button:hover{cursor:pointer;background:linear-gradient(40deg,#2070e5,#1890ff);-webkit-transition:background .3s;transition:background .3s}.bd-associate-ul{position:absolute;width:650px;top:50px;background:0 0;border-radius:.5em;text-align:left}.bd-associate-ul:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;z-index:-1;background:#fdfdfd;-webkit-box-shadow:0 0 5px 1px rgba(0,0,0,.2);box-shadow:0 0 5px 1px rgba(0,0,0,.2)}.bd-associate-li{font-size:16px;padding:10px 20px;list-style-type:none!important}.bd-associate-li>span{font-weight:700}.bd-associate-li:hover{cursor:pointer}.bd-associate-li:first-of-type{border-radius:.5em .5em 0 0}.bd-associate-li:last-of-type{border-radius:0 0 .5em .5em}.bd-associate-li:only-of-type{border-radius:.5em!important}.bd-associate-selected{position:relative;color:#2196f3;background:#f3f3f3!important}.bd-associate-selected:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;-webkit-box-shadow:0 0 3px hsla(0,0%,13%,.1);box-shadow:0 0 3px hsla(0,0%,13%,.1)}#head{background-color:#f1f2f3!important;border-bottom:1px solid!important;border-color:#e4e5e7!important;-webkit-box-shadow:none!important;box-shadow:none!important}#head .s_form{height:58px!important}#u .s-top-img-wrapper,.set-result-tts{display:none!important}#u{font-size:15px!important;margin-top:8px!important;padding-right:10px!important}#u a,#u a:hover{text-decoration:none}#u>a{-webkit-box-sizing:border-box!important;box-sizing:border-box!important;font-family:"Microsoft YaHei"!important;font-size:inherit!important;margin:0 8px!important;padding:8px 8px!important;position:relative;background:0 0!important;color:hsla(216,25%,24%,.8)!important;border-radius:3px}#u>a .s-top-username{font-size:15px!important;line-height:24px!important;margin:0!important;padding:0!important}#u>a[name=tj_login]{height:auto!important}#u>a:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;border-radius:3px;background-color:#e4e5e7!important;z-index:-1}#u>a:hover:after{background-color:#fff!important}#user{max-width:250px!important;text-overflow:ellipsis!important;height:auto!important}@media screen and (max-width:1024px){#u .toindex{display:none!important}}.bdpfmenu,.usermenu{width:auto!important;border:1px solid #e4e5e7!important;-webkit-box-shadow:none!important;box-shadow:none!important;padding:0!important;border-radius:0!important}.bdpfmenu{position:fixed!important;top:50px!important;width:100px!important;margin-top:3px!important;margin-right:10px!important}.usermenu{top:35px!important;width:100px!important;margin-top:10px!important;margin-right:0!important;z-index:1}.usermenu a{margin:0!important}.bdpfmenu>a,.usermenu>a{border-radius:0!important;display:block!important;width:auto!important;height:auto!important;margin:0!important;padding:5px 10px!important;font-size:14px!important;line-height:1.8!important;text-align:center!important;background:#fff!important;color:#222!important}.bdpfmenu>a>span,.usermenu>a>span{margin:0!important}.bdpfmenu>a:hover,.usermenu>a:hover{background:#f1f3fd!important;color:#315efb!important}#s_tab{display:none!important}#content_left{display:none!important}#head{width:100%!important}.s_form{padding:0!important}#container{padding-left:0!important}@media screen and (min-width:1921px){.head_wrapper{width:100%;margin:0 auto;position:relative;-webkit-transform:translate3d(-52px,0,1px);transform:translate3d(-52px,0,1px)}}.options_2Vntk{width:auto!important}.result-molecule{width:640px!important}.bd_search_result_container .bd_list{width:640px;float:left}.bd_search_result_container .bd_list:not(:first-of-type){margin-left:10px}.bd_search_result_container .c-container{margin:5px auto!important}.bd_search_result_container .c-container .c-container{width:100%!important}.bd_search_result_container #rs,.bd_search_result_container #rs_new,.bd_search_result_container .bd_list>.c-container[id][tpl]{width:640px!important;margin-top:5px!important;padding:0 20px 10px!important;margin-bottom:5px!important;background:#fff!important;-webkit-box-sizing:border-box!important;box-sizing:border-box!important;border:none!important;border-radius:3px}.bd_search_result_container #rs,.bd_search_result_container .bd_list>.c-container[id]{position:relative!important}.bd_search_result_container #rs:after,.bd_search_result_container .bd_list>.c-container[id]:after{content:"";z-index:-1;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-box-shadow:0 0 30px 1px rgba(0,0,0,.1);box-shadow:0 0 30px 1px rgba(0,0,0,.1)}.bd_search_result_container .c-result-content>.c-container[id]{border:none!important;margin-left:-20px!important}.bd_search_result_container .bd_list>.c-container[tpl*=ty_lasar]{padding:0}.bd_search_result_container .bd_list>.c-container[tpl=soft] .op-soft-title,.bd_search_result_container .bd_list>.c-container[tpl] h3{background:hsla(0,0%,90%,.05)!important;margin:0 -20px 5px!important;padding:8px 20px 6px!important;border-bottom:1px solid hsla(0,2%,10%,.05)!important}.bd_search_result_container .bd_list>.c-container[tpl=jy_rota_wenshu_pc] .c-container{padding-top:0!important}.bd_search_result_container .bd_list>.c-container[tpl=jy_rota_wenshu_pc] header.c-gap-bottom-small{padding-bottom:10px!important}.bd_search_result_container .bd_list>.c-container h3 [class*=OP_LOG_LINK]{color:#fff!important}.bd_search_result_container .bd_list>.c-container h3 a,.bd_search_result_container .bd_list>.c-container h3 a em,.bd_search_result_container .bd_list>.c-container[tpl=soft] .op-soft-title a,.bd_search_result_container .bd_list>.c-container[tpl=soft] .op-soft-title a em{color:#014aa5!important;text-decoration:none!important}.bd_search_result_container .bd_list>.c-container h3 a em,.bd_search_result_container .bd_list>.c-container[tpl=soft] .op-soft-title a em{color:#e45465!important}.bd_search_result_container .bd_list>.c-container h3 a,.bd_search_result_container .op-soft-title a{position:relative;display:inline-block}.bd_search_result_container .bd_list>.c-container h3 a:after,.bd_search_result_container .op-soft-title a:after{position:absolute;z-index:1;content:"";border-bottom:1px solid;bottom:2px;left:100%;width:0;-webkit-transition:width 350ms,left 350ms;-moze-transition:width 350ms,left 350ms;transition:width 350ms,left 350ms}.bd_search_result_container .bd_list>.c-container h3 a:hover:after,.bd_search_result_container .op-soft-title a:hover:after{left:0;width:100%;-webkit-transition:width 350ms;transition:width 350ms}.bd_search_result_container .bd_list>.c-container h3 a:visited,.bd_search_result_container .op-soft-title a:visited{color:#7c32a1!important}.bd_search_result_container .bd_list>.c-container h3 a:visited:after,.bd_search_result_container .op-soft-title a:visited:after{left:100%;width:0;-webkit-transition:width 350ms,left 350ms;-moze-transition:width 350ms,left 350ms;transition:width 350ms,left 350ms}.bd_search_result_container .bd_list>.c-container h3 a:visited:hover:after,.bd_search_result_container .op-soft-title a:visited:hover:after{left:0;width:100%;-webkit-transition:width 350ms;transition:width 350ms}.bd_search_result_container .bd_list>.c-container .c-abstract,.bd_search_result_container .bd_list>.c-container .c-span18,.bd_search_result_container ol li{color:#636363!important;color:#333!important;line-height:1.8}.bd_search_result_container table em{text-decoration:none!important}.bd_search_result_container .c-gap-right-small,.bd_search_result_container .c-gray a,.bd_search_result_container .c-offset>div a,.bd_search_result_container .c-span18 a,.bd_search_result_container .c-span6 a,.bd_search_result_container .c-tabs-content a,.bd_search_result_container .f13 a,.bd_search_result_container .f13 em,.bd_search_result_container .op-b2b-find-all-text,.bd_search_result_container .op-b2b-product-item-title a,.bd_search_result_container .op-generaltable-morelink a,.bd_search_result_container .op-img-address-link-menu a,.bd_search_result_container .op-se-listen-recommend,.bd_search_result_container .op-short-video-pc-more a,.bd_search_result_container .op-short-video-pc-poster a,.bd_search_result_container .op-tieba-general-mainpl a,.bd_search_result_container .op-tieba-general-right,.bd_search_result_container .op-tieba-novel-lookmore a,.bd_search_result_container .op-tieba-novel-trone a,.bd_search_result_container .op-tieba-novel-trtwo a,.bd_search_result_container .op-tieba-offical-lookmore a,.bd_search_result_container .op-tieba_offical-lianjie,.bd_search_result_container .op_dq01_morelink a,.bd_search_result_container .op_dq01_table a,.bd_search_result_container .op_dq01_title,.bd_search_result_container .op_generalqa_answer_title a,.bd_search_result_container .op_jingyan_list p.c-gap-top-small,.bd_search_result_container .op_offical_weibo_content a,.bd_search_result_container .op_offical_weibo_pz a,.bd_search_result_container .op_tieba2_tablinks_container a,.bd_search_result_container .subLink_factory a,.bd_search_result_container tbody a{text-decoration:none!important;color:#014aa5!important}.bd_search_result_container .c-gap-right-small:hover,.bd_search_result_container .c-gray:hover a,.bd_search_result_container .c-offset>div a:hover,.bd_search_result_container .c-span6 a:hover,.bd_search_result_container .c-tabs-content a:hover,.bd_search_result_container .f13 a:hover,.bd_search_result_container .f13 em:hover,.bd_search_result_container .op-b2b-product-item-title a:hover,.bd_search_result_container .op-generaltable-morelink a:hover,.bd_search_result_container .op-img-address-link-menu a:hover,.bd_search_result_container .op-se-listen-recommend:hover,.bd_search_result_container .op-short-video-pc-more a:hover,.bd_search_result_container .op-short-video-pc-poster a:hover,.bd_search_result_container .op-tieba-general-mainpl a:hover,.bd_search_result_container .op-tieba-general-right:hover,.bd_search_result_container .op-tieba-offical-lookmore a:hover,.bd_search_result_container .op-tieba_offical-lianjie:hover,.bd_search_result_container .op_dq01_morelink a:hover,.bd_search_result_container .op_dq01_table a:hover,.bd_search_result_container .op_dq01_title:hover,.bd_search_result_container .op_generalqa_answer_title:hover,.bd_search_result_container .op_jingyan_list p:hover,.bd_search_result_container .op_tieba2_tablinks_container a:hover,.bd_search_result_container .subLink_factory a:hover,.bd_search_result_container tbody a:hover{text-decoration:underline!important}.bd_search_result_container .f13 a{color:green!important}.bd_search_result_container em{color:#e45465}.bd_search_result_container .c-img6{opacity:.9}.bd_search_result_container .c-span18{width:455px!important}.bd_search_result_container .c-span24{width:100%!important;line-height:1.8!important}.bd_search_result_container .c-border{width:auto!important;border:none!important;border-bottom-color:transparent;border-right-color:transparent;-webkit-box-shadow:none!important;box-shadow:none!important}.bd_search_result_container .bd_list>.c-container .op-img-address-link-type,.bd_search_result_container .op_jingyan_list,.bd_search_result_container .se_com_irregular_gallery ul li{display:inline-block}.bd_search_result_container::after{content:"";display:table;clear:both}#page{display:none!important}#bd_page_number{width:640px;text-align:center;margin-top:20px;margin-bottom:100px}#bd_page_number .bd_page_item{border:none;border-radius:6px;background-color:#fff;color:#3951b3;margin-right:10px;display:inline-block;vertical-align:text-bottom;text-align:center;text-decoration:none;overflow:hidden}#bd_page_number .bd_page_item span{display:inline-block;cursor:pointer;width:100%;height:100%;line-height:36px}#bd_page_number .bd_page_item :hover{border:none;background:#4e6ef2;color:#fff}#bd_page_number .bd_page_number{width:36px;height:36px}#bd_page_number .bd_page_next_page,#bd_page_number .bd_page_pre_page{width:80px;height:36px}#bd_page_number .bd_page_next_page{margin-right:0}#bd_page_number .bd_page_number_selected{pointer-events:none;background-color:#4e6ef2;color:#fff} `;
const INLINE_STYLE_INDEX = `#bds-message-wrapper,#bottom_container,#bottom_layer,#ftCon,#s-hotsearch-wrapper,#s_lm_wrap,#s_main,#s_side_wrapper,#s_top_wrap.s-down .s-center-box,.guide-info,.qrcodeCon,.s-set-homepage-tts,.s-top-wrap.s-isindex-wrap.s-down,.show-feed{display:none!important}body{position:relative;overflow-y:hidden!important;background:0 0!important}body::after{position:absolute;content:"";top:0;bottom:0;left:0;right:0;z-index:-100;background-color:#f1f2f3}#s_top_wrap{border:none!important}#head_wrapper{z-index:1!important}#s_main{background:hsla(0,0%,100%,.6)!important}#head_wrapper .s_form{width:900px}.s-top-wrap{background:0 0!important}.s-isindex-wrap .c-color-t:after{content:"";position:absolute;top:0;bottom:-2px;left:50%;right:50%;z-index:-2;border-bottom:2px solid}.s-isindex-wrap .c-color-t:hover{color:#2196f3!important;position:relative}.s-isindex-wrap .c-color-t:hover:after{left:0;right:0;-webkit-transition:left .3s ease,right .3s ease;transition:left .3s ease,right .3s ease}.s-top-more-content .c-color-t{color:#555!important;text-shadow:none!important}.s-top-more-content .c-color-t:hover{color:#4682b4!important}.s-isindex-wrap .c-color-red.c-color-red{color:#fff}.s-isindex-wrap .c-color-red.c-color-red:hover{color:#2196f3}#form{display:none!important}.bd-container-search{position:relative}.bd-barbox-ul{position:absolute;display:flow-root;top:200px;bottom:-50px;width:100%;height:48px;font-size:20px;line-height:1.2;text-align:center;z-index:2}.bd-barbox-center{display:inline-block;margin:0 auto;border-radius:30px;-webkit-box-shadow:0 0 8px 3px rgba(0,0,0,.1);box-shadow:0 0 8px 3px rgba(0,0,0,.1);text-align:center}.bd-barbox-li{float:left;position:relative}.bd-barbox-li:first-of-type:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;border-radius:20px 20px 0 0;background:hsla(0,0%,100%,.2)!important;-webkit-filter:blur(5px);filter:blur(5px);z-index:-1}.bd-barbox-button,.bd-barbox-input{border:none!important}.bd-barbox-input{position:relative;width:450px;height:40px;color:#000;text-shadow:0 0 1px 1px #000;border-radius:20px 0 0 20px;background:hsla(0,0%,100%,.3);padding-left:25px;padding-right:10px;-webkit-transition:width .3s;transition:width .3s;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.bd-barbox-input:focus{width:500px;background:hsla(0,0%,100%,.6);-webkit-transition:width .3s ease,background .5s ease-out;transition:width .3s ease,background .5s ease-out}.bd-barbox-input:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;z-index:-1;background:#fff;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.bd-barbox-button{position:relative;height:40px;padding:0 20px;line-height:1;background:hsla(216,80%,55%,.7);border-radius:0 20px 20px 0;color:#fff;-webkit-transition:background .3s;transition:background .3s}.bd-barbox-button:hover{background:#3079e8;-webkit-transition:background .3s;transition:background .3s}.bd-associate-ul{position:absolute;width:620px;top:250px;left:0;margin-left:140px;background:0 0;border-radius:.5em;text-align:left;-webkit-box-shadow:0 0 10px 5px rgba(0,0,0,.1);box-shadow:0 0 10px 5px rgba(0,0,0,.1);overflow:hidden}.bd-associate-ul:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;z-index:-1;background:hsla(0,0%,100%,.6);-webkit-filter:blur(1px);filter:blur(1px);margin:-30px}.bd-associate-li{font-size:16px;padding:10px 20px;list-style-type:none!important}.bd-associate-li>span{font-weight:700}.bd-associate-li:hover{cursor:pointer}.bd-associate-li:first-of-type{border-radius:.5em .5em 0 0}.bd-associate-li:last-of-type{border-radius:0 0 .5em .5em}.bd-associate-li:only-of-type{border-radius:.5em!important}.bd-associate-selected{position:relative;color:#2196f3;background:rgba(255,255,255,.3)!important}.bd-associate-selected:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;-webkit-box-shadow:0 0 10px hsla(0,0%,13%,.1);box-shadow:0 0 10px hsla(0,0%,13%,.1)}#head_wrapper .s-p-top{height:181px}#lg>img{display:none!important}#lg{position:relative;width:900px}#lg:after{content:"";position:absolute;top:0;left:0;margin-left:35px;z-index:100}#lg:after{width:100%;height:230px;-webkit-transform:scale(.35);transform:scale(.35);background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAr4AAADwCAYAAADmSmdAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpBQUM5Qzc0MkM5N0NFNjExQkJFNTgyNTRGQzQzMjU2NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5OTkxNTNBMjdDQzkxMUU2ODNCN0IyNjU5MTY1OUJBRCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5OTkxNTNBMTdDQzkxMUU2ODNCN0IyNjU5MTY1OUJBRCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFCQzlDNzQyQzk3Q0U2MTFCQkU1ODI1NEZDNDMyNTY1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFBQzlDNzQyQzk3Q0U2MTFCQkU1ODI1NEZDNDMyNTY1Ii8+IDwvcmRmOkRlc2NyaXB0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)!important;background-repeat:no-repeat}.bd-display{display:none}.bd-bg-ul{position:fixed;top:0;bottom:0;left:0;right:0;z-index:-1}.bd-bg-ul:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;z-index:2;-webkit-filter:blur(20px);filter:blur(20px);background-color:rgba(29,23,36,.2)}.bd-bg-li{position:absolute;top:0;bottom:0;left:0;right:0;z-index:-1;color:transparent}.bd-bg-li{background-size:100% 100%;background-repeat:no-repeat;background-attachment:fixed}.bd-opacity{opacity:0}#bd-search-association{background:red;width:575px;height:500px;position:absolute;margin-top:45px;border-radius:5px}.bd-head-more{background:red;position:fixed;top:50px;right:10px} `;
const INLINE_STYLE_MENU = `#u>#bd-menu-btn:hover{-webkit-transition:background .3s;transition:background .3s}#bd-menu-detilas{position:absolute;top:-3px;left:-10px;margin-top:50px;border:1px solid #e4e5e7;background-color:#fff;-webkit-box-shadow:0 0 15px 1px rgba(0,0,0,.2);box-shadow:0 0 15px 1px rgba(0,0,0,.2)}#bd-menu-detilas .bt-menu-piece{display:flow-root;float:left;width:100px}#bd-menu-detilas ol{text-align:center;-webkit-box-shadow:none!important;box-shadow:none!important;border-bottom:1px dashed #e4e5e7!important}#bd-menu-detilas ol li{text-align:left;list-style:none!important;margin-left:-5px;padding:0 5px;color:#222;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#bd-menu-detilas ol li input{-webkit-appearance:auto!important;-moz-appearance:auto!important;appearance:auto!important}#bd-menu-detilas ol:last-child{border-bottom:none!important}#bd-menu-detilas #bd_menu_save{display:block;width:100%;height:25px;margin-top:3px;border:1px solid #9e9e9e;cursor:pointer} `;
const INLINE_STYLE_ONE_CENTER = `#container.sam_newgrid{margin:0!important;width:100%!important}.bd-container-search{position:relative!important;left:0!important;margin:auto;width:640px;left:4px!important}.result-molecule{width:640px!important;margin:auto!important}#container.sam_newgrid{margin:0!important;width:100%!important}.bd_serach_result_dock{width:640px;margin:auto}@media screen and (min-width:1921px){#wrapper_wrapper{margin-left:0!important}}#bd_page_number{margin:20px auto 100px!important} `;
const INLINE_SIDEBAE = `#bd_sidebar{position:fixed;display:block;width:110px;height:100%;top:60px;z-index:100;background-color:transparent;color:#fff1c1;text-align:center;font-size:14px;left:-100px;opacity:0;opacity:1}#bd_sidebar:hover{opacity:1;left:0;background-color:#2b333e;overflow:hidden;-webkit-transition:left .2s;transition:left .2s}#bd_sidebar li{position:relative;width:100%;height:40px;line-height:40px;background:0 0!important;cursor:pointer}#bd_sidebar li:hover{padding-left:5px!important;-webkit-transition:padding-left .2s;transition:padding-left .2s;border-bottom-color:transparent}#bd_sidebar li:hover::after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;z-index:-2;background:linear-gradient(to right,#00a8ff 3px,#3d5a83 0)!important} `;
const INLINE_STYLE_THREE_CENTER = `#container.sam_newgrid{margin:0!important;width:100%!important}.bd-container-search{position:relative!important;left:0!important;margin:auto;width:640px;left:4px!important}.result-molecule{width:1940px!important;margin:auto!important}#container.sam_newgrid{margin:0!important;width:100%!important}.bd_serach_result_dock{width:1940px;margin:auto}@media screen and (min-width:1921px){#wrapper_wrapper{margin-left:0!important}}#bd_page_number{margin:20px auto 100px!important} `;
const INLINE_STYLE_TWO_CENTER = `#container.sam_newgrid{margin:0!important;width:100%!important}.bd-container-search{position:relative!important;left:0!important;margin:auto;width:640px;left:4px!important}.result-molecule{width:1290px!important;margin:auto!important}#container.sam_newgrid{margin:0!important;width:100%!important}.bd_serach_result_dock{width:1290px;margin:auto}@media screen and (min-width:1921px){#wrapper_wrapper{margin-left:0!important}}#bd_page_number{margin:20px auto 100px!important} `;
class GM {
static getValue(key, defaultValue) {
try {
return GM_getValue(key, defaultValue);
}
catch (error) {
console.debug(error);
}
}
static setValue(key, value) {
try {
GM_setValue(key, value);
}
catch (error) {
console.debug(error);
}
}
static addStyle(content) {
Promise.resolve().then(() => {
try {
GM_addStyle(content);
}
catch (error) {
console.debug(error);
}
});
}
static xmlhttpRequest(config) {
try {
GM_xmlhttpRequest(config);
}
catch (error) {
console.debug(error);
}
}
static getResourceText(name) {
try {
return GM_getResourceText(name);
}
catch (error) {
console.debug(error);
}
}
}
class OptionControl {
constructor(name, defaultValue) {
this.GM = GM;
this.name = name;
this.defalutValue = defaultValue;
}
getDefaultValue() {
return this.defalutValue;
}
setOption(value) {
this.GM.setValue(this.getOptionName(), value);
}
getOptionName() {
return this.name;
}
getOptionValue() {
return this.GM.getValue(this.getOptionName(), this.getDefaultValue());
}
}
class Debug {
static execute(callback) {
if (Config.isDebug()) {
callback();
}
}
static log(msg) {
this.execute(() => {
console.log(msg);
});
}
static info(msg) {
this.execute(() => {
console.info(msg);
});
}
static count(msg) {
this.execute(() => {
console.count(msg);
});
}
static debug(msg) {
this.execute(() => {
console.debug(msg);
});
}
}
class Config {
static isDebug() {
return SYSTEM_CONFIGS.IS_DEBUG;
}
}
class Assoicate {
constructor() {
this.templateUrlAssociate = "https://www.baidu.com/sugrec?pre=1&p=3&ie=utf-8&json=1&prod=pc&from=pc_web&req=2&csor=10&wd=%s";
}
getURL(templateURL, keyWord) {
const isEmptyKeyWord = keyWord.trim().length <= 0;
if (isEmptyKeyWord) {
return "";
}
else {
return templateURL.replace(/\%s/i, encodeURIComponent(keyWord));
}
}
decodeString(content) {
return unescape(content.replace(/\\\u/g, "%u"));
}
stringToObject(content) {
let result = `{"s":${content.match(/\[\".+\"\]/i)}}`;
return JSON.parse(result);
}
processData(content, name) {
let strContent = this.decodeString(content);
let objContent = this.stringToObject(strContent);
return name ? objContent[name] : objContent;
}
getItems(responseText) {
let response = JSON.parse(responseText);
let searchResults = response["g"];
let items = [];
for (const key in searchResults) {
let item = searchResults[key]["q"];
items.push(item);
}
return items;
}
getAssociateURL(keyWord) {
return this.getURL(this.templateUrlAssociate, keyWord);
}
}
class AssociateManager extends Assoicate {
constructor(o) {
super();
this.o = o;
}
deal(responseText) {
let items = super.getItems(responseText);
this.update(items);
}
update(items) {
this.o.update(items);
}
getAssoicateURL(keyWord) {
return super.getAssociateURL(keyWord);
}
request(keyword) {
let that = this;
let url = this.getAssociateURL(keyword);
GM.xmlhttpRequest({
method: "GET",
url: url,
timeout: 3000,
responseType: "json",
headers: {
"User-Agent": navigator.userAgent,
"Cookie": document.cookie,
},
onload: (response) => {
if (response.status === 200 ||
response.status === 304) {
that.deal(response.responseText);
}
},
onerror: (error) => {
console.error("联想功能异常,请排查:", error);
}
});
}
search(keyWord) {
let isEmptyKeyWord = keyWord.trim().length <= 0;
let emptyKeyWord = [""];
if (isEmptyKeyWord) {
this.update(emptyKeyWord);
}
else {
this.request(keyWord);
}
}
}
class AvoidMulExecute {
constructor() {
this.SING_NAME = "IsRunBaidu";
}
getSignElement() {
return $("#content_left");
}
setSign() {
let container = this.getSignElement();
container.attr(this.SING_NAME, "true");
}
hasSign() {
let container = this.getSignElement();
return !!container.attr(this.SING_NAME);
}
}
let Baidu = (function () {
class Node {
constructor(obj) {
this.obj = obj;
this.isReady = false;
this.isDelay = false;
}
setReadyRun() {
this.isReady = true;
return this;
}
setDealyRun() {
this.isDelay = true;
return this;
}
isReadyRun() {
return this.isReady;
}
isDelayRun() {
return this.isDelay;
}
start() {
new this.obj().start();
}
execute() {
if (this.isReadyRun()) {
$().ready(() => {
this.start();
});
return;
}
if (this.isDelayRun()) {
setTimeout(() => {
this.start();
}, 0);
return;
}
this.start();
}
}
class Componse {
constructor() {
this.list = [];
}
add(node) {
this.list.push(node);
}
execute() {
for (let node of this.list) {
node.execute();
}
}
}
class Baidu extends Componse {
constructor() {
super();
}
add(obj) {
let node = new Node(obj);
super.add(node);
return this;
}
addReady(obj) {
let node = new Node(obj).setReadyRun();
super.add(node);
return this;
}
addDealy(obj) {
let node = new Node(obj).setDealyRun();
super.add(node);
return this;
}
addDelayAndReady(obj) {
this.addDealy(obj);
this.addReady(obj);
return this;
}
execute() {
super.execute();
}
}
return Baidu;
})();
class UrlEditor {
constructor(url) {
this.url = new URL(url);
}
getFinalUrl() {
return this.url.href;
}
hasParam(name) {
return this.url.searchParams.has(name);
}
getParamValue(name) {
return String(this.url.searchParams.get(name));
}
setParam(key, value) {
this.url.searchParams.set(key, value);
}
}
class Component {
constructor() {
this.list = [];
}
add(obj) {
this.list.push(obj);
}
execute() {
for (let obj of this.list) {
obj.execute();
}
}
}
class Docker {
createDocker() {
return $("<div>");
}
}
class Leaf extends Component {
constructor(obj) {
super();
this.obj = obj;
}
insert() {
this.obj.insertNode();
}
add(obj) {
super.add(obj);
}
execute() {
this.insert();
super.execute();
}
}
class Router {
getCurrentPagePathURL() {
return location.origin + location.pathname;
}
isRouterPage(routers) {
const currentRouterURL = this.getCurrentPagePathURL();
return routers.some((routerURL) => {
return routerURL === currentRouterURL;
});
}
addRoute(routers, factory) {
if (this.isRouterPage(routers)) {
factory.create();
}
}
}
class BaiduSearch {
constructor() {
this.DEFAULT_URL = "https://www.baidu.com/s?ie=utf-8";
this.URL = new UrlEditor(this.DEFAULT_URL);
}
addSearchKeyword(searchContent) {
searchContent = searchContent.trim();
this.URL.setParam("wd", searchContent);
return this;
}
openRandonNumber() {
let randomBase64Code = window.btoa(new Date().getTime()).replace(/=+/g, "");
return this;
}
addRN(rate) {
this.URL.setParam("rn", String(rate));
return this;
}
addPN(order) {
this.URL.setParam("pn", String(order));
return this;
}
addParam(key, value) {
this.URL.setParam(key, value);
return this;
}
addBaiduDeaultParam() {
let that = this;
let $inputs = $("#form>input");
$inputs.each(function (index, element) {
let $element = $(element);
let name = String($element.attr("name"));
let value = String($element.val());
if (name != "" && value != "") {
that.addParam(name, value);
}
});
this.addParam("tn", "baidu");
return this;
}
getFinalURL() {
return this.URL.getFinalUrl();
}
openWebWithNewWindow() {
let url = this.getFinalURL();
window.open(url);
}
openWebWithCurrentWindow() {
let url = this.getFinalURL();
location.href = url;
}
tiggerBaiduSumbit() {
let searchContent = String($(".bd-barbox-input").val()).trim();
if (searchContent.length > 0) {
$("#form #kw").attr("value", searchContent.trim());
$("#form").trigger("submit");
}
}
}
class SearchResultsFilter {
constructor() {
this.regulars = [
`[style]`,
`[tpl="b2b_straight"]`,
`[tpl="short_video_pc"]`,
`[tpl="trade_purchase"]`,
`[tpl="img_address"]`,
`[tpl="ads_b2c_universal_card"]`,
`[tpl="zp_exact_new"]`,
`[tpl="se_com_irregular_gallery"]`,
`[tpl="ask_doctor"]`,
`[tpl="med_qa"]`,
`[tpl^="timeliness"]`,
`[tpl^="sp_realtime"]`,
`[tpl="wenda_abstract_pc"]`,
`[tpl="jingyan_summary"]`,
`[tpl="se_st_single_video_zhanzhang"]`,
`[tpl="open_source_software]"`,
`[data-click*="safe:1|t:1"]`
];
}
getFilterGularExpress() {
let filterRegular = "div[tpl]";
filterRegular = this.regulars.reduce(function (prev, current) {
return prev + `:not(${current})`;
}, filterRegular);
return filterRegular;
}
removeInvalidItem(items) {
let filterRegular = this.getFilterGularExpress();
let $items = $(items);
$items = $items.filter(filterRegular);
return $items;
}
}
class SessionStorage {
constructor(key, value) {
this.key = key;
this.value = value;
}
hasStorage() {
return sessionStorage.getItem(this.key) === this.value;
}
storage() {
sessionStorage.setItem(this.key, this.value);
}
clear() {
sessionStorage.removeItem(this.key);
}
}
class StyleContent {
getStlyeForIndex() {
return INLINE_STYLE_INDEX;
}
getStyleForBase() {
return INLINE_STYLE_BASE;
}
getStyleForMenu() {
return INLINE_STYLE_MENU;
}
getStyleForSidebar() {
return INLINE_SIDEBAE;
}
getStyleForLayoutOneCenter() {
return INLINE_STYLE_ONE_CENTER;
}
getStyleForLayoutTwoCenter() {
return INLINE_STYLE_TWO_CENTER;
}
getStyleForLayoutThreeCenter() {
return INLINE_STYLE_THREE_CENTER;
}
}
class StyleControl {
constructor() {
this.GM = GM;
this.cache = "";
}
reset() {
this.cache = "";
}
addStyle() {
this.GM.addStyle(this.cache);
}
add(style) {
this.cache = this.cache.concat(style);
return this;
}
end() {
this.addStyle();
this.reset();
}
}
class SyncRequest {
constructor(dealer) {
this.GM = GM;
this.responseType = "json";
this.dealer = dealer;
}
deal(response) {
this.dealer.deal(response);
}
setResponseType(responseType) {
this.responseType = responseType;
return this;
}
request(requestURL) {
let that = this;
this.GM.xmlhttpRequest({
method: "GET",
url: requestURL,
timeout: 3000,
responseType: that.responseType,
headers: {
"User-Agent": navigator.userAgent,
"Cookie": document.cookie,
},
onload: (response) => {
if (response.status === 200 ||
response.status === 304) {
that.deal(response.response);
}
}
});
}
}
class OptionSelect extends OptionControl {
constructor(layoutConfig) {
super(layoutConfig.saveName, layoutConfig.defaultValue);
}
}
class PageLayoutOption extends OptionSelect {
constructor() {
super(LAYOUT_CONFIG);
}
getCurrentPageType() {
return Number(super.getOptionValue());
}
getName() {
return super.getOptionName();
}
setPageLayoutType(value) {
return super.setOption(value);
}
}
class SilderBarOption extends OptionSelect {
constructor() {
super(SILDER_BAR_CONFIG);
}
getCurrentMode() {
return Number(super.getOptionValue());
}
getName() {
return super.getOptionName();
}
setMode(value) {
return super.setOption(value);
}
}
class OptionSwitch extends OptionControl {
constructor(functionConfig) {
super(functionConfig.saveName, functionConfig.defaultSwitch);
this.functionName = functionConfig.functionName;
}
isEnable() {
return Boolean(super.getOptionValue());
}
enable() {
super.setOption(true);
}
disable() {
super.setOption(false);
}
getName() {
return super.getOptionName();
}
getFunctionName() {
return this.functionName;
}
}
class AutoNextPageSwitch extends OptionSwitch {
constructor() {
super(ADDITION_FUNCTION_CONFIGS.AutoNextPage);
}
}
class SideToolBarSwitch extends OptionSwitch {
constructor() {
super(ADDITION_FUNCTION_CONFIGS.SideToolBar);
}
}
let WallPaperModel;
(function (WallPaperModel) {
class Bing {
constructor() {
this.GM = GM;
this.BING_GM_NAME = "bing_images";
this.BING_DEFALUT_IMAGES = ["https://pic.imgdb.cn/item/5eca80bfc2a9a83be52d1cb0.jpg"];
this.BING_REMOTE_IMAGE_URL = `https://cn.bing.com/HPImageArchive.aspx?format=js&n=8&mkt=zh-CN`;
this.BING_HOSTNAME = `https://cn.bing.com`;
}
getDefaultImages() {
return this.BING_DEFALUT_IMAGES;
}
saveImagesToLocal(images) {
let key = this.BING_GM_NAME;
this.GM.setValue(key, images);
}
getImagesFromLocal() {
let key = this.BING_GM_NAME;
return this.GM.getValue(key) || this.getDefaultImages();
}
hasCacheLocalImage() {
let images = this.getImagesFromLocal();
return images.length > 1;
}
}
WallPaperModel.Bing = Bing;
})(WallPaperModel || (WallPaperModel = {}));
(function (WallPaperModel) {
class Images {
constructor(o) {
this.images1 = [
"http://img.netbian.com/file/2019/0808/7062756ab554ab172d31ae293d2fa9e6.jpg",
"https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1589899749&di=c016b13a5a98e2dbd6a207b8bb776580&src=http://pic1.win4000.com/wallpaper/2018-11-05/5bdfd64cbcd82.jpg",
"https://desk-fd.zol-img.com.cn/t_s1920x1080c5/g5/M00/09/04/ChMkJ14S2WmIcR4MAASTED6paWcAAwKOAIG18EABJMo577.jpg",
"https://desk-fd.zol-img.com.cn/t_s1920x1080c5/g5/M00/09/04/ChMkJ14S2UKIQ7V8AAHhgCbEWSkAAwKNwAT-XgAAeGY606.jpg",
"https://desk-fd.zol-img.com.cn/t_s2560x1440c5/g5/M00/09/04/ChMkJ14S2UqIAJhXAAZvffHvn_oAAwKNwD6CH8ABm-V325.jpg",
"https://desk-fd.zol-img.com.cn/t_s2560x1600c5/g5/M00/09/04/ChMkJl4S2W2INN3iACCh3pDxPQMAAwKOAKZtUsAIKH2841.jpg",
"https://desk-fd.zol-img.com.cn/t_s1920x1080c5/g5/M00/09/0D/ChMkJ1e2_KKIPLgPAAUyABcaCxEAAUkhANeazAABTIY478.jpg",
"https://desk-fd.zol-img.com.cn/t_s1920x1080c5/g5/M00/02/08/ChMkJ1bKzS-IMP1aAEMHk65qAm4AALI-QAAAAAAQwer218.jpg",
"https://desk-fd.zol-img.com.cn/t_s1920x1080c5/g5/M00/02/08/ChMkJlbKzTCIKFkcACIWcwMYvWsAALI-QDORlYAIhaL394.jpg",
"https://desk-fd.zol-img.com.cn/t_s1920x1080c5/g5/M00/02/08/ChMkJlbKzTGIEcieAFFa4NXfo20AALI-QEr_lIAUVr4406.jpg",
"https://desk-fd.zol-img.com.cn/t_s1920x1080c5/g5/M00/02/03/ChMkJlbKx2qIKB_ZAAKJbsI4qNMAALHzQFvTQ0AAomG519.jpg",
"https://desk-fd.zol-img.com.cn/t_s1920x1080c5/g4/M09/0F/01/ChMly12oJfuIDM0ZAAfuqk1g34AAAYKzgNEBzEAB-7C780.jpg",
];
this.images2 = [
"https://momentumdash.com/backgrounds/01.jpg",
"https://momentumdash.com/backgrounds/02.jpg",
"https://momentumdash.com/backgrounds/03.jpg",
"https://momentumdash.com/backgrounds/04.jpg",
"https://momentumdash.com/backgrounds/05.jpg",
"https://momentumdash.com/backgrounds/06.jpg",
"https://momentumdash.com/backgrounds/07.jpg",
"https://momentumdash.com/backgrounds/08.jpg",
"https://momentumdash.com/backgrounds/09.jpg",
"https://momentumdash.com/backgrounds/10.jpg",
"https://momentumdash.com/backgrounds/11.jpg",
"https://momentumdash.com/backgrounds/12.jpg",
"https://momentumdash.com/backgrounds/13.jpg",
];
this.o = o;
}
getImages() {
return this.o.getImages();
}
getRandomIndex(minNumber, maxNumber) {
return parseInt(Math.random() * (maxNumber - minNumber + 1) + minNumber, 10);
}
getMaxNumber(images) {
return images.length - 1;
}
getMinNumber() {
return 0;
}
getImageURL() {
let images = this.getImages();
let maxNumber = this.getMaxNumber(images);
let minNumber = this.getMinNumber();
let index = this.getRandomIndex(minNumber, maxNumber);
return images[index];
}
}
WallPaperModel.Images = Images;
})(WallPaperModel || (WallPaperModel = {}));
(function (WallPaperModel) {
class SaveRequestWallPaterBing extends WallPaperModel.Bing {
getAbsoluteImagesURL(images) {
let hostName = this.BING_HOSTNAME;
return images.map((image) => {
return new URL(image.url, hostName).href;
});
}
saveImagesToLocal(images) {
super.saveImagesToLocal(images);
}
deal(response) {
let images = this.getAbsoluteImagesURL(response.images);
this.saveImagesToLocal(images);
}
}
WallPaperModel.SaveRequestWallPaterBing = SaveRequestWallPaterBing;
})(WallPaperModel || (WallPaperModel = {}));
(function (WallPaperModel) {
class Tempalte {
constructor(config) {
this.config = config;
}
createImagePanelTemplate() {
let nameBackgroundPanel = this.config.NODE_BG_UL;
return `
<ul class="${nameBackgroundPanel}"></ul>
`;
}
createImageItemTemplate() {
let nameBackgroundItem = this.config.NODE_BG_LI;
return `
<li class="${nameBackgroundItem}"></li>
`;
}
createImageAttribute(imageURL) {
return `background-image: url("${imageURL}"); `;
}
createBingWallpaperNode(imageUrl) {
let $ul = $(this.createImagePanelTemplate());
let $li = $(this.createImageItemTemplate());
let styleValue = this.createImageAttribute(imageUrl);
$li.attr("style", styleValue);
$ul.append($li);
return $ul.html();
}
}
WallPaperModel.Tempalte = Tempalte;
})(WallPaperModel || (WallPaperModel = {}));
(function (WallPaperModel) {
class WallPaperBing extends WallPaperModel.Bing {
hasSessionStorage() {
let key = "wallpaper-bing";
let value = "true";
let session = new SessionStorage(key, value);
if (session.hasStorage()) {
return true;
}
else {
session.storage();
return false;
}
}
isNeedRequest() {
let isNotNeedRequest = this.hasSessionStorage() && this.hasCacheLocalImage();
return !isNotNeedRequest;
}
requestImagesFromRemoteBing() {
let syncRequest = new SyncRequest(new WallPaperModel.SaveRequestWallPaterBing());
syncRequest.request(this.BING_REMOTE_IMAGE_URL);
}
getImages() {
if (this.isNeedRequest()) {
this.requestImagesFromRemoteBing();
}
return super.getImagesFromLocal();
}
}
WallPaperModel.WallPaperBing = WallPaperBing;
})(WallPaperModel || (WallPaperModel = {}));
(function (WallPaperModel) {
class WallpagerConfig {
constructor() {
this.NODE_BG_UL = "bd-bg-ul";
this.NODE_BG_LI = "bd-bg-li";
this.NODE_BG_DISPLAY = "bd-display";
}
}
WallPaperModel.WallpagerConfig = WallpagerConfig;
})(WallPaperModel || (WallPaperModel = {}));
(function (WallPaperModel) {
class WallPaperMomentumdash {
constructor() {
this.GM = GM;
this.images = [
"https://momentumdash.com/backgrounds/01.jpg",
"https://momentumdash.com/backgrounds/02.jpg",
"https://momentumdash.com/backgrounds/03.jpg",
"https://momentumdash.com/backgrounds/04.jpg",
"https://momentumdash.com/backgrounds/05.jpg",
"https://momentumdash.com/backgrounds/06.jpg",
"https://momentumdash.com/backgrounds/07.jpg",
"https://momentumdash.com/backgrounds/08.jpg",
"https://momentumdash.com/backgrounds/09.jpg",
"https://momentumdash.com/backgrounds/10.jpg",
"https://momentumdash.com/backgrounds/11.jpg",
"https://momentumdash.com/backgrounds/12.jpg",
"https://momentumdash.com/backgrounds/13.jpg",
];
}
request(imageURL) {
let requestURL = imageURL;
this.GM.xmlhttpRequest({
method: "GET",
url: requestURL,
timeout: 3000,
responseType: "json",
});
}
isPreloadAllImages() {
let key = "wallpaper-Momentumdash";
let value = "true";
let session = new SessionStorage(key, value);
if (session.hasStorage()) {
return true;
}
else {
session.storage();
return false;
}
}
preloadAllImages() {
for (const imageURL of this.images) {
this.request(imageURL);
}
}
getImages() {
return this.images;
}
}
})(WallPaperModel || (WallPaperModel = {}));
let SearchFormModel;
(function (SearchFormModel) {
class Action {
constructor(Selector) {
this.Selecor = Selector;
}
getInputValue() {
return this.Selecor.$input.val();
}
}
SearchFormModel.Action = Action;
class ActionAssociateDockerShow extends Action {
constructor(Selector) {
super(Selector);
}
execute(event) {
let $selector = this.Selecor.$associateDocker;
if ($selector.hasClass("bd-none")) {
$selector.removeClass("bd-none");
}
this.Selecor.$associateDocker.show();
}
}
SearchFormModel.ActionAssociateDockerShow = ActionAssociateDockerShow;
class ActionAssociateDockerHide extends Action {
constructor(Selector) {
super(Selector);
}
execute(event) {
let $associateDocker = this.Selecor.$associateDocker;
$associateDocker.css("opacity", "0");
setTimeout(() => {
$associateDocker.hide().css("opacity", "1");
}, 200);
}
}
SearchFormModel.ActionAssociateDockerHide = ActionAssociateDockerHide;
class ActionAssociateSimilar extends Action {
constructor(Selector) {
super(Selector);
this.Associate = new AssociateManager(new SearchFormModel.UpdateAssociateItem(Selector));
}
execute(event) {
let inputValue = this.Selecor.$input.val();
this.Associate.search(inputValue);
}
}
SearchFormModel.ActionAssociateSimilar = ActionAssociateSimilar;
class ActionSearchSelf extends Action {
constructor(Selector) {
super(Selector);
}
execute(event) {
let inputValue = String(this.getInputValue()).trim();
if (inputValue != "") {
new BaiduSearch().addSearchKeyword(inputValue)
.addBaiduDeaultParam()
.openWebWithCurrentWindow();
}
}
}
SearchFormModel.ActionSearchSelf = ActionSearchSelf;
class ActionSearchBlank extends Action {
constructor(Selector) {
super(Selector);
}
execute(event) {
let inputValue = this.getInputValue().trim();
if (inputValue != "") {
new BaiduSearch().addSearchKeyword(inputValue)
.addBaiduDeaultParam()
.openWebWithCurrentWindow();
}
}
}
SearchFormModel.ActionSearchBlank = ActionSearchBlank;
class ActionAssociateItemScrollUp extends Action {
constructor(Selector) {
super(Selector);
this.ScrollAssociateItem = new SearchFormModel.ScrollAssociateItem(Selector);
}
execute(event) {
this.ScrollAssociateItem.scrollUp();
}
}
SearchFormModel.ActionAssociateItemScrollUp = ActionAssociateItemScrollUp;
class ActionAssociateItemScrollDown extends Action {
constructor(Selector) {
super(Selector);
this.ScrollAssociateItem = new SearchFormModel.ScrollAssociateItem(Selector);
}
execute(event) {
this.ScrollAssociateItem.scrollDown();
}
}
SearchFormModel.ActionAssociateItemScrollDown = ActionAssociateItemScrollDown;
class ActionAssociatePanelHover extends Action {
constructor(Selector) {
super(Selector);
this.ScrollAssociateItem = new SearchFormModel.ScrollAssociateItem(Selector);
}
execute(event) {
this.ScrollAssociateItem.scrollHover();
}
}
SearchFormModel.ActionAssociatePanelHover = ActionAssociatePanelHover;
class ActionSetClickSelectedToInput extends Action {
constructor(Selector) {
super(Selector);
this.ScrollAssociateItem = new SearchFormModel.ScrollAssociateItem(Selector);
}
execute(event) {
this.ScrollAssociateItem.scrollHover();
}
}
SearchFormModel.ActionSetClickSelectedToInput = ActionSetClickSelectedToInput;
})(SearchFormModel || (SearchFormModel = {}));
(function (SearchFormModel) {
class Assistant {
constructor() {
this.SearchURL = new SearchFormModel.SearchURL();
this.Element = SearchFormModel.SimpleElement.getInstance();
}
setInputValueFromURL() {
let searchValue = this.SearchURL.getSearchValue();
$(this.Element.getSelectorBarboxInput()).val(searchValue);
}
setInputFocus() {
$(this.Element.getSelectorBarboxInput()).focus();
}
}
SearchFormModel.Assistant = Assistant;
})(SearchFormModel || (SearchFormModel = {}));
(function (SearchFormModel) {
class CheckElement {
constructor() {
this.Element = SearchFormModel.SimpleElement.getInstance();
}
hasSearchBox() {
return $(this.Element.getSelectorBdContainer()).length > 0;
}
}
SearchFormModel.CheckElement = CheckElement;
})(SearchFormModel || (SearchFormModel = {}));
(function (SearchFormModel) {
class Count {
constructor() {
this.index = -1;
}
getUpperLimit(size) {
return size - 1;
}
getLowerLimit() {
return 0;
}
add(size) {
let index = this.get();
const UPPER_LIMIT = this.getUpperLimit(size);
const LOWER_LIMIT = this.getLowerLimit();
const isOverUpperLimit = (++index) > UPPER_LIMIT;
if (isOverUpperLimit) {
index = LOWER_LIMIT;
}
this.set(index);
return this;
}
sub(size) {
let index = this.get();
const UPPER_LIMIT = this.getUpperLimit(size);
const LOWER_LIMIT = this.getLowerLimit();
const isLessLowerLimit = (--index) < LOWER_LIMIT;
if (isLessLowerLimit) {
index = UPPER_LIMIT;
}
this.set(index);
return this;
}
set(index) {
this.index = index;
return this;
}
get() {
return this.index;
}
reset() {
this.index = -1;
}
}
SearchFormModel.Count = Count;
class SimpleCount {
static getInstance() {
if (!this.Count) {
this.Count = new Count();
}
return this.Count;
}
;
}
SearchFormModel.SimpleCount = SimpleCount;
})(SearchFormModel || (SearchFormModel = {}));
(function (SearchFormModel) {
class Docker {
createDocker(template) {
return $("<div>").append(template);
}
}
SearchFormModel.Docker = Docker;
})(SearchFormModel || (SearchFormModel = {}));
(function (SearchFormModel) {
class Element {
constructor() {
this.preClass = ".";
this.preId = "#";
this.bd_container = "bd-container-search";
this.bd_docker = "bd-docker";
this.barbox_panel = "bd-barbox-ul";
this.barbox_item = "bd-barbox-li";
this.barbox_center = "bd-barbox-center";
this.barbox_input = "bd-barbox-input";
this.barbox_button = "bd-barbox-button";
this.associate_panel = "bd-associate-ul";
this.associate_item = "bd-associate-li";
this.associate_selected = "bd-associate-selected";
}
getClass(name) {
return this.preClass + name;
}
getId(name) {
return this.preId + name;
}
getNameBdContainer() {
return this.bd_container;
}
getNameBdDocker() {
return this.bd_docker;
}
getNameBarboxPanel() {
return this.barbox_panel;
}
getNameBarboxItem() {
return this.barbox_item;
}
getNameBarboxCenter() {
return this.barbox_center;
}
getNameBarboxInput() {
return this.barbox_input;
}
getNameBarboxButton() {
return this.barbox_button;
}
getNameAssociatePanel() {
return this.associate_panel;
}
getNameAssociateItem() {
return this.associate_item;
}
getNameAssociateSelected() {
return this.associate_selected;
}
getSelectorBdContainer() {
return this.getClass(this.getNameBdContainer());
}
getSelectorBdDocker() {
return this.getClass(this.getNameBdDocker());
}
getSelectorBarboxPanel() {
return this.getClass(this.getNameBarboxPanel());
}
getSelectorBarboxItem() {
return this.getClass(this.getNameBarboxItem());
}
getSelectorBarboxInput() {
return this.getClass(this.getNameBarboxInput());
}
getSelectorBarboxButton() {
return this.getClass(this.getNameBarboxButton());
}
getSelectorAssociatePanel() {
return this.getClass(this.getNameAssociatePanel());
}
getSelectorAssociateItem() {
return this.getClass(this.getNameAssociateItem());
}
getSelectorAssociateSelected() {
return this.getClass(this.getNameAssociateSelected());
}
}
SearchFormModel.Element = Element;
class SimpleElement {
static getInstance() {
if (!this.instance) {
this.instance = new Element();
}
return this.instance;
}
;
}
SearchFormModel.SimpleElement = SimpleElement;
})(SearchFormModel || (SearchFormModel = {}));
(function (SearchFormModel) {
class Event {
constructor(Selector) {
this.Selecor = Selector;
}
isKeyDown(keyCode) {
return keyCode === 40;
}
isKeyUp(keyCode) {
return keyCode === 38;
}
isKeyEnter(keyCode) {
return keyCode === 13;
}
}
SearchFormModel.Event = Event;
class EventInputFocus extends Event {
constructor(Selector) {
super(Selector);
}
listen(action) {
this.Selecor.$input.on("focus", (event) => {
action.execute(event);
return false;
});
}
}
SearchFormModel.EventInputFocus = EventInputFocus;
class EventInputBlur extends Event {
constructor(Selector) {
super(Selector);
}
listen(action) {
this.Selecor.$input.on("blur", (event) => {
action.execute(event);
return false;
});
}
}
SearchFormModel.EventInputBlur = EventInputBlur;
class EventInputKeyDownWithDown extends Event {
constructor(Selector) {
super(Selector);
}
listen(action) {
this.Selecor.$input.on("keydown", (event) => {
let keyCode = event.keyCode || event.which || event.charCode;
if (this.isKeyDown(keyCode)) {
action.execute(event);
return false;
}
});
}
}
SearchFormModel.EventInputKeyDownWithDown = EventInputKeyDownWithDown;
class EventInputKeyDownWithUp extends Event {
constructor(Selector) {
super(Selector);
}
listen(action) {
this.Selecor.$input.on("keydown", (event) => {
let keyCode = event.keyCode || event.which || event.charCode;
if (this.isKeyUp(keyCode)) {
action.execute(event);
return false;
}
});
}
}
SearchFormModel.EventInputKeyDownWithUp = EventInputKeyDownWithUp;
class EventInputKeyDownWithEnter extends Event {
constructor(Selector) {
super(Selector);
}
listen(action) {
this.Selecor.$input.on("keydown", (event) => {
let keyCode = event.keyCode || event.which || event.charCode;
if (this.isKeyEnter(keyCode)) {
action.execute(event);
return false;
}
});
}
}
SearchFormModel.EventInputKeyDownWithEnter = EventInputKeyDownWithEnter;
class EventInputChange extends Event {
constructor(Selector) {
super(Selector);
}
listen(action) {
this.Selecor.$input.off("input propertychange").on("input propertychange", (event) => {
action.execute(event);
return false;
});
}
}
SearchFormModel.EventInputChange = EventInputChange;
class EventButtonClick extends Event {
constructor(Selector) {
super(Selector);
}
listen(action) {
this.Selecor.$button.on("click", (event) => {
action.execute(event);
return false;
});
}
}
SearchFormModel.EventButtonClick = EventButtonClick;
class EventAssociatePanelMouseMove extends Event {
constructor(Selector) {
super(Selector);
}
listen(action) {
this.Selecor.$associatePanel.on("mousemove", (event) => {
action.execute(event);
return false;
});
}
}
SearchFormModel.EventAssociatePanelMouseMove = EventAssociatePanelMouseMove;
class EventAssociatePanelMouseEnter extends Event {
constructor(Selector) {
super(Selector);
}
listen(action) {
this.Selecor.$associatePanel.on("mouseenter", (event) => {
action.execute(event);
return false;
});
}
}
SearchFormModel.EventAssociatePanelMouseEnter = EventAssociatePanelMouseEnter;
class EventAssociatePanelClick extends Event {
constructor(Selector) {
super(Selector);
}
listen(action) {
this.Selecor.$associatePanel.on("click", (event) => {
action.execute(event);
return false;
});
}
}
SearchFormModel.EventAssociatePanelClick = EventAssociatePanelClick;
})(SearchFormModel || (SearchFormModel = {}));
(function (SearchFormModel) {
class ScrollAssociateItem {
constructor(Selector) {
this.Count = SearchFormModel.SimpleCount.getInstance();
this.Element = SearchFormModel.SimpleElement.getInstance();
this.Selector = Selector;
}
search(content) {
let baiduSearch = new BaiduSearch();
baiduSearch.addSearchKeyword(content)
.addBaiduDeaultParam()
.openWebWithCurrentWindow();
}
getItems() {
return this.Selector.$associatePanel.find(this.Element.getSelectorAssociateItem());
}
getItemsSize(items) {
return !!items ? items.length : 0;
}
setIputValue(associateValue) {
this.Selector.$input.val(associateValue);
}
ScrollItem($items) {
let index = this.Count.get();
let setClassNameWithScorll = () => {
let nameItemSelected = this.Element.getNameAssociateSelected();
$items.removeClass(nameItemSelected);
$items.eq(index).addClass(nameItemSelected);
};
let setInputValue = () => {
let associateValue = $items.eq(index).attr("value");
this.setIputValue(associateValue);
};
setClassNameWithScorll();
setInputValue();
}
scrollUp() {
let items = this.getItems();
let size = this.getItemsSize(items);
this.Count.sub(size);
this.ScrollItem(items);
}
scrollDown() {
let items = this.getItems();
let size = this.getItemsSize(items);
this.Count.add(size);
this.ScrollItem(items);
}
scrollHover_backup() {
let $items = this.getItems();
let nameItemHover = this.Element.getNameAssociateSelected();
let lengthItems = $items.length;
let isEmptyItems = lengthItems <= 0;
if (isEmptyItems)
return;
let setClassNameWithHover = (event) => {
let target = event.target;
$items.removeClass(nameItemHover);
if (target.nodeName.toUpperCase() == "LI") {
target.classList.add(nameItemHover);
}
if (target.nodeName.toUpperCase() == "SPAN") {
target.parentNode.classList.add(nameItemHover);
}
};
let setInputValue = () => {
$items.each((index, item) => {
let $item = $(item);
if ($item.hasClass(nameItemHover)) {
let itemValue = $item.attr("value");
this.setIputValue(itemValue);
this.Count.set(index);
}
});
};
setClassNameWithHover(event);
setInputValue();
}
scrollHover() {
let that = this;
let $items = this.getItems();
let nameItemHover = this.Element.getNameAssociateSelected();
let lengthItems = $items.length;
let isEmptyItems = lengthItems <= 0;
if (isEmptyItems)
return;
$items.off("mouseleave").on("mouseleave", function () {
let $item = $(this);
$item.removeClass(nameItemHover);
});
$items.off("mouseenter").on("mouseenter", function () {
let $item = $(this);
$items.removeClass(nameItemHover);
$item.addClass(nameItemHover);
});
$items.off("click").on("click", function () {
let $item = $(this);
let searchContent = String($item.attr("value"));
that.search(searchContent.trim());
});
}
}
SearchFormModel.ScrollAssociateItem = ScrollAssociateItem;
})(SearchFormModel || (SearchFormModel = {}));
(function (SearchFormModel) {
class SearchURL {
getSearchValue() {
let currentURL = new URL(location.href);
let searchValue = currentURL.searchParams.get("wd");
return searchValue !== null ? decodeURIComponent(searchValue) : "";
}
}
SearchFormModel.SearchURL = SearchURL;
})(SearchFormModel || (SearchFormModel = {}));
(function (SearchFormModel) {
class Selector {
constructor($docker) {
this.Element = new SearchFormModel.Element();
this.$docker = $docker;
this.$input = this.search(this.Element.getSelectorBarboxInput());
this.$button = this.search(this.Element.getSelectorBarboxButton());
this.$associateDocker = this.search(this.Element.getSelectorBdDocker()).eq(1);
this.$associatePanel = this.search(this.Element.getSelectorAssociatePanel());
}
search(selectorName) {
return this.$docker.find(selectorName);
}
}
SearchFormModel.Selector = Selector;
})(SearchFormModel || (SearchFormModel = {}));
(function (SearchFormModel) {
class Template {
constructor() {
this.Element = SearchFormModel.SimpleElement.getInstance();
}
}
class TemplateSearchBox extends Template {
getTempalteSearchBar() {
let nameBarboxPanel = this.Element.getNameBarboxPanel();
let nameBarboxItem = this.Element.getNameBarboxItem();
let nameBarboxCenter = this.Element.getNameBarboxCenter();
let nameBarboxInput = this.Element.getNameBarboxInput();
let nameBarboxButton = this.Element.getNameBarboxButton();
return `
<div class="${nameBarboxPanel}">
<div class="${nameBarboxCenter}">
<div class="${nameBarboxItem}"><input class="${nameBarboxInput}" type="text" maxlength="255" autocomplete="off"></div>
<div class="${nameBarboxItem}"><button class="${nameBarboxButton}">百度一下</button></div>
</div>
</div>
`;
}
getTempalteAssociatePanel() {
let nameAssociatePanel = this.Element.getNameAssociatePanel();
return `
<ul class="${nameAssociatePanel}"></ul>
`;
}
create() {
let nameBdContainer = this.Element.getNameBdContainer();
let nameBdDocker = this.Element.getNameBdDocker();
return `
<div class="${nameBdContainer}">
<div class="${nameBdDocker}">${this.getTempalteSearchBar()}</div>
<div class="${nameBdDocker} bd-none">${this.getTempalteAssociatePanel()}</div>
</div>
`;
}
}
SearchFormModel.TemplateSearchBox = TemplateSearchBox;
class TemplateAssociateItem extends Template {
create() {
let nameAssociateItem = this.Element.getNameAssociateItem();
return `
<li class="${nameAssociateItem}"></li>
`;
}
}
SearchFormModel.TemplateAssociateItem = TemplateAssociateItem;
})(SearchFormModel || (SearchFormModel = {}));
(function (SearchFormModel) {
class UpdateAssociateItem {
constructor(Selector) {
this.Count = SearchFormModel.SimpleCount.getInstance();
this.TemplateAssociateItem = new SearchFormModel.TemplateAssociateItem();
this.Selector = Selector;
}
getCurrentInputVaule() {
return this.Selector.$input.val().trim();
}
createTempateItem(inputValue, itemValue) {
let pathValue = itemValue.replace(inputValue, "");
let templateItem = this.TemplateAssociateItem.create();
let $item = $(templateItem);
$item.attr("value", itemValue);
$item.html(`<span>${itemValue}</span>`);
return $item.prop("outerHTML");
}
combineItemsTempate(items) {
let template = "";
let inputValue = this.getCurrentInputVaule();
items.forEach((itemValue) => {
if (itemValue === "") {
template += "";
}
else {
template += this.createTempateItem(inputValue, itemValue);
}
});
return template;
}
isNotEmptyItems(items) {
return !!items;
}
clearAssoicateOldItems() {
this.Selector.$associatePanel.empty();
}
resetCount() {
this.Count.reset();
}
insertItemsToPanel(items) {
let itemsTemplate = this.combineItemsTempate(items);
this.Selector.$associatePanel.append(itemsTemplate);
}
update(items) {
this.clearAssoicateOldItems();
this.resetCount();
if (this.isNotEmptyItems(items)) {
this.insertItemsToPanel(items);
}
}
}
SearchFormModel.UpdateAssociateItem = UpdateAssociateItem;
})(SearchFormModel || (SearchFormModel = {}));
let MenuModel;
(function (MenuModel) {
MenuModel.MenuConfig = {
DISABLE_NAME: "bd-none",
CUSTOM_BUTTON_NAME: "bd-menu-btn",
CUSTOM_DETIALS_PANEL_NAME: "bd-menu-detilas",
OPTION_SELECT_NAME: "bd-page-select",
OPTION_SWITCH_NAME: "bd-page-switch",
OPTION_SAVE_NAME: "bd_menu_save",
OPTION_SILDER_BAR_TAG_NAME: "bd-page-silderBar",
};
})(MenuModel || (MenuModel = {}));
(function (MenuModel) {
class MenuData {
constructor() {
this.MenuConfig = MenuModel.MenuConfig;
}
getCurrentPageSelectLayout() {
return 1;
}
}
MenuModel.MenuData = MenuData;
})(MenuModel || (MenuModel = {}));
(function (MenuModel) {
class MenuElement {
constructor() {
this.Template = new MenuModel.MenuTemplate();
this.PageLayoutOption = new PageLayoutOption();
this.SilderBarOption = new SilderBarOption();
}
getSwitchContent(showContent, o) {
return this.Template.getContentFunctionSwitch(showContent, o.isEnable(), o.getFunctionName());
}
getMenuPageSelectContent() {
let currentType = this.PageLayoutOption.getCurrentPageType();
let content = "";
content += "<ol>页面选择";
content += this.Template.getContentPageSelect("普通页面", LAYOUT_TYPE.General, currentType);
content += this.Template.getContentPageSelect("单页居中", LAYOUT_TYPE.OneCenter, currentType);
content += this.Template.getContentPageSelect("双页居中", LAYOUT_TYPE.TwoCenter, currentType);
content += this.Template.getContentPageSelect("三页居中", LAYOUT_TYPE.ThreeCenter, currentType);
content += "</ol>";
return content;
}
getMenuPageFunctionSwitchContent() {
let content = "";
content += "<ol>功能选择";
content += this.getSwitchContent("自动下一页", new AutoNextPageSwitch());
content += this.getSwitchContent("开启侧边栏", new SideToolBarSwitch());
content += "</ol>";
return content;
}
getMenuSaveButtonConent(saveButtonName) {
let content = "";
content += "<ol>";
content += `<input id="${saveButtonName}" type = "button" value = "保存" >`;
content += "</ol>";
return content;
}
getMenuCustomButtonHTML(buttonName) {
return `<a id=${buttonName}>自定义</a>`;
}
getMenuPageSliderBar() {
let currentMode = this.SilderBarOption.getCurrentMode();
let content = "";
content += "<ol>页面选择";
content += this.Template.getContentSilderBar("自动", SILTER_BAR_MODE.auto, currentMode);
content += this.Template.getContentSilderBar("显示", SILTER_BAR_MODE.show, currentMode);
content += this.Template.getContentSilderBar("隐藏", SILTER_BAR_MODE.hidden, currentMode);
content += "</ol>";
return content;
}
getMenuDetialPanelHTML(detialPanelName, saveButtonName) {
return `<div id="${detialPanelName}">
<div class="bt-menu-piece">
${this.getMenuPageSelectContent()}
${this.getMenuPageFunctionSwitchContent()}
${this.getMenuSaveButtonConent(saveButtonName)}
</div>
</div>`;
}
}
MenuModel.MenuElement = MenuElement;
})(MenuModel || (MenuModel = {}));
(function (MenuModel) {
class MenuEvent {
constructor() {
this.MenuConfig = MenuModel.MenuConfig;
this.UserConfigManager = new UserConfigManager();
}
refreshWeb() {
location.href = location.href;
}
saveUserConfig() {
this.UserConfigManager.savePageLayoutSelected();
this.UserConfigManager.saveAdditionFuction();
this.refreshWeb();
}
bindSaveEvent() {
let saveID = "#" + this.MenuConfig.OPTION_SAVE_NAME;
let $save = $(saveID);
$save.off("click").on("click", this, () => {
$save.off("click");
this.saveUserConfig();
return false;
});
}
bindCustonEvent() {
let customButtonID = "#" + this.MenuConfig.CUSTOM_BUTTON_NAME;
let detialsPanelID = "#" + this.MenuConfig.CUSTOM_DETIALS_PANEL_NAME;
let $customButton = $(customButtonID);
let $detialsPanel = $(detialsPanelID);
let hiddenName = this.MenuConfig.DISABLE_NAME;
$customButton.off("click").on("click", (e) => {
$detialsPanel.toggleClass(hiddenName);
return false;
});
}
hideDetailPanel() {
let detialsPanelID = "#" + this.MenuConfig.CUSTOM_DETIALS_PANEL_NAME;
let $detialsPanel = $(detialsPanelID);
let hiddenName = this.MenuConfig.DISABLE_NAME;
$detialsPanel.addClass(hiddenName);
}
blurClickHideDetailPanel() {
let detialsPanelID = "#" + this.MenuConfig.CUSTOM_DETIALS_PANEL_NAME;
let rule = `:not(${detialsPanelID})`;
$("#container").off("click").on('click', rule, () => {
this.hideDetailPanel();
});
}
}
MenuModel.MenuEvent = MenuEvent;
class UserConfigManager {
constructor() {
this.MenuConfig = MenuModel.MenuConfig;
this.PageLayoutOption = new PageLayoutOption();
this.AutoNextPageSwitch = new AutoNextPageSwitch();
this.SideToolBarSwitch = new SideToolBarSwitch();
}
savePageLayoutSelected() {
let that = this;
let containerRule = `#${this.MenuConfig.CUSTOM_DETIALS_PANEL_NAME}`;
let radioRule = `input[name=${this.MenuConfig.OPTION_SELECT_NAME}]`;
let $radios = $(containerRule).find(radioRule);
$radios.each(function (index, element) {
let $radio = $(this);
if ($radio.prop('checked')) {
let option = Number($radio.attr("value"));
switch (option) {
case LAYOUT_TYPE.General:
that.PageLayoutOption.setPageLayoutType(LAYOUT_TYPE.General);
break;
case LAYOUT_TYPE.OneCenter:
that.PageLayoutOption.setPageLayoutType(LAYOUT_TYPE.OneCenter);
break;
case LAYOUT_TYPE.TwoCenter:
that.PageLayoutOption.setPageLayoutType(LAYOUT_TYPE.TwoCenter);
break;
case LAYOUT_TYPE.ThreeCenter:
that.PageLayoutOption.setPageLayoutType(LAYOUT_TYPE.ThreeCenter);
break;
default:
that.PageLayoutOption.setPageLayoutType(LAYOUT_TYPE.General);
break;
}
return;
}
});
}
saveAdditionFuction() {
let that = this;
let containerRule = `#${this.MenuConfig.CUSTOM_DETIALS_PANEL_NAME}`;
let switchRule = `input[name=${this.MenuConfig.OPTION_SWITCH_NAME}]`;
let $switchs = $(containerRule).find(switchRule);
$switchs.each(function (index, element) {
let $selector = $(this);
let functionName = Number($selector.attr("value"));
if (functionName == ADDITION_FUNCTION.AutoNextPage) {
if ($selector.prop('checked')) {
that.AutoNextPageSwitch.enable();
}
else {
that.AutoNextPageSwitch.disable();
}
}
if (functionName == ADDITION_FUNCTION.SideToolBar) {
if ($selector.prop('checked')) {
that.SideToolBarSwitch.enable();
}
else {
that.SideToolBarSwitch.disable();
}
}
});
}
}
MenuModel.UserConfigManager = UserConfigManager;
})(MenuModel || (MenuModel = {}));
(function (MenuModel) {
class MenuTemplate {
constructor() {
this.MenuConfig = MenuModel.MenuConfig;
}
getContentPageSelect(content, layoutType, currentlayoutType) {
let checked = layoutType === currentlayoutType ? "checked" : "";
return `<li><input type="radio" name="${this.MenuConfig.OPTION_SELECT_NAME}" value="${layoutType}" ${checked}>${content}</li>`;
}
getContentFunctionSwitch(showContent, isEnable, additionFuntionName) {
let checked = isEnable ? "checked" : "";
return `<li><input type="checkbox" name="${this.MenuConfig.OPTION_SWITCH_NAME}" value="${additionFuntionName}" ${checked}>${showContent}</li>`;
}
getContentSilderBar(showText, mode, currentMode) {
let checked = (mode === currentMode) ? "checked" : "";
return `<li><input type="radio" name="${this.MenuConfig.OPTION_SILDER_BAR_TAG_NAME}" value="${mode}" ${checked}>${showText}</li>`;
}
}
MenuModel.MenuTemplate = MenuTemplate;
})(MenuModel || (MenuModel = {}));
let SearchResult;
(function (SearchResult) {
class Cache {
constructor() {
this.caches = [];
}
hasCache() {
return (this.caches.length > 0) ? true : false;
}
getCache() {
return this.caches.shift();
}
add(content) {
this.caches.push(content);
}
}
SearchResult.Cache = Cache;
})(SearchResult || (SearchResult = {}));
(function (SearchResult) {
SearchResult.Configs = {
tplBlackLists: [
"med_qa",
"bjh_addressing",
"recommend_list",
"ads_b2c_universal_card",
"sp_hot_sale",
"b2b_straight",
"b2b_factory2",
"vmp_zxenterprise_new",
"short_video",
]
};
})(SearchResult || (SearchResult = {}));
(function (SearchResult) {
class Fetch {
constructor() {
this.configs = SearchResult.Configs;
this.Cache = new SearchResult.Cache();
this.BaiduUrl = new UrlEditor(location.href);
this.count = 0;
this.request();
}
getNextPageURL() {
this.Search = new BaiduSearch();
this.Search.addSearchKeyword(this.BaiduUrl.getParamValue("wd"));
this.Search.addPN(this.count);
this.count += 30;
this.Search.addRN(30);
return this.Search.getFinalURL();
}
request() {
let url = this.getNextPageURL();
GM.xmlhttpRequest({
method: "GET",
url: url,
timeout: 3000,
responseType: "text",
headers: {
"User-Agent": navigator.userAgent,
"Cookie": document.cookie,
},
onload: (response) => {
if (response.status === 200 ||
response.status === 304) {
this.Cache.add(response.responseText);
}
},
onerror: (response) => {
console.error(response);
}
});
}
run() {
this.request();
if (this.Cache.hasCache()) {
return this.Cache.getCache();
}
else {
return "";
}
}
}
SearchResult.Fetch = Fetch;
})(SearchResult || (SearchResult = {}));
(function (SearchResult) {
class Filter {
constructor() {
this.config = SearchResult.Configs;
}
isAds(item) {
let id = item.attr("id");
if (id == "1") {
let items = $(item).find(".se_st_footer>a");
for (let i = 0, item; item = items[i++];) {
if ($(item).text() == "广告") {
return true;
}
}
}
return false;
}
isDryTpl(item) {
let tplCurrentContent = item.attr("tpl");
for (let tplBlackContent of this.config.tplBlackLists) {
if (tplBlackContent === tplCurrentContent) {
return true;
}
}
return false;
}
isWhiteItem(item) {
let isRemove = false;
if (!isRemove) {
isRemove = this.isAds(item);
}
if (!isRemove) {
isRemove = this.isDryTpl(item);
}
return isRemove ? false : true;
}
RemoveDryItem(items) {
let temp = [];
for (let i = 0, item; item = items[i++];) {
let $item = $(item);
let isNormal = this.isWhiteItem($item);
if (!isNormal) {
$item.remove();
continue;
}
temp.push(item);
}
return $(temp);
}
run(items) {
return this.RemoveDryItem(items);
}
}
SearchResult.Filter = Filter;
})(SearchResult || (SearchResult = {}));
(function (SearchResult) {
class Manager {
constructor() {
this.Filter = new SearchResult.Filter();
this.Fetch = new SearchResult.Fetch();
}
filterInvalidSearchResult(items) {
return this.Filter.run(items);
}
getCurrentPageSerachResult() {
let items = $("#content_left>div[id]");
return this.filterInvalidSearchResult(items);
}
getNextPageSearchResult() {
this.Fetch.run();
}
run() {
console.log("SearchResultManager");
this.getNextPageSearchResult();
}
}
SearchResult.Manager = Manager;
})(SearchResult || (SearchResult = {}));
let SideToolBarModel;
(function (SideToolBarModel) {
SideToolBarModel.Configs = {
SIDEBAR_NAME: "bd_sidebar",
};
})(SideToolBarModel || (SideToolBarModel = {}));
(function (SideToolBarModel) {
class Element {
constructor() {
this.Configs = SideToolBarModel.Configs;
this.SIDEBAR_TOOLBAR_ITEMS = SIDEBAR_TOOLBAR_ITEMS;
}
getSiderbarItemsContent() {
let content = "";
for (let [name, value] of Object.entries(this.SIDEBAR_TOOLBAR_ITEMS)) {
content += `<li value=${value}>${name}</li>`;
}
return content;
}
getContainerHTML() {
return `
<div id="${this.Configs.SIDEBAR_NAME}">
</div>
`;
}
getItemsHTML() {
return `
<ol>
${this.getSiderbarItemsContent()}
</ol>
`;
}
getSignHTML() {
return `<div class="bd_siderbar_sign">
<div class="box">
<div class="chevron"></div>
<div class="chevron"></div>
<div class="chevron"></div>
</div>
</div>`;
}
}
SideToolBarModel.Element = Element;
})(SideToolBarModel || (SideToolBarModel = {}));
(function (SideToolBarModel) {
class SideToolBar {
constructor() {
this.Element = new SideToolBarModel.Element();
}
useThirdSearch(event) {
let $target = $(event.target);
let templateURL = String($target.attr("value"));
let searchContent = new UrlEditor(location.href).getParamValue("wd").trim();
searchContent = decodeURIComponent(searchContent);
let finalURL = templateURL.replace("%s", encodeURIComponent(searchContent));
location.href = finalURL;
}
bindClickEvent($selector) {
$selector.off("click").on("click", "li", (event) => {
this.useThirdSearch(event);
return false;
});
}
getSideToolBar() {
let containerHTML = this.Element.getContainerHTML();
let itemsHTML = this.Element.getItemsHTML();
let $container = $(containerHTML);
let $items = $(itemsHTML);
$container.append($items);
this.bindClickEvent($container);
return $container;
}
}
SideToolBarModel.SideToolBar = SideToolBar;
})(SideToolBarModel || (SideToolBarModel = {}));
class IndexPageInjectStyles {
constructor() {
this.StyleContent = new StyleContent();
}
construct() {
}
start() {
let style = new StyleControl();
style.add(this.StyleContent.getStlyeForIndex());
style.end();
}
}
class ResultPageInjectStyles {
constructor() {
this.StyleContent = new StyleContent();
this.PageLayoutOption = new PageLayoutOption();
}
start() {
let style = new StyleControl();
let layoutType = this.PageLayoutOption.getCurrentPageType();
style.add(this.StyleContent.getStyleForBase());
style.add(this.StyleContent.getStyleForMenu());
style.add(this.StyleContent.getStyleForSidebar());
switch (layoutType) {
case LAYOUT_TYPE.OneCenter:
style.add(this.StyleContent.getStyleForLayoutOneCenter());
break;
case LAYOUT_TYPE.TwoCenter:
style.add(this.StyleContent.getStyleForLayoutTwoCenter());
break;
case LAYOUT_TYPE.ThreeCenter:
style.add(this.StyleContent.getStyleForLayoutThreeCenter());
break;
default:
break;
}
style.end();
}
}
class CustomMenu {
constructor() {
this.Template = new MenuModel.MenuElement();
this.MenuEvent = new MenuModel.MenuEvent();
this.MenuCustomButton = new MenuModel.MenuCustomButton(this.Template);
this.MenuDetialsPanel = new MenuModel.MenuCustomDetials(this.Template);
}
insertMenuCustomButton() {
if (!this.MenuCustomButton.hasCustomButton()) {
let $container = $("#u");
let div = this.MenuCustomButton.getCustomButtonHTML();
$container.prepend(div);
}
}
insertMenuDetailPanel() {
if (!this.MenuDetialsPanel.hasDetailsPanel()) {
let $container = $("#u");
let div = this.MenuDetialsPanel.getDetaialPanelHTML();
$container.append(div);
}
}
bindCustomButtonEvent() {
this.MenuEvent.bindCustonEvent();
}
bindSaveEvent() {
this.MenuEvent.bindSaveEvent();
}
blurClickHideDetailPanel() {
this.MenuEvent.blurClickHideDetailPanel();
}
hideDetailPanel() {
this.MenuEvent.hideDetailPanel();
}
start() {
this.insertMenuCustomButton();
this.insertMenuDetailPanel();
this.hideDetailPanel();
this.bindCustomButtonEvent();
this.bindSaveEvent();
this.blurClickHideDetailPanel();
}
}
(function (MenuModel) {
class MenuCustomButton {
constructor(Template) {
this.menuConfig = MenuModel.MenuConfig;
this.buttonName = this.menuConfig.CUSTOM_BUTTON_NAME;
this.buttonID = "#" + this.buttonName;
this.Template = Template;
}
getCustomButtonHTML() {
return this.Template.getMenuCustomButtonHTML(this.buttonName);
}
hasCustomButton() {
return $(this.buttonID).length > 0 ? true : false;
}
}
MenuModel.MenuCustomButton = MenuCustomButton;
})(MenuModel || (MenuModel = {}));
(function (MenuModel) {
class MenuCustomDetials {
constructor(Template) {
this.MenuConfig = MenuModel.MenuConfig;
this.Template = Template;
}
getDetaialPanelHTML() {
return this.Template.getMenuDetialPanelHTML(this.MenuConfig.CUSTOM_DETIALS_PANEL_NAME, this.MenuConfig.OPTION_SAVE_NAME);
}
hasDetailsPanel() {
let detailsPanelID = "#" + this.MenuConfig.CUSTOM_DETIALS_PANEL_NAME;
return $(detailsPanelID).length > 0 ? true : false;
}
}
MenuModel.MenuCustomDetials = MenuCustomDetials;
})(MenuModel || (MenuModel = {}));
class AddBingWallpaper {
start() {
let bingWallpater = new WallPaperModel.BingWallpaper();
bingWallpater.insertBingWallpaperNode();
}
}
(function (WallPaperModel) {
class BingWallpaper {
constructor() {
this.config = new WallPaperModel.WallpagerConfig();
this.isExcuteFlagName = "bd-BingWallpaper";
this.isExcuteFlagClassName = "." + this.isExcuteFlagName;
}
createBingWallpaperNode(imageUrl) {
let template = new WallPaperModel.Tempalte(this.config);
return template.createBingWallpaperNode(imageUrl);
}
getBingWallpaperNode() {
let images = new WallPaperModel.Images(new WallPaperModel.WallPaperBing());
let url = images.getImageURL();
return this.createBingWallpaperNode(url);
}
isExitNode() {
return $(this.isExcuteFlagClassName).length > 0;
}
insertBingWallpaperNode() {
if (!this.isExitNode()) {
let $node = $(this.getBingWallpaperNode());
$node.addClass(this.isExcuteFlagName);
$("body").append($node);
}
}
}
WallPaperModel.BingWallpaper = BingWallpaper;
})(WallPaperModel || (WallPaperModel = {}));
(function (SearchFormModel) {
class Control {
constructor() {
this.isNewWindowSearch = false;
this.Assistant = new SearchFormModel.Assistant();
this.$docker = this.createDocker();
this.Selector = new SearchFormModel.Selector(this.$docker);
}
createDocker() {
return new SearchFormModel.Docker().createDocker(new SearchFormModel.TemplateSearchBox().create());
}
hasSearchBoxAtDom() {
return new SearchFormModel.CheckElement().hasSearchBox();
}
bind(Event, Action) {
new Event(this.Selector).listen(new Action(this.Selector));
}
events() {
this.bind(SearchFormModel.EventInputFocus, SearchFormModel.ActionAssociateDockerShow);
this.bind(SearchFormModel.EventInputFocus, SearchFormModel.ActionAssociateSimilar);
this.bind(SearchFormModel.EventInputBlur, SearchFormModel.ActionAssociateDockerHide);
this.bind(SearchFormModel.EventInputChange, SearchFormModel.ActionAssociateSimilar);
this.bind(SearchFormModel.EventInputKeyDownWithUp, SearchFormModel.ActionAssociateItemScrollUp);
this.bind(SearchFormModel.EventInputKeyDownWithDown, SearchFormModel.ActionAssociateItemScrollDown);
this.bind(SearchFormModel.EventAssociatePanelMouseEnter, SearchFormModel.ActionAssociatePanelHover);
this.bind(SearchFormModel.EventInputKeyDownWithEnter, SearchFormModel.ActionSearchSelf);
this.bind(SearchFormModel.EventButtonClick, SearchFormModel.ActionSearchSelf);
}
insertDockerToDom(containerName) {
$(containerName).append(this.$docker);
}
setInputValueFromURL() {
this.Assistant.setInputValueFromURL();
}
setInputFocus() {
this.Assistant.setInputFocus();
}
setNewWindowSearch() {
this.isNewWindowSearch = true;
}
start(containerName) {
if (!this.hasSearchBoxAtDom()) {
this.events();
this.insertDockerToDom(containerName);
}
}
}
SearchFormModel.Control = Control;
class ConcreteControl extends Control {
constructor() {
super();
this.isInputValueFromURL = false;
this.isInputFocus = false;
}
executeCallback() {
for (const fn of this.callbacks) {
fn();
}
}
insertElementToDom() {
$(this.targetContainer).append();
}
setPageIndex() {
this.targetContainer = "#lg";
}
setPageResult() {
this.targetContainer = ".s_form";
}
setInputFocus() {
this.isInputFocus = true;
}
setInputValueFromURL() {
this.isInputValueFromURL = true;
}
setNewWindowSearch() {
super.setNewWindowSearch();
}
start() {
super.start(this.targetContainer);
if (!!this.isInputValueFromURL) {
super.setInputValueFromURL();
}
if (!!this.isInputFocus) {
super.setInputFocus();
}
}
}
SearchFormModel.ConcreteControl = ConcreteControl;
})(SearchFormModel || (SearchFormModel = {}));
class ResultPageAddSearchForm {
start() {
let control = new SearchFormModel.ConcreteControl();
control.setPageResult();
control.setInputValueFromURL();
control.start();
}
}
class IndexPageAddSearchForm {
start() {
let control = new SearchFormModel.ConcreteControl();
control.setPageIndex();
control.setInputFocus();
control.start();
}
}
class LayoutControl {
constructor() {
this.SearchResultManager = new SearchResult.Manager();
this.LayoutElements = new LayoutElements();
this.AutoNextPageSwitch = new AutoNextPageSwitch();
}
getListsHTML(ListTotal) {
let listsHTML = "";
for (let i = 0; i < ListTotal; i++) {
listsHTML = listsHTML + this.LayoutElements.getListHTML();
}
return listsHTML;
}
getContainer(ListTotal) {
let $container = $(this.LayoutElements.getContainerHTML());
let $dock = $(this.LayoutElements.getDockHTML());
let $lists = $(this.getListsHTML(ListTotal));
$dock.append($lists);
$container.append($dock);
return $container;
}
insertListHTMLToWeb(ListTotal) {
let $html = $("#content_left");
let $container = this.getContainer(ListTotal);
$html.after($container);
}
movePageResultToList() {
let oldSearchResultItems = this.SearchResultManager.getCurrentPageSerachResult();
let multipleLayout = new MultipleLayout();
multipleLayout.addSearchResultToList(oldSearchResultItems);
}
addPageNumberModel() {
let $pageNumberContainer = new PageNumber().getPageNumberContainer();
$(this.LayoutElements.getContainerClassName()).after($pageNumberContainer);
}
autoNextPageLoad() {
let nextPage = new NextPage();
nextPage.autoLoad();
}
switchAutoNextPage() {
return this.AutoNextPageSwitch.isEnable();
}
addAdditionModule() {
this.movePageResultToList();
if (this.switchAutoNextPage()) {
this.autoNextPageLoad();
}
else {
setTimeout(() => {
this.addPageNumberModel();
}, 500);
}
}
runGeneralLayout() {
this.insertListHTMLToWeb(1);
this.addAdditionModule();
}
runOneCenterLayout() {
this.insertListHTMLToWeb(1);
this.addAdditionModule();
}
runTwoCenterLayout() {
this.insertListHTMLToWeb(2);
this.addAdditionModule();
}
runThreeCenterLayout() {
this.insertListHTMLToWeb(3);
this.addAdditionModule();
}
start() {
let pageLayoutOption = new PageLayoutOption();
let currentLayout = pageLayoutOption.getCurrentPageType();
switch (currentLayout) {
case LAYOUT_TYPE.OneCenter:
this.runOneCenterLayout();
break;
case LAYOUT_TYPE.TwoCenter:
this.runTwoCenterLayout();
break;
case LAYOUT_TYPE.ThreeCenter:
this.runThreeCenterLayout();
break;
default:
this.runGeneralLayout();
break;
}
}
}
class LayoutElements {
constructor() {
this.CONTAINER_NAME = "bd_search_result_container";
this.DOCK_NAME = "bd_serach_result_dock";
this.LIST_NAME = "bd_list";
}
getContainerClassName() {
return "." + this.CONTAINER_NAME;
}
getDockClassName() {
return "." + this.DOCK_NAME;
}
getListClassName() {
return "." + this.LIST_NAME;
}
getContainerHTML() {
return `
<div class="${this.CONTAINER_NAME}">
</div>
`;
}
getDockHTML() {
return `<div class="${this.DOCK_NAME}" > </div>`;
}
getListHTML() {
return `<div class="${this.LIST_NAME}"></div>`;
}
}
class MultipleLayout {
constructor() {
this.LayoutElements = new LayoutElements();
this.listTotal = this.getListTotal();
}
getListTotal() {
return this.getListSelector().length;
}
getListSelector() {
return $(this.LayoutElements.getListClassName());
}
getListHeights() {
let $listSelectors = this.getListSelector();
let heights = new Array(this.listTotal).fill(0);
$listSelectors.each(function (index, element) {
heights[index] = $(this).outerHeight();
});
return heights;
}
useSinglePageLayout(searchResultItems) {
let $lists = this.getListSelector();
$lists.eq(0).append(searchResultItems);
}
useMultipageLayout(searchResultItems) {
let that = this;
let $lists = this.getListSelector();
$(searchResultItems).each(function () {
let listHeights = that.getListHeights();
let minHeight = Reflect.apply(Math.min, null, listHeights);
let order = listHeights.indexOf(minHeight);
$lists.eq(order).append(this);
});
}
addSearchResultToList(searchResultItems) {
if (this.listTotal <= 1) {
this.useSinglePageLayout(searchResultItems);
}
else {
this.useMultipageLayout(searchResultItems);
}
}
}
class NextPage {
constructor() {
this.Page = new Page();
this.MultipleLayout = new MultipleLayout();
this.Filter = new SearchResult.Filter();
this.nextPageOrder = 1;
this.EXTRA_HEIGHT = 300;
this.baiduNextPageHref = "";
this.responTextCaches = [];
this.baiduNextPageHref = this.getBaiduNextPageHref(this.getNextPageElement());
setTimeout(() => {
this.requireAndSave();
}, 1000);
}
getNextPageElement() {
return $("#page a").last();
}
getBaiduNextPageHref($element) {
let tempURL = $element.attr("href");
return String(tempURL);
}
updateBaiduNextPageHref($element) {
let pathURL = this.getBaiduNextPageHref($element);
this.baiduNextPageHref = pathURL;
}
hasBaiduNextPageHref() {
return !!this.baiduNextPageHref ? true : false;
}
getNextPageURL() {
return "https://www.baidu.com" + this.baiduNextPageHref;
}
isScrollToBottom() {
let wh = Number($(window).height());
let c = Number($(document).scrollTop());
let h = Number($(document.body).height());
return (Math.ceil(wh + c) + this.EXTRA_HEIGHT) >= h ? true : false;
}
hasResponTextCaches() {
return this.responTextCaches.length > 0 ? true : false;
}
extractSearchItems(responseText) {
return $(responseText).find("#content_left").children(" div[id]");
}
extractBaiduNextPageElement(responseText) {
return $(responseText).find("#page a").last();
}
requireNextPageContent(nextPageURL) {
let that = this;
return new Promise((resolve) => {
GM.xmlhttpRequest({
method: "GET",
url: nextPageURL,
timeout: 3000,
responseType: "text",
headers: {
"Host": "www.baidu.com",
"User-Agent": navigator.userAgent,
"Cookie": document.cookie,
"Accept- Encoding": "gzip, deflate, br",
"Is_xhr": 1,
},
onload: (response) => {
if (response.status === 200 ||
response.status === 304) {
resolve(response.responseText);
}
},
onerror: (response) => {
console.error(response);
console.error("不能获取下一页,请排查原因");
resolve("");
}
});
});
}
async requireAndSave(callback) {
if (!this.hasBaiduNextPageHref()) {
return;
}
let nextPageURL = this.getNextPageURL();
let responseText = await this.requireNextPageContent(nextPageURL);
let content = String(responseText);
if (content == "") {
return;
}
this.responTextCaches.push(content);
if (callback) {
Reflect.apply(callback, this, []);
}
}
async addNextPageToWeb() {
if (!this.hasBaiduNextPageHref()) {
return;
}
if (this.hasResponTextCaches()) {
let responseText = String(this.responTextCaches.shift());
let $nextPageElement = this.extractBaiduNextPageElement(responseText);
this.updateBaiduNextPageHref($nextPageElement);
let oldSearchResultitems = this.extractSearchItems(responseText);
let searchResultItems = this.Filter.run(oldSearchResultitems);
this.MultipleLayout.addSearchResultToList(searchResultItems);
}
else {
Reflect.apply(this.requireAndSave, this, [this.addNextPageToWeb]);
return;
}
this.requireAndSave();
setTimeout(() => {
this.bindScrollEvent();
}, 500);
}
bindScrollEvent() {
$(window).on("scroll", document, () => {
if (this.isScrollToBottom()) {
this.unbindScrollEvent();
this.addNextPageToWeb();
}
});
}
unbindScrollEvent() {
$(window).off("scroll");
}
autoLoad() {
setTimeout(() => {
this.bindScrollEvent();
}, 2000);
}
}
class Page {
constructor() {
this.PN_DEFAULT_VALUE = 10;
this.START_PN_MODIFIED_VALUE = 30;
this.RN_SYSTEM_VALUE = 10;
this.RN_VALUE = 30;
this.pageNumberSelectedLabel = this.getSelectedLabelFromBaiduPageNumber();
this.pageNumberStartLabel = this.getStartLabelFromBaiduPageNumber();
}
getStartLabelFromBaiduPageNumber() {
let $element = $("#page span").first();
let content = $element.find("span").text();
return content == "" ? 1 : Number(content);
}
getSelectedLabelFromBaiduPageNumber() {
let $element = $("#page strong").first();
let content = $element.find("span").text();
return content == "" ? 1 : Number(content);
}
getPageNumberStartLabel() {
return Number(this.pageNumberStartLabel);
}
getPageNumberSelectedLabel() {
return Number(this.pageNumberSelectedLabel);
}
}
class Page_old {
constructor() {
this.PN_DEFAULT_VALUE = 10;
this.START_PN_MODIFIED_VALUE = 30;
this.RN_SYSTEM_VALUE = 10;
this.RN_VALUE = 30;
this.pageNumberSelectedLabel = this.getSelectedLabelFromBaiduPageNumber();
this.pageNumberStartLabel = this.getStartLabelFromBaiduPageNumber();
}
getStartLabel(selectedLable) {
let tempLable = selectedLable;
let offset = tempLable % 10;
let level = Math.floor(tempLable / 10);
let startLable = level * 10 + offset;
return startLable <= 5 ? 1 : startLable - 5;
}
getStartLabelFromBaiduPageNumber() {
let $element = $("#page span").first();
let content = $element.find("span").text();
return content == "" ? 1 : Number(content);
}
getSelectedLabel() {
let currentURL = new UrlEditor(location.href);
if (!currentURL.hasParam("pn")) {
return 1;
}
let pn = Number(currentURL.getParamValue("pn"));
let rn = Number(currentURL.getParamValue("rn"));
let firstTotal = this.getFirstPageToal();
return (pn - firstTotal) / rn + 2;
}
getSelectedLabelFromBaiduPageNumber() {
let $element = $("#page strong").first();
let content = $element.find("span").text();
return content == "" ? 1 : Number(content);
}
isFirstPage() {
let currentSearchURL = new UrlEditor(location.href);
let hasPnParam = currentSearchURL.hasParam("pn");
if (!hasPnParam) {
return true;
}
else {
let pn = Number(currentSearchURL.getParamValue("pn"));
return pn == 0 ? true : false;
}
}
getPageNumberStartLabel() {
return Number(this.pageNumberStartLabel);
}
getPageNumberSelectedLabel() {
return Number(this.pageNumberSelectedLabel);
}
getFirstPageToal() {
let currentSearchURL = new UrlEditor(location.href);
let hasRandomParam = currentSearchURL.hasParam("rn");
if (!hasRandomParam) {
return this.PN_DEFAULT_VALUE;
}
else {
return Number(currentSearchURL.getParamValue("rn"));
}
}
getNewPageURL(pageOrder, baiduNextPageHref) {
let currentSearchURL = new UrlEditor(location.href);
let baiduSearch = new BaiduSearch();
let firstPageTotal = this.getFirstPageToal();
let rn = Number(currentSearchURL.getParamValue("rn")) || this.RN_SYSTEM_VALUE;
let searchContent = currentSearchURL.getParamValue("wd");
baiduSearch.addSearchKeyword(searchContent).addRN(rn).openRandonNumber();
if (currentSearchURL.hasParam("si")) {
baiduSearch.addParam("si", currentSearchURL.getParamValue("si"));
baiduSearch.addParam("ct", currentSearchURL.getParamValue("ct"));
}
if (currentSearchURL.hasParam("gpc")) {
baiduSearch.addParam("gpc", currentSearchURL.getParamValue("gpc"));
}
if (pageOrder > 1) {
let level = pageOrder - 2;
let finalPnValue = firstPageTotal * (pageOrder - 1);
baiduSearch.addPN(finalPnValue);
}
if (!!baiduNextPageHref) {
let fullURL = "https://www.baidu.com/" + baiduNextPageHref;
let baiduNextParams = ["rsv_t", "rsv_idx", "rsv_pq"];
let o = (new URL(fullURL)).searchParams;
for (const param of baiduNextParams) {
if (o.has(param)) {
baiduSearch.addParam(param, String(o.get(param)));
}
}
}
return baiduSearch.getFinalURL();
}
}
class PageNumber {
constructor() {
this.Page = new Page();
this.BAIDU_PAGE_NUMBER_CONTAINER_NAME = "bd_page_number";
this.baiduNextPageHref = "";
this.baiduNextPageHref = this.getBaiduNextPageHref();
}
createContainerElement() {
return `<div id = "${this.BAIDU_PAGE_NUMBER_CONTAINER_NAME}"><div>`;
}
createPrePageElement() {
let selectedLable = this.Page.getPageNumberSelectedLabel();
let isFirstPage = selectedLable < 2;
let template = "";
if (isFirstPage) {
template = `<div class="bd-none bd_page_item bd_page_pre_page"></div>`;
}
else {
template = `<a class="bd_page_item bd_page_pre_page"><span order="1"}><上一页</span></a>`;
}
return template;
}
createNextPageElement() {
let selectedLable = this.Page.getPageNumberSelectedLabel();
let isFirstPage = selectedLable < 2;
let order = 0;
if (isFirstPage) {
order = 11;
}
else {
order = 12;
}
let template = `<a class="bd_page_item bd_page_next_page"><span order="${order}">下一页></span></a>`;
return template;
}
createPageNumberElement() {
let selectedLable = this.Page.getPageNumberSelectedLabel();
let startLable = this.Page.getPageNumberStartLabel();
let endLable = startLable + 10;
let isFirstPage = selectedLable < 2;
let pageNumberOrder = 0;
let template = "";
if (isFirstPage) {
pageNumberOrder = 1;
}
else {
pageNumberOrder = 2;
}
for (let pageNumber = startLable; pageNumber < endLable; pageNumber++) {
if (pageNumber == selectedLable) {
let selectedClassName = "bd_page_number_selected";
template += `<a class="bd_page_item bd_page_number ${selectedClassName}"><span order="${pageNumberOrder}"}">${pageNumber}</span></a>`;
}
else {
template += `<a class="bd_page_item bd_page_number"><span order="${pageNumberOrder}"}">${pageNumber}</span></a>`;
}
pageNumberOrder++;
}
return template;
}
getBaiduNextPageHref() {
let tempURL = $("#page a").last().attr("href");
return String(tempURL);
}
addClickEvent($container) {
$container.on("click", "span", (event) => {
event = event || window.event;
let order = $(event.target).attr("order");
let $baiduPageNumberElement = $("#page>div>*").eq(Number(order) - 1);
let href = $baiduPageNumberElement.attr("href");
if (href != "") {
window.open(href, "_self");
}
});
}
getPageNumberContainer() {
let $container = $(this.createContainerElement());
$container.append(this.createPrePageElement());
$container.append(this.createPageNumberElement());
$container.append(this.createNextPageElement());
this.addClickEvent($container);
return $container;
}
}
class PageNumber_old {
constructor() {
this.Page = new Page();
this.BAIDU_PAGE_NUMBER_CONTAINER_NAME = "bd_page_number";
this.baiduNextPageHref = "";
this.getBaiduNextPageHref();
}
createContainerElement() {
return `<div id = "${this.BAIDU_PAGE_NUMBER_CONTAINER_NAME}"><div>`;
}
createPrePageElement() {
let selectedLable = this.Page.getPageNumberSelectedLabel();
let order = selectedLable - 1;
let template = `<div class="bd-none bd_page_item bd_page_pre_page"></div>`;
if (order >= 1) {
template = `<a class="bd_page_item bd_page_pre_page"><span order="${order}"}"><上一页</span></a>`;
}
return template;
}
createNextPageElement() {
let selectedLable = this.Page.getPageNumberSelectedLabel();
let order = selectedLable + 1;
let template = `<a class="bd_page_item bd_page_next_page"><span order="${order}"}">下一页></span></a>`;
return template;
}
createPageNumberElement() {
let selectedLable = this.Page.getPageNumberSelectedLabel();
let startLable = this.Page.getPageNumberStartLabel();
let endLable = startLable + 10;
let content = "";
for (let order = startLable; order < endLable; order++) {
let additionClassName = "";
if (order == selectedLable) {
additionClassName = "bd_page_number_selected";
}
let template = `<a class="bd_page_item bd_page_number ${additionClassName}"><span order="${order}"}">${order}</span></a>`;
content += template;
}
return content;
}
getBaiduNextPageHref() {
if (this.baiduNextPageHref == "") {
let tempURL = $("#page a").first().attr("href");
this.baiduNextPageHref = String(tempURL);
}
}
addClickEvent($container) {
let selector = "#" + this.BAIDU_PAGE_NUMBER_CONTAINER_NAME;
$container.on("click", "span", (event) => {
event = event || window.event;
let order = $(event.target).attr("order");
let $element = $("#page>div>*").eq(Number(order) - 1);
let href = $element.attr("href");
if (href != "") {
window.open($element.attr("href"), "_self");
}
});
}
getPageNumberContainer() {
let $container = $(this.createContainerElement());
$container.append(this.createPrePageElement());
$container.append(this.createPageNumberElement());
$container.append(this.createNextPageElement());
this.addClickEvent($container);
return $container;
}
}
class FixSearchToolbar {
getNewURL(url) {
let search = new BaiduSearch();
let keyword = url.getParamValue("wd");
search.addSearchKeyword(keyword).addRN(30).openRandonNumber();
if (url.hasParam("si")) {
let siValue = url.getParamValue("si");
search.addParam("si", siValue);
}
return search.getFinalURL();
}
refresh() {
}
refresh_null() {
let url = new UrlEditor(location.href);
console.log(url.getFinalUrl());
if (!url.hasParam("random")) {
let temp = String(cleanURL(url));
location.href = temp;
}
function cleanURL(url) {
let search = new BaiduSearch();
let keyword = url.getParamValue("wd");
search.addSearchKeyword(keyword).addRN(30).openRandonNumber();
if (url.hasParam("si")) {
search.addParam("si", url.getParamValue("si"));
search.addParam("ct", url.getParamValue("ct"));
}
if (url.hasParam("gpc")) {
search.addParam("gpc", url.getParamValue("gpc"));
}
return search.getFinalURL();
}
}
observer() {
window.onload = () => {
let MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
if (!!MutationObserver) {
let observer = new MutationObserver(this.refresh_null);
let wrapper = document.querySelector("#form");
let observerConfig = {
childList: true,
subtree: true,
};
observer.observe(wrapper, observerConfig);
}
else {
console.error("百度搜索-优化: 浏览器不兼容 MutationObserver 接口, 请升级浏览器版本");
}
};
}
start() {
this.observer();
}
}
class ScrollToTop {
isInputTarget(event) {
return $(event.target).prop("tagName") == "INPUT" ? true : false;
}
bindScrollToTopEvent() {
let $selector = $(".s_form ");
$selector.off("click").on("click", (event) => {
if (this.isInputTarget(event)) {
event.stopPropagation();
return;
}
let element = document.documentElement;
let body = document.body;
let node = element.scrollTop ? element : body;
let top = node.scrollTop;
let step = top / 20;
let timer = setInterval(() => {
if (node.scrollTop <= 0) {
node.scrollTop = 0;
clearInterval(timer);
}
node.scrollTop -= step;
}, 10);
return false;
});
}
start() {
this.bindScrollToTopEvent();
}
}
class ShortcutKey {
constructor() {
this.KEY_ENTER = 13;
this.KEY_ALT = 18;
this.KEY_SHIFT = 16;
this.KEY_CTRL = 17;
this.KEY_GOOGLE = "G";
}
googleSeach() {
let google = new UrlEditor("https://www.google.com/search?q=%s");
let url = new UrlEditor(location.href);
let searchWord = url.getParamValue("wd");
google.setParam("q", searchWord);
location.href = google.getFinalUrl();
}
notAdditonKeyup(event) {
if (!event.altKey &&
!event.shiftKey &&
!event.ctrlKey &&
!event.metaKey) {
return true;
}
else {
return false;
}
}
isInputKeyup(event) {
let inputClassName = "bd-barbox-input";
if ($(event.target).hasClass(inputClassName)) {
return true;
}
else {
return false;
}
}
bingShortcutKeyEvent() {
$(document).off("keyup").on("keyup", (event) => {
let keyCode = event.keyCode || event.which || event.charCode;
if (this.isInputKeyup(event)) {
return false;
}
if (keyCode ==
this.KEY_GOOGLE.toUpperCase().charCodeAt(0) && this.notAdditonKeyup(event)) {
this.googleSeach();
}
});
}
start() {
this.bingShortcutKeyEvent();
}
}
class Sidebar {
constructor() {
this.SideToolBar = new SideToolBarModel.SideToolBar();
this.SideToolBarSwitch = new SideToolBarSwitch();
}
insertSidebarHTML() {
let $container = $("#head");
let $sideToolbar = this.SideToolBar.getSideToolBar();
$container.after($sideToolbar);
}
start() {
if (this.SideToolBarSwitch.isEnable())
this.insertSidebarHTML();
}
}
class BaiduIndexFactory {
create() {
let page = new Baidu();
page.add(IndexPageInjectStyles);
page.addDelayAndReady(IndexPageAddSearchForm);
page.execute();
}
}
class BaiduResultFactory {
create() {
let page = new Baidu();
page.add(ResultPageInjectStyles);
page.addDelayAndReady(ResultPageAddSearchForm);
page.addDelayAndReady(CustomMenu);
page.addReady(LayoutControl);
page.addReady(ScrollToTop);
page.addReady(Sidebar);
page.addReady(ShortcutKey);
page.execute();
useObserver();
}
}
function mutationfunc() {
let avoidMulExecute = new AvoidMulExecute();
if (avoidMulExecute.hasSign()) {
return;
}
avoidMulExecute.setSign();
location.href = location.href;
}
function useObserver() {
window.onload = () => {
let avoidMulExecute = new AvoidMulExecute();
avoidMulExecute.setSign();
let MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
if (!!MutationObserver) {
let observer = new MutationObserver(mutationfunc);
let wrapper = document.querySelector("#wrapper");
let observerConfig = {
childList: true,
subtree: true
};
observer.observe(wrapper, observerConfig);
}
else {
console.error("百度搜索-优化: 浏览器不兼容 MutationObserver 接口, 请升级浏览器版本");
}
};
}
function cleanURL(url) {
let search = new BaiduSearch();
let keyword = url.getParamValue("wd");
search.addSearchKeyword(keyword).addRN(30).openRandonNumber();
if (url.hasParam("si")) {
search.addParam("si", url.getParamValue("si"));
search.addParam("ct", url.getParamValue("ct"));
}
if (url.hasParam("gpc")) {
search.addParam("gpc", url.getParamValue("gpc"));
}
return search.getFinalURL();
}
function tidySearchLink() {
let url = new UrlEditor(location.href);
if (!url.hasParam("rn")) {
url.setParam("rn", "30");
location.href = url.getFinalUrl();
}
}
const IndexPageRouters = ["https://www.baidu.com/", "https://www.baidu.com/#", "http://ipv6.baidu.com/", "https://ipv6.baidu.com/"];
const ResultPagesRouters = ["https://www.baidu.com/s", "https://www.baidu.com/baidu"];
let router = new Router();
router.addRoute(IndexPageRouters, new BaiduIndexFactory());
router.addRoute(ResultPagesRouters, new BaiduResultFactory());
})();