// ==UserScript==
// @name 【省一省】双11超级红包!优惠券+返现+抢购秒杀助手--任意网站抢购、秒杀、抢券等,支持淘宝、天猫、京东、唯品会、考拉海购领券,配合APP扫码下单后即可获得返现!!!。
// @namespace cyzlizhe
// @version 5.3
// @description 【抢购秒杀助手】任意网站抢购、秒杀、抢券等,支持自建秒杀方案、从论坛导入秒杀方案,非常灵活。【领券+返现】在淘宝、天猫、京东、唯品会、考拉海购的‘商品搜索页’和‘商品详情页’上显示优惠券及返现,功能简单,显示直观,在商品详情页通过「花前省一省」APP扫码,直接在APP进入商品、领券及获得返现。
// @author cyzlizhe
// @icon https://s3.ax1x.com/2020/12/15/rKQCod.png
// @match *://*.taobao.com/*
// @match *://*.tmall.com/*
// @match *://*.tmall.hk/*
// @match *://*.liangxinyao.com/*
// @match *://*.jd.com/*
// @match *://*.jd.hk/*
// @match *://*.vip.com/*
// @match *://*.kaola.com/*
// @match *://*.suning.com/*
// @match *://*.fengwd.com/*
// @match https://*/*
// @match http://*/*
// @exclude *://login.taobao.com/*
// @exclude *://pages.tmall.com/*
// @exclude *://uland.taobao.com/*
// @exclude *://uland.taobao.com/*
// @require https://cdn.bootcdn.net/ajax/libs/jquery/1.6.3/jquery.js
// @require https://cdn.bootcss.com/jquery.qrcode/1.0/jquery.qrcode.min.js
// @require https://cdn.bootcdn.net/ajax/libs/apexcharts/3.9.0/apexcharts.min.js
// @require https://cdn.bootcdn.net/ajax/libs/sweetalert/2.1.2/sweetalert.min.js
// @run-at document-start
// @grant GM_xmlhttpRequest
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_setClipboard
// @grant GM_openInTab
// @noframes true
// @connect taobao.com
// @connect gwdang.com
// @connect jd.com
// @connect suning.com
// @connect pinduoduo.com
// @connect vmall.com
// @connect mi.com
// @connect youyizhineng.top
// @antifeature referral-link 【应GreasyFork代码规范要求:含有优惠券查询功能的脚本必须添加此提示!】
// @note 2021年01月19日10:48:42 bug修复,新增年货节超级红包,调整以适应更多方案。
// @note 2021年01月13日11:10:04 界面调整
// @note 2021年01月11日11:08:31 1.设置中悬浮球可以选择白名单或者黑名单屏蔽 2.优化返现显示逻辑 3.其他底层优化
// @note 2020年12月31日11:15:32 1.修复设置持续时间不起作用的bug 2.插件调整,以适应捡漏模式 3.增加抢购助手使用说明 4.增加立即执行按钮,可以立即执行方案。
// @note 2020年12月22日22:05:43 优化淘宝快速下单预置方案,新增对天猫超市world页面的支持。
// @note 2020年12月15日11:05:02 全新版本,全新出发,新增抢购秒杀助手,返利机器人。
// ==/UserScript==
(function () {
"use strict";
var $2 = $.noConflict();
var version = GM_info.script.version;
// Your code here...
//清除任务 若工作不正常,把下面三行注释打开随便打开一个网页,然后再注释上即可
// GM_setValue('obj_plans', null);
// GM_setValue('virtualCookie', null);
// return
var obj = {};
var query_item_list = '';
var query_data_list_back = '';
var check_url = '';
var stop = '';
//加载屏蔽网址
var blockUrl = GM_getValue('blockUrl', '');
console.log(blockUrl);
var passUrl = GM_getValue('passUrl', '');
console.log(passUrl);
var BWlist_sel = GM_getValue('BWlist_sel', '');
if (BWlist_sel == '') {
GM_setValue('BWlist_sel', 'white_mode');
BWlist_sel = 'white_mode';
}
// BWlist_sel = 'white_mode';
//#region css样式
var style = document.createElement("style");
style.type = "text/css";
style.innerHTML = '.coupon-wrap{margin:10px 0 5px 0;color:#fff}.coupon-wrap-rm{margin:1px 0 5px 0;overflow:hidden;color:#000}.coupon-wrap-qr{margin:1px 0 8px 0;overflow:hidden;color:#000}.coupon-wrap-trend{margin:1px 0 0 0;overflow:hidden;color:#000;display:none}.coupon-wrap-price{margin:1px 0 0 0;overflow:hidden;color:#000}.coupon-wrap-trend{margin:1px 0 0 0;overflow:hidden;color:#000;display:none}.coupon-wrap .coupon{background-image:linear-gradient(150deg,#f90,#f69);display:inline-flex;color:white;position:relative;padding-left:.5rem;padding-right:.5rem;border-top-right-radius:.3rem;border-bottom-right-radius:.3rem;overflow:hidden}.coupon-wrap .coupon::before{left:-7px;content:"";position:absolute;top:0;height:100%;width:14px;background-image:radial-gradient(white 0,white 4px,transparent 4px);background-size:14px 14px;z-index:1;background-position:0 2px;background-repeat:repeat-y}.coupon-wrap .coupon .coupon-info{border-right:2px dashed white;padding-left:20px;padding-top:20px;padding-bottom:20px;position:relative;min-width:200px;font-size:14px}.coupon-wrap .coupon .coupon-info::before,.coupon-wrap .coupon .coupon-info::after{content:"";width:20px;height:20px;background-color:white;position:absolute;right:-11px;border-radius:50%}.coupon-wrap .coupon .coupon-info::before{top:-10px}.coupon-wrap .coupon .coupon-info::after{bottom:-10px}.coupon-wrap .coupon .coupon-info .coupon-desc{font-size:18px}.coupon-wrap .coupon .coupon-get{display:flex;justify-content:center;align-items:center;flex-direction:column;min-width:100px;position:relative;font-size:20px;color:#fff;padding:20px}#tb-cool-area{border:1px solid #eee;margin:0 auto;position:relative;clear:both;display:none}#tb-cool-area .tb-cool-area-home{position:absolute;top:5px;right:10px;z-index:88}#tb-cool-area .tb-cool-area-home a{cursor:pointer;color:#515858;font-size:10px;text-decoration:none}#tb-cool-area .tb-cool-area-home a.new-version{color:#ff0036}#tb-cool-area .tb-cool-area-benefit{width:240px;float:left}#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-qrcode{text-align:center;min-height:150px;margin-top:40px}#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-qrcode canvas,#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-qrcode img{margin:0 auto}#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-title{margin-top:20px;color:#000;font-size:14px;font-weight:700;text-align:center}#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-title span{color:#ff0036;font-weight:700}#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-action{margin-top:10px;text-align:center}#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-action a{text-decoration:none}#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-action .tb-cool-quan-button{min-width:120px;padding:0 8px;line-height:35px;color:#fff;background:#ff0036;font-size:13px;font-weight:700;letter-spacing:1.5px;margin:0 auto;text-align:center;border-radius:15px;display:inline-block;cursor:pointer}#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-action .tb-cool-quan-button.quan-none{color:#000;background:#bec5c5}#tb-cool-area .tb-cool-area-history{height:300px;overflow:hidden;position:relative}#tb-cool-area .tb-cool-area-history #tb-cool-area-chart,#tb-cool-area .tb-cool-area-history .tb-cool-area-container{width:100%;height:100%}#tb-cool-area .tb-cool-area-history .tb-cool-history-tip{position:absolute;margin:0;top:50%;left:50%;letter-spacing:1px;font-size:15px;transform:translateX(-50%) translateY(-50%)}#tb-cool-area .tb-cool-area-table{margin-top:10px;position:relative;overflow:hidden}#tb-cool-area .tb-cool-quan-tip{position:absolute;margin:0;top:50%;left:50%;letter-spacing:1px;font-size:15px;opacity:0;transform:translateX(-50%) translateY(-50%)}#tb-cool-area .tb-cool-quan-tip a{color:#333;font-weight:400;text-decoration:none}#tb-cool-area .tb-cool-quan-tip a:hover{color:#ff0036}#tb-cool-area .tb-cool-area-table .tb-cool-quan-table{width:100%;font-size:14px;text-align:center}#tb-cool-area .tb-cool-area-table .tb-cool-quan-table tr td{padding:4px;color:#1c2323;border-top:1px solid #eee;border-left:1px solid #eee}#tb-cool-area .tb-cool-area-table .tb-cool-quan-table tr td span{color:#ff0036;font-weight:700}#tb-cool-area .tb-cool-area-table .tb-cool-quan-table tr td:first-child{border-left:none}#tb-cool-area .tb-cool-area-table .tb-cool-quan-table .tb-cool-quan-link{width:60px;line-height:24px;font-size:12px;background:#ff0036;text-decoration:none;display:inline-block}#tb-cool-area .tb-cool-area-table .tb-cool-quan-table .tb-cool-quan-link-enable{cursor:pointer;color:#fff}#tb-cool-area .tb-cool-area-table .tb-cool-quan-table .tb-cool-quan-link-disable{cursor:default;color:#000;background:#ccc}#tb-cool-area .tb-cool-quan-empty .tb-cool-quan-tip{opacity:1}#tb-cool-area .tb-cool-quan-empty .tb-cool-quan-table{filter:blur(3px);-webkit-filter:blur(3px);-moz-filter:blur(3px);-ms-filter:blur(3px)}.tb-cool-box-area{position:absolute;top:20px;right:0;z-index:87}.tb-cool-box-area-rm{position:absolute;top:50px;right:0;z-index:87}' +
'.tb-cool-box-wait{cursor:pointer}.tb-cool-box-wait-rm{cursor:pointer}.tb-cool-box-already{position:relative}.tb-cool-box-info{width:auto!important;height:auto!important;padding:6px 8px!important;font-size:12px;color:#fff!important;border-radius:15px 0 0 15px;cursor:pointer;user-select:none}.tb-cool-box-info,.tb-cool-box-info:hover,.tb-cool-box-info:visited{text-decoration:none!important}.tb-cool-box-info-default{background:#3186fd!important}.tb-cool-box-info-find{background:#ff0036!important}.tb-cool-box-info-find-rm{background-image:linear-gradient(#ffd000,#fcea9e)!important;color:#000!important}.tb-cool-box-info-empty{color:#000!important;background:#ccc!important}.tb-cool-box-info-translucent{opacity:.33}.mui-zebra-module .tb-cool-box-info{font-size:10px}.import-shangou-itemcell .tb-cool-box-area,.zebra-ziying-qianggou .tb-cool-box-area{right:10px;left:auto}.item_s_cpb .tb-cool-box-area{top:auto;bottom:10px}.j-mdv-chaoshi .m-floor .tb-cool-box-area a{width:auto;height:auto}.left-wider .proinfo-main{margin-bottom:40px}.detailHd .m-info{margin-bottom:20px}.tb-cool-quan-date{color:#233b3d;font-weight:400;font-size:12px}.tb-cool-area-has-date .tb-cool-quan-qrcode{margin-top:30px!important}.tb-cool-area-has-date .tb-cool-quan-title{margin-top:10px!important}.rm-div{-webkit-tap-highlight-color:rgba(0,0,0,0);line-height:1.42857143;color:#333;font-size:12px!important;font-family:"Open Sans",Arial,sans-serif;box-sizing:border-box;position:relative;min-height:1px;padding-right:15px;padding-left:0;float:left;width:350px}.rm-div span{-webkit-tap-highlight-color:rgba(0,0,0,0);font-family:"Open Sans",Arial,sans-serif;box-sizing:border-box;text-decoration:none;margin-bottom:0;font-weight:normal;text-align:left;white-space:nowrap;vertical-align:middle;touch-action:manipulation;user-select:none;background-image:none;background-color:#ffd000;padding:0 0 0 8px;line-height:30px;display:inline-block;width:215px;letter-spacing:.6px;font-size:16px;-webkit-font-smoothing:subpixel-antialiased;transition:border .25s linear,color .25s linear,background-color .25s linear;color:#000;border:0;border-radius:99px 0 0 99px;float:left}.rm-div .rm-btn{-webkit-tap-highlight-color:rgba(0,0,0,0);font-family:"Open Sans",Arial,sans-serif;box-sizing:border-box;text-decoration:none;margin-bottom:0;font-weight:normal;text-align:left;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;user-select:none;background-image:none;background-color:#ffd000;padding:0 0 0 8px;line-height:30px;display:inline-block;width:120px;letter-spacing:.6px;font-size:16px;-webkit-font-smoothing:subpixel-antialiased;transition:border .25s linear,color .25s linear,background-color .25s linear;color:#000;border:0;border-radius:99px 0 0 99px;float:left;background-color:#fff;border-radius:0 99px 99px 0;border:1px solid #c2baba;padding:0 0 0 8px;line-height:28.2px}.rm-div .trend-btn{-webkit-tap-highlight-color:rgba(0,0,0,0);font-family:"Open Sans",Arial,sans-serif;box-sizing:border-box;text-decoration:none;font-weight:normal;text-align:left;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;user-select:none;background-image:none;background-color:#ff0036!important;padding:0 0 0 8px;line-height:30px;display:inline-block;width:140px;letter-spacing:.6px;font-size:16px;-webkit-font-smoothing:subpixel-antialiased;transition:border .25s linear,color .25s linear,background-color .25s linear;color:#fff;border:0;border-radius:99px 99px 99px 99px!important;float:left;background-color:#fff;border-radius:0 99px 99px 0;padding:0 0 0 8px;line-height:27px}.rm-div .trend-btn-img{max-height:15px;vertical-align:middle!important}.float_div{width:200px;height:200px;background-color:red;position:absolute;top:100px;left:100px;float:left;z-index:99999}.qr-code-div{width:440px;border-radius:10px;display:inline-block}.trend-div{width:440px;border-radius:10px;display:inline-block}#qrcode{display:inline}.qr-code-div .title{float:right;font-size:13px;width:280px}.qr-code-div .foot{font-size:12px;text-align:middle;width:100%}.qr-code-div .qr-img{height:150px;width:150px}.frame_div{position:fixed;width:700px;height:450px;z-index:999999999;display:none;background-color:#fff;border-radius:10px;border:1px solid #c2baba;padding:15px;left:0;top:0;right:0;bottom:0;-webkit-box-shadow:#666 0 0 10px;-moz-box-shadow:#666 0 0 10px;box-shadow:#666 0 0 10px}#iframe_check{position:relative;height:100%;width:100%}.image-status{margin-left:10px;position:absolute;top:50%;transform:translateY(-50%);height:20px}.status-span{margin-left:35px;position:absolute;top:50%;transform:translateY(-50%)}.frame_div .cover{position:absolute;border-radius:10px;text-align:center;top:0;right:0;height:85px;width:100%;background-color:#fff;font-size:20px}.frame_div .cover img{text-align:center;height:45px;background-color:#fff;font-size:40px}.cover-close{position:absolute;top:0;right:0;height:40px;cursor:pointer}' +
'.cover-chart-span{position:absolute;text-align:center;line-height:200px;height:200px}#chart{min-height:215px;margin-bottom:-20px}.div-helper-box .butyInput,.div-helper-box a,.div-helper-box select{font-size:12px;border:1px solid #ccc;padding:4px 0;border-radius:3px;padding-left:5px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}#imgPlanInfo{height:16px;width:16px;vertical-align:middle}.div-helper-box .butyInput:focus,.div-helper-box a:focus,.div-helper-box select:focus{border-color:#25a765;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.div-helper-box{margin-top:5px;font-size:12px}.div-helper-box button{width:80px;height:35px;border-width:0;border-radius:5px;background:#25a765;cursor:pointer;outline:0;font-family:Microsoft YaHei;color:white;font-size:16px}.div-helper-box button:hover{background:#fc0;color:black}#button_delTask,#button_syn,#button_delPlan,#button_saveThisPage,#save_temporaryBlock,#temporaryBlock,#passThisPage,#permanentlyBlock,#button_saveSetting,#button_capture,#button_getCurrentTime,#button_newPlan,#importFromBbs,#shareToBbs,#button_editPlan,#button_exportPlan,#button_importPlan{background-color:#1e90ff;width:70px;height:25px;font-size:12px;font-weight:400!important;padding:0!important}#start_buy,#planCompleted{font-weight:400!important;padding:0!important}.dynamicDIV{vertical-align:baseline;border-bottom:1px solid #d6d6d6;font-size:12px}.dynamicSpan{vertical-align:middle;width:150px;display:inline-block;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;white-space:nowrap;font-size:12px}.dynamicInput{vertical-align:middle;border-bottom:1px solid #12be02;border-top:0;border-left:0;border-right:0;width:150px;font-size:12px}.dynamicHostSpan{display:block;text-align:center;color:#000;background-color:#e0ffef;border-radius:10px}#button_add_mjd{display:none;background-color:#f30213;color:#fff;width:100px;height:25px;font-size:12px}#button_add_refresh{background-color:#f30213;color:#fff;width:80px;height:25px;font-size:12px;font-weight:400!important;padding:0!important}.swal_info,.swal-overlay{z-index:9999999999} .swal_info .swal-overlay{z-index:999999999;}.swal_info .swal-modal{z-index:999999999;background-color:rgba(63,255,106,0.69);border:3px solid white}.swal_info .swal-title{margin:0;font-size:16px;box-shadow:0 1px 1px rgba(0,0,0,0.21);margin-bottom:28px;background-color:#fc0;color:#000;border-radius:5px 5px 0 0}.swal_info .swal-text{background-color:#edffeb;padding:17px;border:1px solid #000;display:block;margin:22px;text-align:center;color:#25a765;border-radius:5px;font-weight:600;text-align:left}.swal_info .swal-footer{background-color:#f5f8fa;margin-top:32px;border-top:1px solid #e9eef1;overflow:hidden}.swal_info .swal-button--confirm{background-color:#f30213}#float_assistant{padding:3px;background-color:#fff;border:1px;border-radius:10px;position:fixed;top:8em;right:1em;text-align:left;display:inline-block;z-index:9999999;box-shadow:0 0 15px #4e4e4e} .callout{z-index:999;position:relative;width:150px;border:1px solid #f82800;background:#fff;border-radius:5px;margin-top:.5em !important;text-align:center}.callout::before{background-color: #f6792f;z-index:-1;content:"";position:absolute;top:-.41em;left:30px;padding:.35em;border:inherit;border-right:0;border-bottom:0;transform:rotate(45deg)}'
document.getElementsByTagName("head").item(0).appendChild(style);
var style = document.createElement("style");
style.type = "text/css";
style.innerHTML = '@charset "utf-8";.demo{width:410px;margin:0 auto}.stamp *{padding:0;margin:0;list-style:none;font-family:"Microsoft YaHei","Source Code Pro",Menlo,Consolas,Monaco,monospace}.stamp{width:340px;height:110px;padding:0 10px;position:relative;}.stamp:before{content:"";position:absolute;top:0;bottom:0;left:10px;right:10px;z-index:-1}.stamp i{position:absolute;left:20%;top:45px;height:190px;width:390px;background-color:rgba(255,255,255,.15);transform:rotate(-30deg);pointer-events:none}.stamp .par{float:left;padding:10px 10px;width:180px;border-right:2px dashed rgba(255,255,255,.3);text-align:left;height:90px}.stamp .par p{color:#fff;font-size:16px;line-height:21px}.stamp .par span{font-size:40px;color:#fff;margin-right:5px;line-height:65px}.stamp .par .sign{font-size:25px}.stamp .par sub{position:relative;color:rgba(255,255,255,.8)}.stamp .copy{display:inline-block;padding:21px 14px;width:100px;vertical-align:text-bottom;font-size:30px;color:#fff;text-align:center;line-height:initial}.stamp .copy p{font-size:16px;margin-top:15px}.stamp01{background:radial-gradient(rgba(0,0,0,0) 0,rgba(0,0,0,0) 5px,#f39b00 5px);background-size:15px 15px;background-position:9px 3px}.stamp01:before{background-color:#f39b00}.stamp02{background:radial-gradient(transparent 0,transparent 5px,#d24161 5px);background-size:15px 15px;background-position:9px 3px}.stamp02:before{background-color:#d24161}.stamp03{background:radial-gradient(transparent 0,transparent 5px,#7eab1e 5px);background-size:15px 15px;background-position:9px 3px}.stamp03:before{background-color:#7eab1e}.stamp03 .copy{padding:10px 6px 10px 12px;font-size:24px}.stamp03 .copy p{font-size:14px;margin-top:5px;margin-bottom:8px}.stamp03 .copy a{background-color:#fff;color:#333;font-size:14px;text-decoration:none;padding:5px 10px;border-radius:3px;display:block}.stamp04{width:320px;background:radial-gradient(rgba(0,0,0,0) 0,rgba(0,0,0,0) 4px,#f5610b 4px);border-radius:3px}.stamp04:before{background-color:#f5610b;left:5px;right:5px}.stamp04 .copy{padding:8px 4px 8px 10px;font-size:20px}.stamp04 .copy p{font-size:12px;margin-top:3px;margin-bottom:5px}.stamp04 .copy a{background-color:#fff;color:#333;font-size:14px;text-decoration:none;padding:5px 10px;border-radius:3px;display:block;z-index:200}';
document.getElementsByTagName("head").item(0).appendChild(style);
var style = document.createElement("style");
style.type = "text/css";
style.innerHTML = 'div.card-tabs-bar a{padding:5px;padding-bottom:1px;border:1px solid transparant;color:#575b66;text-decoration:none;margin-left:5px;outline:0}div.card-tabs-bar a:first-child{margin-left:10px}div.card-tabs-bar a:hover{text-decoration:underline}div.card-tabs-bar a.active{border-bottom:0;display:inline-block;color:black;font-weight:bold;border-radius:4px 4px 0 0;padding-top:6px;margin-bottom:-10px;background:#fff}div.card-tabs-bar a.active:hover{text-decoration:none}div.card-tabs-bar.titles{margin-top:-10px}div.card-tabs-bar.titles a{font-size:17px}div.card-tabs-stack div[data-tab]{display:none;border-top:0;padding:10px}div.card-tabs-stack div[data-tab]:first-child{display:block}div.card-tabs-bar.inset{border-bottom:1px solid #e5e5e5;border-radius:3px}div.card-tabs-bar.inset a.active{background-color:#fafafa;box-shadow:inset 0 0 10px rgba(0,0,0,0.05)}div.card-tabs-stack.inset div[data-tab]{padding:10px;border-top:0;border-radius:3px;box-shadow:inset 0 0 10px rgba(0,0,0,0.05)}div.card-tabs-bar.graygreen{border-bottom:1px solid #e5e5e5}div.card-tabs-bar.graygreen a{padding:15px;border-radius:0;margin:0;padding-bottom:10px;margin-bottom:-2px;font-size:17px}div.card-tabs-bar.graygreen a.active{background-color:#fafafa;border-top:4px solid #2cc185}div.card-tabs-stack.graygreen div[data-tab]{padding:10px;background-color:#fafafa;border:1px solid #e5e5e5;border-top:0}div.card-tabs-bar.wiki{border-radius:0;text-align:left;display:inline-block}div.card-tabs-bar.wiki a{display:inline-block;vertical-align:baseline;border-radius:0;margin:0;padding-bottom:10px;margin-bottom:-1px;margin-left:2px;font-size:12px;background:#fefefe;background:-moz-linear-gradient(top,#fefefe 0,#fdcd97 100%);background:-webkit-linear-gradient(top,#fefefe 0,#fdcd97 100%);background:linear-gradient(to bottom,#fefefe 0,#fdcd97 100%);border-top:#ff8700 1px solid;border-left:#ff8700 1px solid;border-right:#ff8700 1px solid;cursor: pointer}div.card-tabs-bar.wiki a:first-child{border-left:#ff8700 1px solid;margin-left:0}div.card-tabs-bar.wiki a:last-child{border-right:#ff8700 1px solid}div.card-tabs-bar.wiki a.active{border-top:1px solid #ff8700;border-left:1px solid #ff8700;border-right:1px solid #ff8700;background:white;border-bottom:1px solid white}div.card-tabs-stack.wiki div[data-tab]{display:"none"!important;width:fit-content;width:-webkit-fit-content;width:-moz-fit-content;padding:13px;border:1px solid #ff8700;border-radius:0 8px 8px 8px;text-align:left;background-color:white}';
document.getElementsByTagName("head").item(0).appendChild(style);
//#endregion
obj.get_date_now_ms = function () {
if (typeof (Date.now()) == "number") {
return Date.now();
} else if (typeof (Date.now()) == "object") {
console.log(Date.now().getTime());
return Date.now().getTime();
} else {
return Date.now();
}
}
// 对Date的扩展,将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(H)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子:
// (new Date()).Format("yyyy-MM-dd HH:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d H:m:s.S") ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function (fmt) { //author: meizz
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
console.log('▽载入时间▽');
console.log(obj.get_date_now_ms());
obj.swal_info = function (title, text, button, Func) {
if (!arguments[0]) title = "SYS-抢购助手提醒";
if (!arguments[2]) button = "确认";
swal({
className: "swal_info",
title: title,
text: text,
button: button,
}).then((value) => {
if (value == null) return;
if (typeof (Func) == 'function') {
Func();
}
});
}
obj.swal_fadeAway = function (text, time_ms) {
if (!arguments[1]) time_ms = 1000;
swal(text, {
buttons: false,
timer: time_ms,
});
}
obj.getObjKeys = function (obj) {
var arry = [];
for (var i in obj) {
arry.push(i);
}
return arry;
}
obj.setVirtualCookie = function (name, active, start_time, theLifeCycle) {
var virtualCookie = GM_getValue('virtualCookie');
if (virtualCookie == null) {
virtualCookie = {};
}
if (!virtualCookie.hasOwnProperty(name)) {
virtualCookie[name] = {};
}
if (active != 'keep') {
virtualCookie[name]['active'] = active;
}
if (start_time != 'keep') {
virtualCookie[name]['start_time'] = start_time;
}
if (theLifeCycle != 'keep') {
virtualCookie[name]['theLifeCycle'] = theLifeCycle;
}
virtualCookie[name]['property1'] = '';
virtualCookie[name]['property2'] = '';
virtualCookie[name]['property3'] = '';
GM_setValue('virtualCookie', virtualCookie);
}
obj.getVirtualCookieByName = function (name) {
var virtualCookie = GM_getValue('virtualCookie');
if (virtualCookie == null) {
virtualCookie = {};
}
if (virtualCookie.hasOwnProperty(name)) {
return virtualCookie[name];
} else {
return null;
}
}
obj.judgmentVirtualCookie = function (name) {
var judgment = obj.getVirtualCookieByName(name);
if (judgment == null) {
return false;
} else {
if (obj.get_date_now_ms() - judgment['start_time'] > judgment['theLifeCycle']) {
obj.setVirtualCookie(name, '0', 'keep', 'keep');
return false;
} else {
return true;
}
}
}
obj.delVirtualCookie = function (name) {
console.log('----------判断删除cookie----------');
console.log(name);
var del = obj.getVirtualCookieByName(name);
if (del != null) {
delete del[name];
}
GM_setValue('virtualCookie', del);
}
obj.captureButtonClick = function (cssPath, delay) {
if (cssPath != 'refresh_page') {
setTimeout(() => {
try {
if (document.querySelector(cssPath)) {
document.querySelector(cssPath).click();
}
} catch (e) {
console.log('发现异常,请忽略!')
}
}, delay);
} else {
setTimeout(() => {
location.reload();
}, delay);
}
}
//#region 读取抢购助手方案信息
var obj_plans = GM_getValue('obj_plans');
if (obj_plans == undefined) {
var obj_plans = {};
} else {
var obj_plans = JSON.parse(obj_plans);
console.log('▽所有方案▽');
console.log(obj_plans);
}
//针对京东快速下单,做个类似cookie的东东
var page_type = '';
if (obj.getVirtualCookieByName('mjdLogin') == null) {
obj.setVirtualCookie('mjdLogin', '0', '0', 2 * 60 * 60 * 1000);
}
if (document.referrer.indexOf("plogin.m.jd.com") > -1) {
obj.setVirtualCookie('mjdLogin', '1', obj.get_date_now_ms(), 'keep');
}
var v_cookie = GM_getValue('virtualCookie');
console.log('▽所有任务▽');
console.log(v_cookie);
//#endregion
obj.importPlan = function (from, value) {
// var plan_str = value.replace(/\{/g, "\n{");
// var plan_str = value.replace(/\}/g, "\n}");
// plan_str = plan_str.replace(/\[/g, "\n[");
// plan_str = plan_str.replace(/\]/g, "\n]");
// plan_str = plan_str.replace(/\,/g, "\n");
// swal(plan_str);
if (from == 'plugin') {
try {
var obj_plan_tmp = JSON.parse(value);
var arry_import_planid = obj.getObjKeys(obj_plan_tmp);
obj_plans[arry_import_planid[0]] = obj_plan_tmp[arry_import_planid[0]];
GM_setValue("obj_plans", JSON.stringify(obj_plans));
location.reload();
swal('导入成功');
} catch (e) {
swal(e.message);
}
} else if (from == 'bbs') {
try {
obj.swal_info('确认导入方案吗?', value, '确认导入', function () {
var obj_plan_tmp = JSON.parse(value);
var arry_import_planid = obj.getObjKeys(obj_plan_tmp);
obj_plans[arry_import_planid[0]] = obj_plan_tmp[arry_import_planid[0]];
GM_setValue("obj_plans", JSON.stringify(obj_plans));
location.reload();
swal('导入成功');
})
} catch (e) {
swal(e.message);
}
}
}
//#region 趋势图参数
var chart;
var options = {
title: { // 显示折现图的title
text: '花前省一省-商品历史价格走势图',
fontSize: '12px'
},
markers: {
size: 0,
colors: ['#fbb5b0'],
},
chart: {
height: 200,
width: "100%",
type: "area",
animations: {
initialAnimation: {
enabled: false
}
}
},
series: [
{
name: "价格",
data: []
}
],
xaxis: {
type: "datetime",
labels: {
datetimeFormatter: {
year: 'yyyy',
month: 'MM \-yy',
day: 'yyyy-MM-dd',
hour: 'HH:mm'
}
}
},
stroke: {
curve: 'smooth',
width: [0.5, 0.5, 0.5]
},
colors: ['#F44336'],
dataLabels: {
enabled: false,
style: {
colors: ['#000000']
}
},
tooltip: {
x: {
format: 'yyyy-MM-dd'
},
y: [{
formatter: function (y) {
if (typeof y !== "undefined") {
return y.toFixed(0) + "元";
}
return y;
}
}]
}
}
//#endregion
obj.getNewVersion = function () {
var get_ver_url;
get_ver_url = "https://www.youyizhineng.top/query_coupon/get_version.php";
GM_xmlhttpRequest({
url: get_ver_url,
method: 'GET',
timeout: 10000,
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Cache-Control': 'public'
},
onload: function (xhr) {
const json = JSON.parse(xhr.responseText);
const data = json;
if (version < data.ver) {
$2("#pluginUpdate").css("display", "block");
$2("#pluginUpdate").css("color", data.color);
$2("#pluginUpdate").html(data.text);
$2("#pluginUpdate").click(function () {
GM_openInTab(data.url, { active: true, setParent: true });
});
} else {
$2("#pluginUpdate").parent().css("display", "none");
}
}
});
}
$2.fn.cardTabs = function (options) {
var mainClass = $2(this).attr('class');
var activeCount = 0;
var settings = $2.extend({
theme: '',
}, options);
// Initializing
var htmlInner = $2(this).html();
var stack = $2('<div />').addClass('card-tabs-stack').html(htmlInner);
var bar = $2('<div />').addClass('card-tabs-bar');
$2('.' + mainClass).children('div[data-tab]').each(function () {
bar.append($2('<a />').data('tab', $2(this).data('tab')).append($2(this).data('tab')));
});
$2('.' + mainClass).html('').append(bar).append(stack);
// Fixing the theme
if (settings.theme != '') {
$2('.' + mainClass + ' .card-tabs-bar').addClass(settings.theme);
$2('.' + mainClass + ' .card-tabs-stack').addClass(settings.theme);
}
function toggleTab(obj) {
$2('.' + mainClass + " .card-tabs-stack div[data-tab][data-tab='" + obj.data('tab') + "']").show();
$2('.' + mainClass + " .card-tabs-stack div[data-tab][data-tab!='" + obj.data('tab') + "']").hide();
}
// Checking whether we have to set a tab as active
$2('.' + mainClass + ' .card-tabs-stack').children('div[data-tab]').each(function () {
if ($2(this).hasClass('active')) {
$2('.' + mainClass + " .card-tabs-bar a[data-tab='" + $2(this).data('tab') + "']").addClass('active');
toggleTab($2(this));
$2(this).removeClass('active');
activeCount++;
}
});
// Otherwise, it's the first one, and the first tab in the bar needs to be active
if (activeCount == 0) {
$2('.' + mainClass + ' .card-tabs-bar a:first-child').addClass('active');
}
$2('.' + mainClass + ' .card-tabs-bar a').click(function () {
$2('.' + mainClass + ' .card-tabs-bar a').removeClass('active');
$2(this).addClass('active');
toggleTab($2(this));
});
return this;
};
obj.hasSelectPlan = function () {
var select_val = $2("#panicBuyingPlan").val();
if (select_val == "---请选择---") {
obj.swal_info(null, "您没有选择方案!");
return false;
} else {
return true;
}
}
obj.addPlan = function (value_str) {
var obj_plan_tmp = JSON.parse(value_str);
var arry_import_planid = obj.getObjKeys(obj_plan_tmp);
obj_plans[arry_import_planid[0]] = obj_plan_tmp[arry_import_planid[0]];
GM_setValue("obj_plans", JSON.stringify(obj_plans));
}
//切换tab
obj.select_tab = function (tab_val, display, click) {
var all_tabs = $2('.card-tabs-bar.wiki')[0].childNodes;
for (let i = 0; i < all_tabs.length; i++) {
if (all_tabs[i].text == tab_val) {
all_tabs[i].style.display = display;
if (click == 1) {
all_tabs[i].click();
}
break;
}
}
};
//列表页面操作
obj.initSearchHtml = function (selectorList) {
setInterval(function () {
selectorList.forEach(function (selector) {
obj.initSearchItemSelector(selector);
});
}, 1000);
};
obj.initSearchItemSelector = function (selector) {
$2(selector).each(function () {
obj.initSearchItem(this);
});
};
obj.addClickTask = function (keys) {
console.log(keys);
var time_line = 0;
var refresh_key = '';
while (keys.length) {
for (let i = 0; i < keys.length; i++) {
keys[i]['press_num'] = keys[i]['press_num'] - 1;
//todo 如果是刷新,直接跳出
if (keys[i]['css_path'] == "refresh_page") {
refresh_key = keys[i];
continue;
}
time_line = time_line + Number(keys[i]['press_interval']);
var cssPath = keys[i]['css_path'];
obj.captureButtonClick(cssPath, time_line);
console.log('添加任务:', '时刻' + time_line, keys[i]['key_name'], keys[i]['css_path']);
}
for (let i = keys.length - 1; i >= 0; i--) {
if (keys[i]['press_num'] == 0) {
keys.splice(i, 1);
}
}
}
if (refresh_key != '') {
time_line = time_line + Number(refresh_key['press_interval']);
console.log('添加任务', refresh_key['key_name'], '时刻' + time_line);
// return;
obj.captureButtonClick(refresh_key['css_path'], time_line);
}
}
obj.initSearchItem = function (selector) {
var $this = $2(selector);
var nid;
if ($this.hasClass("tb-cool-box-already")) {
return;
} else {
$this.addClass("tb-cool-box-already");
}
if (obj.site_type() == "taobao_lst_page") {
nid = $this.attr("data-id");
if (!obj.isVailidItemId(nid)) {
nid = $this.attr("data-itemid");
}
if (!obj.isVailidItemId(nid)) {
if ($this.attr("href")) {
nid = location.protocol + $this.attr("href");
} else {
var $a = $this.find("a");
if (!$a.length) { return; }
nid = $a.attr("data-nid");
if (!obj.isVailidItemId(nid)) {
if ($a.hasClass("j_ReceiveCoupon") && $a.length > 1) {
nid = location.protocol + $2($a[1]).attr("href");
} else {
nid = location.protocol + $a.attr("href");
}
}
}
}
}
else if (obj.site_type() == "jingdong_lst_page") {
nid = $this.attr("data-sku");
if (typeof (nid) == "undefined") {
nid = $this.find('.price').attr("data-skuid");
}
if (!obj.isVailidItemId(nid)) {
nid = $this.find(".p-operate").find("a").attr("skuid");
}
}
else if (obj.site_type() == "vip_list_page") {
nid = $this.attr("data-product-id");
if (typeof (nid) == "undefined") {
nid = $this.find('.c-goods-item__sale-price').html().split("</span>")[1];
}
if (!obj.isVailidItemId(nid)) {
// nid = $this.find(".p-operate").find("a").attr("skuid");
}
}
else if (obj.site_type() == "kaola_list_page") {
nid = $this.find('a').eq(0).attr("href").split("/product/")[1].split(".")[0];
}
if (obj.isValidNid(nid)) {
obj.appenBasicQueryHtml($this, nid);
}
};
//图片上显示提示图标
obj.initSearchEvent = function () {
$2(".tb-cool-box-area").live("click", function () {
var Show_hide_div_id = $2(this).attr("name");
var a = document.getElementsByName(Show_hide_div_id)[0].style.opacity;
for (let index = 0; index < document.getElementsByName(Show_hide_div_id).length; index++) {
if (a == "" || a == "1") {
document.getElementsByName(Show_hide_div_id)[index].style.opacity = "0.2";
} else {
document.getElementsByName(Show_hide_div_id)[index].style.opacity = "1";
}
}
});
$2(".tb-cool-box-area-rm").live("click", function () {
var Show_hide_div_id = $2(this).attr("name");
var a = document.getElementsByName(Show_hide_div_id)[0].style.opacity;
for (let index = 0; index < document.getElementsByName(Show_hide_div_id).length; index++) {
if (a == "" || a == "1") {
document.getElementsByName(Show_hide_div_id)[index].style.opacity = "0.2";
} else {
document.getElementsByName(Show_hide_div_id)[index].style.opacity = "1";
}
}
});
};
obj.basicQuery = function () {
setInterval(function () {
$2(".tb-cool-box-wait").each(function () {
obj.basicQueryItem(this);
});
}, 300);
};
obj.basicQuery_list = function () {
setInterval(function () {
if ($2(".tb-cool-box-wait").length > 0) {
query_item_list = query_item_list.substr(0, query_item_list.length - 1);
obj.update_list_data(query_item_list);
query_item_list = '';
}
if ($2(".tb-cool-box-wait-rm").length > 0 && query_data_list_back != '') {
$2(".tb-cool-box-wait-rm").each(function () {
obj.basicQueryListItem(this, query_data_list_back, 'refresh_cashback');
});
query_data_list_back = '';
}
}, 500);
};
obj.update_list_data = function (query_item_list) {
if (query_item_list == '') { return; }
var operate = '';
if (obj.site_type() == "jingdong_lst_page") { operate = "quert_list_jd"; }
else if (obj.site_type() == "vip_list_page") { operate = "quert_list_vip"; }
else if (obj.site_type() == "taobao_lst_page") { operate = "quert_list_tb"; }
else if (obj.site_type() == "kaola_list_page") { operate = "kaola_list"; }
var url = "https://www.youyizhineng.top/query_coupon/query_coupon_v210120.php?operate=" + operate + "&itemid_list=" + query_item_list;
console.log(url);
$2.getJSON(url, function (data) {
// console.log(data);
$2(".tb-cool-box-wait").each(function () {
obj.basicQueryListItem(this, data, '');
});
query_data_list_back = data;
});
}
obj.appenBasicQueryHtml = function (selector, nid) {
if (obj.site_type() == "jingdong_lst_page" || obj.site_type() == "vip_list_page" || obj.site_type() == "taobao_lst_page" || obj.site_type() == "kaola_list_page") {
query_item_list = query_item_list + nid + ",";
}
selector.append(
'<div class="tb-cool-box-area tb-cool-box-wait" data-nid="' + nid + '" name="c_div_' +
nid +
'"><a class="tb-cool-box-info tb-cool-box-info-default" title="点击查询">查询中...</a></div>'
);
selector.append(
'<div class="tb-cool-box-area-rm tb-cool-box-wait-rm" data-nid="' + nid + '" name="r_div_' +
nid +
'"><a class="tb-cool-box-info tb-cool-box-info-default" title="点击查询">查询中...</a></div>'
);
};
obj.basicQueryItem = function (selector) {
var $this = $2(selector);
var url;
$this.removeClass("tb-cool-box-wait");
var nid = $this.attr("data-nid");
url = "https://www.youyizhineng.top/query_coupon/query_coupon_v210120.php?operate=quert_single&itemid=" + nid;
var xhr1 = new XMLHttpRequest();//第一步:新建对象
xhr1.open('GET', url, true);//第二步:打开连接 将请求参数写在url中
xhr1.send();//第三步:发送请求 将请求参数写在URL中
/**
* 获取数据后的处理程序
*/
xhr1.onreadystatechange = function () {
if (xhr1.readyState == 4 && xhr1.status == 200) {
var res = xhr1.responseText;//获取到json字符串,解析
var data = JSON.parse(res);
if (data.couponmoney != 0 || data.return_money_rate != 0) {
obj.showBasicQueryFind($this, data.couponmoney, data.return_money_rate, data.url2, '');
} else {
obj.showBasicQueryEmpty($this);
}
}
}
};
obj.basicQueryListItem = function (selector, data, flag) {
if (flag == 'refresh_cashback') {
var $this = $2(selector).prev();
} else {
var $this = $2(selector);
}
var url;
var each_couponmoney;
var each_return_money_rate;
var each_return_money;
var each_url2;
if ($this.hasClass("tb-cool-box-wait")) {
$this.removeClass("tb-cool-box-wait");
} else {
return;
}
// $this.next().removeClass("tb-cool-box-wait-rm");
var nid = $this.attr("data-nid");
if (typeof (data[nid]) == "undefined") {
each_couponmoney = 0;
each_return_money_rate = 0;
each_url2 = '';
}
else {
each_couponmoney = data[nid].couponmoney;
each_return_money_rate = data[nid].return_money_rate;
if (obj.site_type() == "vip_list_page" || obj.site_type() == "kaola_list_page") {
each_return_money = data[nid].return_money;
}
each_url2 = data[nid].url2;
}
if (each_couponmoney != 0 || each_return_money_rate != 0) {
obj.showBasicQueryFind($this, each_couponmoney, each_return_money_rate, each_url2, each_return_money)
} else {
obj.showBasicQueryEmpty($this);
}
};
obj.showBasicQueryFind = function (selector, couponMoney, rm_Money, url2, return_money) {
var price;
if (selector.find(".tb-cool-box-info-find").length > 0) { return; }
if (couponMoney == "0") {
selector.html(
'<a target="_blank" class="tb-cool-box-info tb-cool-box-info-find" title="显示/隐藏">无券</a>'
);
} else {
selector.html(
'<a target="_blank" class="tb-cool-box-info tb-cool-box-info-find" title="显示/隐藏">有券(减' +
couponMoney +
"元)</a>"
);
}
var url = location.href;
if (url.indexOf("//s.taobao.com/search") > 0 || url.indexOf("//s.taobao.com/list") > 0) {
price = selector.prev().find("strong").html();
if (url2 != '') {
selector.prev().find(".J_ClickStat").attr("href", url2);
selector.prev().prev().find(".pic").find("a").attr("href", url2);
}
}
else if (url.indexOf("//list.tmall.com/search_product.htm") > 0) {
price = selector.prev().find("em").attr('title');
if (price > 0) {
price = selector.prev().find("em").attr('title');
if (url2 != '') {
selector.prev().find(".productTitle").find("a").attr("href", url2);
selector.prev().find(".productImg").attr("href", url2);
}
}
else {
price = selector.prev().find(".item-price").find("strong").html();
}
}
else if (url.indexOf("//list.tmall.hk/search_product.htm") > 0) {
price = selector.prev().find("em").attr('title');
if (url2 != '') {
selector.prev().find(".productTitle").find("a").attr("href", url2);
selector.prev().find(".productImg").attr("href", url2);
}
}
else if (url.indexOf("//maiyao.liangxinyao.com/shop/view_shop.htm") > 0) {
price = selector.prev().prev().find(".c-price").html();
if (price > 0) {
price = selector.prev().prev().find(".c-price").html();
if (url2 != '') {
selector.prev().prev().find("a").attr("href", url2);
selector.prev().prev().prev().find("a").attr("href", url2);
}
}
else {
price = selector.prev().find(".c-price").html();
if (url2 != '') {
selector.prev().find("a").attr("href", url2);
selector.prev().prev().find("a").attr("href", url2);
}
}
}
else if (url.indexOf("//search.jd.com/Search") > 0 || url.indexOf("//list.jd.com/list.html") > 0 || url.indexOf("//i-search.jd.com/Search") > 0) {
price = selector.prev().find(".p-price").find("i").html();
if (price > 0) {
price = selector.prev().find(".p-price").find("i").html();
}
}
else if (url.toLowerCase().indexOf("//search.jd.hk/search".toLowerCase()) > 0) {
price = selector.prev().find(".price").find("span").html().split('>')[2];
}
else if (url.toLowerCase().indexOf("//www.jd.com/xinkuan".toLowerCase()) > 0) {
price = selector.prev().find(".price").find("strong").html().split('¥')[1];
if (price == "暂无报价") { return; }
}
if (obj.site_type() != "vip_list_page" && obj.site_type() != "kaola_list_page") {
var rm_Money_clc = Math.round(Math.floor((price - couponMoney) * rm_Money * 1000) / 10) / 100;
} else {
var rm_Money_clc = Math.floor(return_money * 100) / 100;
}
if (rm_Money_clc < 0) {
rm_Money_clc = Math.round(Math.floor(price * rm_Money * 1000) / 10) / 100;
}
if (rm_Money_clc != 0) {
selector.next().html(
'<a target="_blank" class="tb-cool-box-info tb-cool-box-info-find-rm" title="使用APP「花前省一省」扫码宝贝详情页二维码可得返现">返现(约' +
rm_Money_clc +
"元)</a>"
);
}
else {
selector.next().html(
'<a target="_blank" class="tb-cool-box-info tb-cool-box-info-find" title="显示/隐藏">无返现</a>'
);
}
};
// 最简单数组去重法
obj.uniqueArr = function (array) {
var n = []; //一个新的临时数组
//遍历当前数组
for (var i = 0; i < array.length; i++) {
//如果当前数组的第i已经保存进了临时数组,那么跳过,
//否则把当前项push到临时数组里面
if (n.indexOf(array[i]) == -1 && array[i] != '') n.push(array[i]);
}
return n;
}
obj.isNumber = function (val) {
var regPos = /^\d+(\.\d+)?$/; //非负浮点数
var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
if (regPos.test(val) || regNeg.test(val)) {
return true;
} else {
return false;
}
}
obj.showBasicQueryEmpty = function (selector) {
// selector.addClass("tb-cool-box-info-translucent");
selector.html('<a href="javascript:void(0);" class="tb-cool-box-info tb-cool-box-info-empty" style="opacity:0.5;" title="切换透明度">暂无优惠</a>');
selector.next().html('<a href="javascript:void(0);" class="tb-cool-box-info tb-cool-box-info-empty" style="opacity:0.5;" title="切换透明度">暂无返现</a>');
};
obj.site_type = function () {
var url = location.href;
if (
url.indexOf("//item.taobao.com/item.htm") > 0 ||
url.indexOf("//detail.tmall.com/item.htm") > 0 ||
url.indexOf("//chaoshi.detail.tmall.com/item.htm") > 0 ||
url.indexOf("//detail.tmall.hk/hk/item.htm") > 0 ||
url.indexOf("//detail.liangxinyao.com/item.htm") > 0 ||
url.indexOf("//world.tmall.com") > 0 ||
url.indexOf("//detail.tmall.hk/item.htm") > 0
) {
return "taobao_details_page";
} else if (
url.indexOf("//maiyao.liangxinyao.com/shop/view_shop.htm") > 0 ||
url.indexOf("//list.tmall.com/search_product.htm") > 0 ||
url.indexOf("//s.taobao.com/search") > 0 ||
url.indexOf("//list.tmall.hk/search_product.htm") > 0
) {
return "taobao_lst_page";
}
else if (
url.indexOf("//search.jd.com/Search") > 0 ||
url.indexOf("//search.jd.hk/search") > 0 ||
url.indexOf("//www.jd.com/xinkuan") > 0 ||
url.indexOf("//list.jd.com/list.html") > 0 ||
url.indexOf("//i-search.jd.com/Search") > 0 ||
url.indexOf("//search.jd.hk/Search") > 0
) {
return "jingdong_lst_page";
}
else if (
url.indexOf("//item.jd.hk") > 0 ||
url.indexOf("//pcitem.jd.hk") > 0 ||
url.indexOf("//i-item.jd.com") > 0 ||
url.indexOf("//item.jd.com") > 0
) {
return "jingdong_details_page";
}
else if (
url.indexOf("//category.vip.com/suggest.php") > 0 ||
url.indexOf("//list.vip.com") > 0
) {
return "vip_list_page";
}
else if (
url.indexOf("//detail.vip.com") > 0
) {
return "vip_detail_page";
}
else if (
url.indexOf("//m.vip.com/product") > 0
) {
return "vip_detail_page_m";
}
else if (
url.indexOf("//goods.kaola.com/product") > 0 ||
url.indexOf("//goods.kaola.com.hk/product") > 0
) {
return "kaola_detail_page";
}
else if (
url.indexOf("//search.kaola.com/search.html") > 0
) {
return "kaola_list_page";
}
else if (
url.indexOf("//product.suning.com") > 0
) {
return "suning_detail_page";
}
else if (
url.indexOf("//www.vmall.com/product") > 0
) {
return "huawei_detail_page";
}
}
obj.platform = function () {
var url = location.host;
if (
url.indexOf("taobao.com") > 0 ||
url.indexOf("tmall.com") > 0 ||
url.indexOf("tmall.hk") > 0 ||
url.indexOf("liangxinyao.com") > 0 ||
url.indexOf("alipay.com") > 0
) {
return "taobao";
}
else if (
url.indexOf("jd.com") > 0 ||
url.indexOf("jd.hk") > 0
) {
return "jingdong";
}
else if (
url.indexOf("vip.com") > 0
) {
return "vip";
}
else if (
url.indexOf("kaola.com") > 0
) {
return "kaola";
}
else if (
url.indexOf("suning.com") > 0
) {
return "suning";
}
else if (
url.indexOf("vmall.com") > 0
) {
return "huawei";
}
else if (
url.indexOf("xiaomiyoupin.com") > 0
) {
return "xiaomiyoupin";
} else if (
url.indexOf("pinduoduo.com") > 0
) {
return "pinduoduo";
}
}
obj.isDetailPageTaoBao = function (url) {
if (
url.indexOf("//item.taobao.com/item.htm") > 0 ||
url.indexOf("//detail.tmall.com/item.htm") > 0 ||
url.indexOf("//chaoshi.detail.tmall.com/item.htm") > 0 ||
url.indexOf("//detail.tmall.hk/hk/item.htm") > 0
) {
return true;
} else {
return false;
}
};
obj.DetailPageTB_or_TM_or_JD = function () {
var url = location.href;
if (url.indexOf("//item.taobao.com/item.htm") > 0 ||
url.indexOf("//detail.liangxinyao.com/item.htm") > 0
) {
return 1;
}
else if (
url.indexOf("//detail.tmall.com/item.htm") > 0 ||
url.indexOf("//chaoshi.detail.tmall.com/item.htm") > 0 ||
url.indexOf("//detail.tmall.hk/hk/item.htm") > 0 ||
url.indexOf("//world.tmall.com") > 0 ||
url.indexOf("//detail.tmall.hk/item.htm") > 0
) {
return 2;
}
else if (obj.site_type() == "jingdong_details_page") {
return 3;
}
};
obj.isVailidItemId = function (itemId) {
if (!itemId) {
return false;
}
var itemIdInt = parseInt(itemId);
if (itemIdInt == itemId && itemId > 10000) {
return true;
} else {
return false;
}
};
obj.isValidNid = function (nid) {
if (!nid) {
return false;
} else if (nid.indexOf("http") >= 0) {
if (obj.isDetailPageTaoBao(nid) || nid.indexOf("//detail.ju.taobao.com/home.htm") > 0) {
return true;
} else {
return false;
}
} else {
return true;
}
};
obj.get_tb_price = function (price_str) {
var price = '';
if (price_str != null) {
if (price_str.indexOf("-") > 0) {
price = price_str.split("-")[0];
}
else {
price = price_str;
}
}
return price;
};
obj.get_data = function () {
// alert(1);
var operate = '';
if (obj.site_type() == "vip_detail_page") {
if (location.href.indexOf("wq=1") > 0) { return; }
operate = "get_info_vip&vip_type=1";
} else if (obj.site_type() == "vip_detail_page_m") {
var arry_url_tmp = location.href.split('m.vip.com/product');
window.location.href = arry_url_tmp[0] + 'detail.vip.com/detail' + arry_url_tmp[1];
stop = '1';
return;
}
var url = "https://www.youyizhineng.top/query_coupon/query_coupon_v210120.php?operate=get_info&data_i=" + encodeURIComponent(location.href);
console.log(url);
console.log('=============================');
$2.ajax({
url: url,
async: false,
timeout: 500,
// dataType: "json",
success: function (data) {
try {
// console.log(data);
var data_tmp = JSON.parse(data);
if (obj.site_type() == "taobao_details_page") {
if (data_tmp.data_ii > 0) { return; }
}
if (data_tmp.data_i != null) {
window.location.href = data_tmp.data_i;
stop = '1';
}
} catch { }
}
})
};
obj.generate_trend_data = function (all_begin_time, all_line) {
if (all_line.length > 0) {
for (let index = 0; index < all_line.length; index++) {
var data_tmp = {};
var newTime = new Date(all_begin_time);
newTime = newTime.setDate(newTime.getDate() + index);
newTime = new Date(newTime);
var newTime_d = (newTime.getMonth() + 1).toString().padStart(2, '0') + "-" + newTime.getDate().toString().padStart(2, '0') + "-" + newTime.getFullYear() + " GMT";
data_tmp["x"] = newTime_d;
data_tmp["y"] = all_line[index];
options.series[0].data.push(data_tmp);
}
}
};
obj.query_trend_data = function () {
//获得价格波动var url = location.href;
var gwdUrl = "https://browser.gwdang.com/extension/price_towards?url=" + encodeURIComponent(location.href);
GM_xmlhttpRequest({
url: gwdUrl,
method: 'GET',
timeout: 10000,
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Cache-Control': 'public'
},
onload: function (res) {
//loadingMask.parentNode.removeChild(mask);
const json = JSON.parse(res.responseText);
const data = json;
if (data.is_ban == null) {
// console.log(typeof (data.store));
var all_line;
var all_begin_time;
if ($2("#float_div").css("display") == "block") {
location.reload();
}
if (typeof (data.store) != "undefined" && data.store[0].all_line != null) {
all_begin_time = data.store[0].all_line_begin_time;
all_line = data.store[0].all_line;
if (all_line.length != 0) {
obj.generate_trend_data(all_begin_time, all_line);
} else {
options.title.text = "花前省一省-本商品暂无历史数据";
}
}
else {
options.title.text = "花前省一省-本商品暂无历史数据";
}
// console.log(check_url);
} else {
options.title.text = "本次需要验证:【点击上方按钮进行验证】";
check_url = data.action.to;
}
obj.add_iframe();
}
});
}
obj.add_iframe = function () {
if (options.title.text == "花前省一省-本商品暂无历史数据") {
$2(".image-status").attr("title", "历史数据加载成功");
$2(".image-status").attr("src", "https://s1.ax1x.com/2020/10/26/BnYQkn.png");
$2(".status-span").html("经查询,本商品暂无历史数据");
$2("#coupon-wrap-trend").css("display", "none");
$2(".trend-div").css("display", "none");
}
else if (options.series[0].data.length > 0) {
$2(".image-status").attr("title", "历史数据加载成功");
$2(".image-status").attr("src", "https://s1.ax1x.com/2020/10/26/BnYQkn.png");
chart = new ApexCharts(document.querySelector("#chart"), options);
chart.render();
} else {
//在chart上提示显示文字
$2(".trend-div").append('<span class="cover-chart-span"></span>');
$2(".image-status").attr("title", "需要验证");
$2(".image-status").attr("src", "https://s1.ax1x.com/2020/10/26/BnYkfP.gif");
$2(".image-status").css("cursor", "pointer");
$2("#coupon-wrap-trend").css("display", "none");
$2(".status-span").html("← 点击左侧按钮验证");
$2(".image-status").click(function (event) {
$2("body").append('<div id="float_div" class="frame_div"></div>');
document.getElementById("float_div").style.left = (window.screen.width - 800) / 2 + "px";
document.getElementById("float_div").style.top = (window.screen.height - 500) / 2 + "px";
$2("#float_div").append('<iframe id="iframe_check" src="" ></iframe>');
$2("#iframe_check").attr("src", check_url);
$2("#iframe_check").attr("scrolling", "no");
$2("#float_div").append('<div class="cover"><img src="https://s1.ax1x.com/2020/09/23/wjSB4K.png" alt="未命名1600825169" border="0"><br>验证后将自动刷新,若一直验证失败,<a style="color:red" target="_blank" href="' + check_url + '">点击此处</a>在独立页面中验证后关闭即可</div>');
$2("#float_div").css("display", "none");
//关闭按钮
$2("#float_div").append('<img class="cover-close" src="https://s1.ax1x.com/2020/10/26/BnYYXF.png" ></img>');
$2(".cover-close").click(function (event) {
$2("#float_div").css("display", "none");
});
if ($2("#float_div").css("display") == "block") {
$2("#float_div").css("display", "none");
} else {
$2("#float_div").css("display", "block");
var w_check = setInterval(function () {
obj.query_trend_data();
if (options.series[0].data.length > 0) {
// console.log(options);
$2("#float_div").css("display", "none");
chart = new ApexCharts(document.querySelector("#chart"), options);
chart.render();
clearInterval(w_check);
}
}, 1000);
}
});
}
}
obj.close = function () {
window.close();
}
obj.cssPath = function (el) {
if (!(el instanceof Element)) {
return;
}
var path = [];
while (el.nodeType === Node.ELEMENT_NODE) {
var selector = el.nodeName.toLowerCase();
if (el.id) {
selector += '#' + el.id;
path.unshift(selector);
break;
} else if (document.getElementsByClassName(el.className).length == 1) {
var str_class = $2.trim(el.className);
str_class = str_class.replace(/\s+/g, ' ');
selector += '.' + str_class.replace(/\ /g, '.');
path.unshift(selector);
break;
}
else {
var sib = el, nth = 1;
while (sib = sib.previousElementSibling) {
if (sib.nodeName.toLowerCase() == selector) {
nth++;
}
}
if (nth != 1) {
selector += ":nth-of-type(" + nth + ")";
}
}
path.unshift(selector);
el = el.parentNode;
}
return path.join(" > ");
}
obj.isParent = function (obj, parentObj) {
while (obj != undefined && obj != null && obj.tagName != null && obj.tagName.toUpperCase() != 'BODY') {
if (obj == parentObj) { return true; }
obj = obj.parentNode;
}
return false;
}
obj.clearAllNodes = function () {
document.getElementById('displayButton').innerHTML = '';
}
//#region 初始化设置
obj.initialSetup = function () {
}
//#endregion 初始化设置
var startMonitoringFlag = '0'
var settime_ms = 0
var criticalValue = 30000 //0.5分钟
var settime_ms_difference_last = criticalValue;
obj.timing = function (operate) {
setInterval(function () {
var timestamp = $2('#time_span_ms').html();
var num_timestamp = Number(timestamp);
var num_timestamp_now = num_timestamp + 50;
var mydate_tmp = new Date(num_timestamp);
// $2('#time_span').html(mydate_tmp.toLocaleString('chinese', { hour12: false, year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' }) + ' ' + mydate_tmp.getMilliseconds());
$2('#time_span').html(mydate_tmp.Format("yyyy-MM-dd hh:mm:ss") + ' ' + mydate_tmp.getMilliseconds());
$2('#time_span_ms').html(num_timestamp_now);
if (startMonitoringFlag == '1') {
//开启监控后
var settime_ms_difference_current = settime_ms - num_timestamp_now;
if (settime_ms_difference_current <= 0) {
var planId = $2("#panicBuyingPlan").val();
var key_info = JSON.parse(JSON.stringify(obj_plans[planId]['keys'][location.host]));
var second = Number($2('#duration').val());
if (isNaN(second)) {
second = 60;
}
obj.setVirtualCookie(planId, '1', obj.get_date_now_ms(), second * 1000);
obj.addClickTask(key_info);
startMonitoringFlag = '0';
$2('#runStatus').val('方案已经执行,可在运行中的里面找到方案并停止');
}
else if (settime_ms_difference_current < criticalValue) {
$2('#runStatus').val('倒计时:' + ((settime_ms_difference_current) / 1000).toString() + '秒');
}
else {
$2('#runStatus').val('开始监控,将在 ' + criticalValue / 1000 + '秒后开始倒计时并自动同步时间');
}
if (settime_ms_difference_current <= criticalValue && settime_ms_difference_last >= criticalValue) {
obj.syntime();
}
settime_ms_difference_last = settime_ms_difference_current;
} else {
// $2('#runStatus').val('等待抢购,请确保已经登陆并已经选好商品规格');
}
}, 50);
}
obj.startMonitoring = function (planId, info) {
if (info == "first_page") {
} else {
}
}
obj.stopMonitoring = function () {
}
//#region 跳转到新方案页
obj.bindingNotCompleted = function (info) {
//todo 如果是新建
if (info == 'new') {
obj.clearAllNodes();
var plan_id = 'plan_' + obj.get_date_now_ms();
$2("#planId").html(plan_id);
$2("#isFinish").html('0');
}
else {
obj.clearAllNodes();
var plan_id = info;
$2("#planId").html(plan_id);
$2("#isFinish").html(obj_plans[plan_id]['isfinish']);
$2("#planName").val(obj_plans[plan_id]['plan_name']);
$2("#planInfo").val(obj_plans[plan_id]['plan_info']);
var arry_plan_keys = [];
for (var p in obj_plans[plan_id].keys) {
arry_plan_keys.push(p);
}
for (let index = 0; index < arry_plan_keys.length; index++) {
if (arry_plan_keys[index] != location.host) {
var host_tmp = arry_plan_keys[index];
var new_div = document.createElement("div");
new_div.id = host_tmp;
new_div.setAttribute('data-domainName', host_tmp);
document.getElementById('displayButton').appendChild(new_div);
var new_span = document.createElement("span");
new_span.className = 'dynamicHostSpan';
new_span.innerHTML = '[已保存] ' + '页面:' + host_tmp;
document.getElementById(host_tmp).appendChild(new_span);
for (let j = 0; j < obj_plans[plan_id]['keys'][host_tmp].length; j++) {
var key_info = obj_plans[plan_id]['keys'][host_tmp][j];
var new_div = document.createElement("div");
new_div.className = 'dynamicDIV';
var new_span = document.createElement("span");
new_span.innerText = '▶' + key_info['key_name'];
new_span.title = '▶' + key_info['key_name'] + "\n" + key_info['css_path'];
new_span.className = 'dynamicSpan';
if (key_info['css_path'] == "refresh_page") {
new_span.style.color = 'red';
}
new_div.appendChild(new_span);
new_span = document.createElement("span");
new_span.innerHTML = '    配置:';
if (key_info['css_path'] == "refresh_page") {
new_span.innerHTML = '    配置:';
}
new_span.title = '例:按钮总共点击3次,与上一个按钮间隔200毫秒,输入3-200';
new_span.style.color = 'green';
new_span.style.verticalAlign = 'middle';
new_div.appendChild(new_span);
var new_input = document.createElement("input");
new_input.className = 'dynamicInput';
new_input.placeholder = '格式:次数-间隔(毫秒)';
new_input.value = (key_info['press_num'] + '-' + key_info['press_interval']);
if (key_info['css_path'] == "refresh_page") {
new_input.placeholder = '刷新按钮只能配置为1-xx';
new_input.id = host_tmp + "_refresh_page";
}
new_div.appendChild(new_input);
new_span = document.createElement("span");
new_span.innerHTML = key_info['css_path'];
new_span.style.display = 'none';
new_div.appendChild(new_span);
document.getElementById(host_tmp).appendChild(new_div);
}
}
}
if ($2.inArray(location.host, arry_plan_keys) >= 0) {
var new_div = document.createElement("div");
new_div.id = location.host;
new_div.setAttribute('data-domainName', location.host);
document.getElementById('displayButton').appendChild(new_div);
var new_span = document.createElement("span");
new_span.className = 'dynamicHostSpan';
new_span.innerHTML = '[已保存] ' + '页面:' + location.host;
document.getElementById(location.host).appendChild(new_span);
for (let j = 0; j < obj_plans[plan_id]['keys'][location.host].length; j++) {
var key_info = obj_plans[plan_id]['keys'][location.host][j];
var new_div = document.createElement("div");
new_div.className = 'dynamicDIV';
var new_span = document.createElement("span");
new_span.innerText = '▶' + key_info['key_name'];
new_span.title = '▶' + key_info['key_name'] + "\n" + key_info['css_path'];
new_span.className = 'dynamicSpan';
if (key_info['css_path'] == "refresh_page") {
new_span.style.color = 'red';
}
new_div.appendChild(new_span);
new_span = document.createElement("span");
new_span.innerHTML = '    配置:';
if (key_info['css_path'] == "refresh_page") {
new_span.innerHTML = '    配置:';
}
new_span.title = '例:按钮总共点击3次,与上一个按钮间隔200毫秒,输入3-200';
new_span.style.color = 'green';
new_span.style.verticalAlign = 'middle';
new_div.appendChild(new_span);
var new_input = document.createElement("input");
new_input.className = 'dynamicInput';
new_input.placeholder = '格式:次数-间隔(毫秒)';
new_input.value = (key_info['press_num'] + '-' + key_info['press_interval']);
if (key_info['css_path'] == "refresh_page") {
new_input.placeholder = '刷新按钮只能配置为1-xx';
new_input.id = location.host + "_refresh_page";
}
new_div.appendChild(new_input);
new_span = document.createElement("span");
new_span.innerHTML = key_info['css_path'];
new_span.style.display = 'none';
new_div.appendChild(new_span);
document.getElementById(location.host).appendChild(new_div);
}
}
}
//todo 如果有传参则参数为planid
}
obj.switchToNew = function (source) {
obj.select_tab('新方案', '', 1);
if (source == 'edit_button') {
obj.bindingNotCompleted($2("#panicBuyingPlan").val());
return;
}
var arry_plans_code = [];
for (var p in obj_plans) {
arry_plans_code.push(p);
}
for (let index = 0; index < arry_plans_code.length; index++) {
if (obj_plans[arry_plans_code[index]]['isfinish'] == '0') {
console.log('未完成');
if (source != null && source == 'new_button') {
obj.swal_info(null, '您有尚未保存的方案,保存后才能新建');
}
obj.bindingNotCompleted(arry_plans_code[index]);
return;
}
}
obj.bindingNotCompleted('new');
}
//#endregion
//#region obj.initializePanicBuyingAssistant 抢购助手初始化
var listen_click = '0';
obj.captureExecution = function (target) {
if (listen_click == '0') { return; }
if (obj.isParent(target, document.getElementById("coupon-wrap-qr"))) {
return;
} else if (obj.isParent(document.getElementById("coupon-wrap-qr"), target)) {
return;
}
if (target.id == "button_capture" || target.id == "button_saveThisPage" || target.innerText == "完成") {
return;
}
if (obj.isParent(target, document.getElementsByClassName('swal-overlay'))) {
return;
}
var cssTargetStr = obj.cssPath(target);
if (document.getElementById(location.host) == null) {
var new_div = document.createElement("div");
new_div.id = location.host;
new_div.setAttribute('data-domainName', location.host);
document.getElementById('displayButton').appendChild(new_div);
var new_span = document.createElement("span");
new_span.className = 'dynamicHostSpan';
new_span.innerHTML = '[未保存] ' + '页面:' + location.host;
document.getElementById(location.host).appendChild(new_span);
} else {
document.getElementById(location.host).childNodes[0].innerHTML = '[未保存] ' + '页面:' + location.host;
}
if (document.getElementById(location.host).lastChild.firstChild.innerText == "▶刷新页面") {
obj.swal_fadeAway("刷新操作后不能再添加按钮~", 1200);
return;
}
var new_div = document.createElement("div");
new_div.className = 'dynamicDIV';
new_span = document.createElement("span");
if (target.innerText != null) {
new_span.innerText = '▶' + target.innerText.replace('\n', ' ');
new_span.title = '▶' + target.innerText + "\n" + cssTargetStr;
} else {
new_span.innerText = '▶找不到名称';
new_span.title = '▶找不到名称' + "\n" + cssTargetStr;
}
new_span.className = 'dynamicSpan';
new_div.appendChild(new_span);
new_span = document.createElement("span");
new_span.innerHTML = '    配置:';
new_span.title = '例:按钮总共点击3次,与上一个按钮间隔200毫秒,输入3-200';
new_span.style.color = 'green';
new_span.style.verticalAlign = 'middle';
new_div.appendChild(new_span);
var new_input = document.createElement("input");
new_input.className = 'dynamicInput';
new_input.placeholder = '格式:次数-间隔(毫秒)';
new_div.appendChild(new_input);
new_span = document.createElement("span");
new_span.innerHTML = cssTargetStr;
new_span.style.display = 'none';
new_div.appendChild(new_span);
document.getElementById(location.host).appendChild(new_div);
target.remove();
}
obj.bindPlanInfo = function (planId) {
var info_str = '方案编号:' + planId + '\n';
info_str += '方案名称:' + obj_plans[planId]['plan_name'] + '\n';
info_str += '方案说明:' + obj_plans[planId]['plan_info'] + '\n';
var arry_hosts = obj.getObjKeys(obj_plans[planId]['keys']);
for (let i = 0; i < arry_hosts.length; i++) {
info_str += '\n作用页面:' + arry_hosts[i] + '\n';
var keyInfo = obj_plans[planId]['keys'][arry_hosts[i]];
for (let j = 0; j < keyInfo.length; j++) {
info_str += ' 点击--' + keyInfo[j].key_name + '\n';
}
}
$2('#imgPlanInfo').attr('title', info_str);
}
obj.setSelect = function (id, text) {
var count = $2("#" + id).get(0).options.length;
for (var i = 0; i < count; i++) {
if ($2("#" + id).get(0).options[i].text == text) {
$2("#" + id).get(0).options[i].selected = true;
break;
}
}
}
var mouse_TO = '';
obj.initializePanicBuyingAssistant = function (type) {
if (page_type == 'other_page') {
document.getElementById('float_assistant').onmouseenter = function () {
if (mouse_TO != '') {
clearTimeout(mouse_TO);
}
obj.getNewVersion();
$2('#float_assistant')[0].children[0].style.display = 'inline-block';
$2('#float_assistant')[0].children[1].style.display = 'none';
$2('#float_assistant')[0].style.borderRadius = "6px";
$2('#float_assistant')[0].style.padding = "10px 10px 0px 10px ";
}
document.getElementById('float_assistant').onmouseleave = function () {
mouse_TO = setTimeout(() => {
$2('#float_assistant')[0].children[1].style.display = 'block';
$2('#float_assistant')[0].children[0].style.display = 'none';
$2('#float_assistant')[0].style.borderRadius = "99px";
$2('#float_assistant')[0].style.padding = "3px";
}, 500);
}
document.getElementById('float_assistant').onmousedown = function (e) {
var e = e || window.event
if (e.button == "1") {
$2('#float_assistant').css('display', 'none');
}
}
} else {
obj.getNewVersion();
}
//时钟同步源选择
if (obj.platform() == "taobao") {
obj.setSelect('syn_time_api', '源:淘宝服务器时间');
} else if (obj.platform() == "jingdong") {
obj.setSelect('syn_time_api', '源:京东服务器时间');
} else if (obj.platform() == "suning") {
obj.setSelect('syn_time_api', '源:苏宁服务器时间');
} else if (obj.platform() == "huawei") {
obj.setSelect('syn_time_api', '源:华为商城服务器时间');
} else if (obj.platform() == "xiaomiyoupin") {
obj.setSelect('syn_time_api', '源:小米有品服务器时间');
} else if (obj.platform() == "pinduoduo") {
obj.setSelect('syn_time_api', '源:拼多多服务器时间');
} else {
obj.setSelect('syn_time_api', '源:本页面服务器(精确到秒)');
}
$2("#duration").val(60);
//绑定方案
var arryPlanId = obj.getObjKeys(obj_plans);
var select_plans = document.getElementById('panicBuyingPlan');
for (let i = 0; i < arryPlanId.length; i++) {
if (obj_plans[arryPlanId[i]]['isfinish'] == '0')
continue;
var new_option = document.createElement('option');
new_option.value = arryPlanId[i];
new_option.innerText = obj_plans[arryPlanId[i]]['plan_name'];
select_plans.appendChild(new_option);
}
//绑定任务inProgress
var array_task = obj.getObjKeys(v_cookie);
for (let i = 0; i < array_task.length; i++) {
if (array_task[i] == 'mjdLogin') continue;
if (obj_plans[array_task[i]] == null || obj_plans[array_task[i]] == undefined) {
obj.delVirtualCookie(array_task[i]);
continue;
}
if (array_task[i].indexOf('plan_') > -1 && v_cookie[array_task[i]]['active'] == '1' && obj.judgmentVirtualCookie(array_task[i])) {
//绑定任务inProgress
var inProgress_plans = document.getElementById('inProgress');
console.log(inProgress_plans);
var new_option = document.createElement('option');
new_option.value = array_task[i];
new_option.innerText = obj_plans[array_task[i]]['plan_name'];
inProgress_plans.appendChild(new_option);
}
}
$2('#button_delTask').click(function () {
obj.swal_info(null, "即将停止任务:" + $2("#inProgress").find("option:selected").text(), "确定", function () {
obj.delVirtualCookie($2("#inProgress").val());
location.reload();
})
});
$2("#pageUrl").text(location.host);
obj.select_tab('新方案', 'none', 0);
var myDate = obj.get_date_now_ms();
$2('#time_span_ms').html(myDate);
$2('#button_syn').click(function () {
obj.syntime();
});
$2('#button_getCurrentTime').click(function () {
var myDate = new Date();
// $2('#set_time').attr("value", myDate.toLocaleString('chinese', { hour12: false, year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' }));
$2('#set_time').attr("value", myDate.Format("yyyy-MM-dd hh:mm:ss"));
});
$2('#panicBuyingPlan').change(function () {
var planId = $2(this).val();
if (obj_plans[planId]['jd_spike'] == '1') {
var active = '1';
if (!obj.judgmentVirtualCookie('mjdLogin')) {
active = '0';
console.log('过期');
}
if (active == '0') {
obj.swal_info(null, '选择京东极速下单方案后,请点击"去登陆"确保已经登陆了web版京东~,本消息2小时内不再提醒', '去登陆', function () { $2('#mjdLogin')[0].click() })
}
}
obj.bindPlanInfo(planId);
});
$2('#button_delPlan').click(function () {
if (!obj.hasSelectPlan()) {
return;
}
var select_val = $2("#panicBuyingPlan").val();
var plan_name = obj_plans[select_val]['plan_name'];
obj.swal_info(null, '即将删除方案!方案名称:' + plan_name, "确认删除", function () {
delete obj_plans[select_val]
GM_setValue("obj_plans", JSON.stringify(obj_plans));
location.reload();
});
});
$2('#button_newPlan').click(function () {
obj.switchToNew('new_button');
});
$2('#button_editPlan').click(function () {
if (!obj.hasSelectPlan()) {
return;
}
obj.switchToNew('edit_button');
});
$2('#viewTutorial').click(function () {
GM_openInTab('https://bbs.youyizhineng.top/d/10', { active: true, setParent: true });
});
$2('.sys-description').css("display", 'none');
$2('#viewDescription').click(function () {
if ($2('#viewDescription').text().indexOf("展开") > -1) {
$2('.sys-description').css("display", 'block');
$2('#viewDescription').text(">>隐藏说明");
} else {
$2('.sys-description').css("display", 'none');
$2('#viewDescription').text(">>展开说明");
}
});
$2('#button_startNow').click(function () {
//检查是否是京东快速通道并登陆
var select_val = $2("#panicBuyingPlan").val();
//设定的时间转毫秒
var set_time = $2('#set_time').val();
if (select_val == "---请选择---") {
obj.swal_info(null, "您没有选择方案,请选择合适的方案哦~");
return;
}
var arry_plans = obj.getObjKeys(obj_plans[select_val]['keys']);
if (arry_plans.length > 0 && $2.inArray(location.host, arry_plans) == -1) {
obj.swal_info(null, "选中的方案不可作用于本页哦~");
return;
}
else if (obj_plans[select_val]['jd_spike'] == '1' && !obj.judgmentVirtualCookie('mjdLogin')) {
obj.swal_info(null, '选择京东极速下单方案后,请点击"去登陆"确保已经登陆了web版京东~,本消息2小时内不再提醒', '去登陆', function () { $2('#mjdLogin')[0].click() })
return;
} else {
settime_ms = 0;
startMonitoringFlag = '1';
$2('#runStatus').val('方案已经执行,可在运行中的里面找到方案并停止');
}
});
$2('#button_startMonitoring').click(function () {
//添加任务到v_cookie
if (startMonitoringFlag == '1') {
startMonitoringFlag = '0';
$2('#button_startMonitoring').text('开始执行');
$2('#button_startMonitoring').css('background-color', '#25a765');
$2('#button_startMonitoring').css('color', '#ffffff');
$2("#panicBuyingPlan").attr("disabled", false);
$2("#set_time").attr("disabled", false);
$2("#syn_time_api").attr("disabled", false);
$2("#set_time_ms").attr("disabled", false);
$2("#earlyOrLate").attr("disabled", false);
$2('#runStatus').val('等待抢购,请确保已经登陆并已经选好商品规格');
} else {
//检查是否是京东快速通道并登陆
var select_val = $2("#panicBuyingPlan").val();
//设定的时间转毫秒
var set_time = $2('#set_time').val();
if (select_val == "---请选择---") {
obj.swal_info(null, "您没有选择方案,请选择合适的方案哦~");
return;
}
var arry_plans = obj.getObjKeys(obj_plans[select_val]['keys']);
if (arry_plans.length > 0 && $2.inArray(location.host, arry_plans) == -1) {
obj.swal_info(null, "选中的方案不可作用于本页哦~");
return;
}
else if (obj_plans[select_val]['jd_spike'] == '1' && !obj.judgmentVirtualCookie('mjdLogin')) {
obj.swal_info(null, '选择京东极速下单方案后,请点击"去登陆"确保已经登陆了web版京东~,本消息2小时内不再提醒', '去登陆', function () { $2('#mjdLogin')[0].click() })
return;
}
else if (set_time == '') {
obj.swal_info(null, "设定时间不能为空");
return;
} else {
var d = new Date(set_time);
var d_ms = Number(d);
if (isNaN(Number(d))) {
obj.swal_info(null, "请输入正确的时间格式");
} else {
startMonitoringFlag = '1';
$2('#button_startMonitoring').text('监控中..');
$2('#button_startMonitoring').css('background-color', '#ffcc00');
$2('#button_startMonitoring').css('color', '#000000');
$2("#panicBuyingPlan").attr("disabled", true);
$2("#set_time").attr("disabled", true);
$2("#syn_time_api").attr("disabled", true);
$2("#set_time_ms").attr("disabled", true);
$2("#earlyOrLate").attr("disabled", true);
if ($2('#earlyOrLate').val() == 'inAdvance') {
settime_ms = d_ms - Number($2('#set_time_ms').val());
} else {
settime_ms = d_ms + Number($2('#set_time_ms').val());
}
}
}
}
});
$2('#button_saveThisPage').click(function () {
// console.log($2("#planName").text());
var error = 0;
if ($2("#planName").val() == '') {
// obj.swal_info(null, "方案名称不可为空!");
obj.swal_fadeAway("方案名称不可为空!", 1200);
return;
}
if ($2("#planName").val() == '') {
// obj.swal_info(null, "方案名称不可为空!");
obj.swal_fadeAway("方案名称不可为空!", 1200);
return;
}
if ($2("#planInfo").val() == '') {
// obj.swal_info(null, "方案描述不可为空!");
obj.swal_fadeAway("方案描述不可为空!", 1200);
return;
}
if ($2("#displayButton").find('div').length == 0) {
// obj.swal_info(null, "没有捕获任何按键!");
obj.swal_fadeAway("没有捕获任何按键!", 1200);
return;
} else {
GM_setValue('newPlanFinish', '0');
//todo 保存本页配置项
var plan_id = $2("#planId").text();
obj_plans[plan_id] = {};
obj_plans[plan_id]['plan_name'] = $2("#planName").val();
obj_plans[plan_id]['plan_info'] = $2("#planInfo").val();
obj_plans[plan_id]['plan_type'] = '1';
obj_plans[plan_id]['jd_spike'] = '0';
obj_plans[plan_id]['plan_attributes1'] = '';
obj_plans[plan_id]['plan_attributes2'] = '';
obj_plans[plan_id]['plan_attributes3'] = '';
obj_plans[plan_id]['isfinish'] = '0';
obj_plans[plan_id]['keys'] = {};
for (var i = 0; i < $2(".dynamicHostSpan").length; i++) {
var host = $2(".dynamicHostSpan")[i].textContent.split(':')[1];
obj_plans[plan_id]['keys'][host] = [];
for (var j = 1; j < $2('[data-domainname="' + host + '"]')[0].childNodes.length; j++) {
var childnodes = $2('[data-domainname="' + host + '"]')[0].childNodes[j];
var key_info = {};
var input_val = childnodes.childNodes[2].value;
if (!(input_val.indexOf('-') > 0) ||
input_val.split('-').length < 2 ||
!obj.isNumber(input_val.split('-')[0]) ||
!obj.isNumber(input_val.split('-')[1])
) {
error = error + 1;
input_val = '1-200';
}
key_info['key_name'] = childnodes.childNodes[0].textContent.split('▶')[1];
key_info['press_num'] = input_val.split('-')[0];
key_info['press_interval'] = input_val.split('-')[1];
key_info['css_path'] = childnodes.childNodes[3].textContent;
if (childnodes.childNodes[3].textContent == "refresh_page") {
key_info['press_num'] = '1';
}
if (input_val.split('-')[0] != '0') {
obj_plans[plan_id]['keys'][host].push(key_info);
}
}
if (obj_plans[plan_id]['keys'][host].length == 0) {
delete obj_plans[plan_id]['keys'][host];
}
GM_setValue("obj_plans", JSON.stringify(obj_plans));
}
}
if (error > 0) {
listen_click = '0';
obj.swal_info(null, "发现有错误的配置项,已将错误的配置项自动调整为1-200!", null, function () { location.reload(); })
} else {
location.reload();
}
});
$2('#planCompleted').click(function () {
for (let i = 0; i < $2('.dynamicHostSpan').length; i++) {
if ($2('.dynamicHostSpan')[i].innerText.indexOf('未保存') > 0) {
obj.swal_fadeAway("请先保存本页!", 1200);
return;
}
}
GM_setValue('newPlanFinish', '1');
obj_plans[$2("#planId").text()]['isfinish'] = '1';
GM_setValue("obj_plans", JSON.stringify(obj_plans));
location.reload();
});
$2('#temporaryBlock').click(function () {
obj.swal_info(null, "鼠标放在悬浮球上点击中键也可临时屏蔽悬浮球", "我知道了", function () {
$2('#float_assistant').css('display', 'none');
})
});
$2('#save_temporaryBlock').click(function () {
var textarea_text = $2('#textarea_xzs').val();
GM_setValue('blockUrl', textarea_text);
//保存白名单
var textarea_text = $2('#textarea_wlist').val();
var arry_wlist = textarea_text.split("\n");
var str_wlist = obj.uniqueArr(arry_wlist).join("\n");
GM_setValue('passUrl', str_wlist);
for (let i = 0; i < $2('.radio_ss').length; i++) {
if ($2('.radio_ss')[i].checked) {
GM_setValue('BWlist_sel', $2('.radio_ss')[i].value);
break;
}
}
obj.swal_info(null, "保存成功!", "确定", function () {
location.reload();
});
});
$2('#permanentlyBlock').click(function () {
var textarea_text = $2('#textarea_xzs').val();
var textarea_hosts = textarea_text.split("\n");
if (textarea_hosts.length > 0 && $2.inArray(location.host, textarea_hosts) > -1) {
obj.swal_info(null, "本域名已在屏蔽列表!");
} else {
textarea_hosts.push(location.host);
var textarea_hosts = textarea_hosts.filter(function (s) {
return s && s.trim(); // 注:IE9(不包含IE9)以下的版本没有trim()方法
});
var val_new_url = textarea_hosts.join("\n");
$2('#textarea_xzs').val(val_new_url);
GM_setValue('blockUrl', val_new_url);
obj.swal_info(null, "添加成功!", null, function () {
$2('#float_assistant').css('display', 'none');
});
}
});
$2('#passThisPage').click(function () {
$2('#textarea_wlist').val(location.host + "\n" + $2('#textarea_wlist').val());
});
$2('#button_add_refresh').click(function () {
listen_click = '0';
obj.swal_info(null,
"小提示:\n1.添加刷新页面按钮后,将无法继续捕获按钮\n2.刷新页面按钮前必须有已经捕获的按钮\n3.刷新页面按钮只能添加一个\n4.刷新操作将在所有按钮点击完毕后执行",
"确定添加",
function () {
if (document.getElementById(location.host) == null) {
obj.swal_fadeAway("添加刷新之前必须要有已捕捉的按钮!", 1200);
} else if (document.getElementById(location.host + "_refresh_page")) {
obj.swal_fadeAway("刷新页面操作只能添加一个!", 1200);
} else {
var new_div = document.createElement("div");
new_div.className = 'dynamicDIV';
var new_span = document.createElement("span");
new_span.innerText = '▶刷新页面';
new_span.style.color = 'red';
new_span.title = '▶刷新页面';
new_span.className = 'dynamicSpan';
new_div.appendChild(new_span);
new_span = document.createElement("span");
new_span.innerHTML = '    配置:';
new_span.title = '例:按钮总共点击3次,与上一个按钮间隔200毫秒,输入3-200';
new_span.style.color = 'green';
new_span.style.verticalAlign = 'middle';
new_div.appendChild(new_span);
var new_input = document.createElement("input");
new_input.className = 'dynamicInput';
new_input.placeholder = '刷新按钮只能配置为1-xx';
// new_input.style.display = 'none';
new_input.value = '1-200';
new_div.appendChild(new_input);
new_input.id = location.host + "_refresh_page";
new_span = document.createElement("span");
new_span.innerHTML = 'refresh_page';
new_span.style.display = 'none';
new_div.appendChild(new_span);
document.getElementById(location.host).appendChild(new_div);
}
})
});
$2('#button_capture').click(function () {
if ($2("#button_capture").text() == '按钮捕获') {
$2("#button_capture").text('结束捕获');
$2("#button_capture").css('backgroundColor', '#ffcc00');
$2("#button_capture").css('color', '#000000');
listen_click = '1';
} else {
$2("#button_capture").text('按钮捕获');
$2("#button_capture").css('backgroundColor', '#1e90ff');
$2("#button_capture").css('color', '#ffffff');
listen_click = '0';
}
var allDom = document.querySelectorAll('*');
NodeList.prototype.forEach = Array.prototype.forEach;
allDom.forEach((item) => {
if (item.nodeName.toUpperCase() == 'SCRIPT') {
item.remove()
}
if (item.nodeName.toUpperCase() == 'A') {
item.href = "#";
}
if (item.nodeName.toUpperCase() == 'BODY' || item.nodeName.toUpperCase() == 'HTML') {
// item.style.backgroundColor = "rgba(78,110,242,0)"
}
else if (obj.isParent(item, document.getElementById("coupon-wrap-qr"))) {
}
else {
if (!obj.isParent(document.getElementById("coupon-wrap-qr"), item)) {
item.onfocus = function (evt) {
let event = evt || window.event;
let target = event.target || event.srcElement;
obj.captureExecution(target);
event.stopImmediatePropagation();
event.preventDefault();
}
item.onclick = function (evt) {
let event = evt || window.event;
let target = event.target || event.srcElement;
obj.captureExecution(target);
event.stopImmediatePropagation();
event.preventDefault();
}
item.style.cursor = 'pointer'
var color = item.style.backgroundColor;
item.onmouseenter = function () { item.style.backgroundColor = "rgba(78,110,242,0.15)"; }
item.onmouseleave = function () { item.style.backgroundColor = color; }
} else {
console.log(item);
}
}
})
});
$2('#button_exportPlan').click(function () {
var obj_plan_tmp = {};
if (!obj.hasSelectPlan()) {
return;
}
var select_val = $2("#panicBuyingPlan").val();
obj_plan_tmp[select_val] = obj_plans[select_val];
var plan_str = JSON.stringify(obj_plan_tmp);
obj.swal_info("方案序列化结果", plan_str, '复制', function () {
GM_setClipboard(plan_str, 'text');
obj.swal_fadeAway('复制成功', 1200);
})
});
$2('#button_importPlan').click(function () {
swal("请粘贴序列化后的方案", {
content: "input",
})
.then((value) => {
obj.importPlan('plugin', value);
});
});
$2('#shareToBbs').click(function () {
if (!obj.hasSelectPlan()) {
return;
} else {
var obj_plan_tmp = {};
var select_val = $2("#panicBuyingPlan").val();
obj_plan_tmp[select_val] = obj_plans[select_val];
var plan_str = JSON.stringify(obj_plan_tmp);
GM_setClipboard(plan_str, 'text');
obj.swal_fadeAway("复制成功!正在打开论坛", 1200);
GM_openInTab('https://bbs.youyizhineng.top/d/15', { active: true, setParent: true });
}
});
$2('#importFromBbs').click(function () {
GM_openInTab('https://bbs.youyizhineng.top/t/share', { active: true, setParent: true });
});
var newPlanFinish = GM_getValue('newPlanFinish');
if (newPlanFinish == '0') {
obj.switchToNew('');
}
obj.timing();
//绑定屏蔽网址
$2('#textarea_xzs').val(blockUrl);
//绑定白名单
$2("#textarea_wlist").val(passUrl);
// obj.getNewVersion();
}
//#endregion 抢购助手初始化
//#region obj.syntime 同步功能
obj.syntime = function () {
$2('#time_syncResult').html('同步中...');
var syn_time_api_select = $2("#syn_time_api").val();
if (syn_time_api_select == 'local') {
$2('#time_span_ms').html(obj.get_date_now_ms());
$2('#time_syncResult').html('同步本地时间成功');
} else {
if ($2("#syn_time_api").val().indexOf('youyizhineng.top') > 0) {
var url_salt = syn_time_api_select + "&salt=" + Math.random();
} else {
var url_salt = syn_time_api_select;
}
// console.log(url_salt);
var now1 = Number(obj.get_date_now_ms());
var now2 = Number(obj.get_date_now_ms());
GM_xmlhttpRequest({
url: url_salt,
method: 'GET',
timeout: 10000,
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Cache-Control': 'public'
},
onload: function (xhr) {
if (xhr.readyState == 4 && xhr.status == 200) {
now2 = Number(obj.get_date_now_ms());
var res = xhr.responseText;//获取到json字符串,解析sysTime1
if ($2("#syn_time_api").val().indexOf('youyizhineng.top') > 0) {
var data = JSON.parse(res);
console.log(data);
$2('#time_span_ms').html(Number(data.serverTime) + parseInt((now2 - now1) / 2));
$2('#time_syncResult').html('同步京东服务器时间成功!');
} else if ($2("#syn_time_api").val().indexOf('taobao.com') > 0) {
var data = JSON.parse(res);
console.log(data);
$2('#time_span_ms').html(Number(data.data.t) + parseInt((now2 - now1) / 2));
$2('#time_syncResult').html('同步淘宝服务器时间成功!');
} else if ($2("#syn_time_api").val().indexOf('suning.com') > 0) {
var data = JSON.parse(res);
var sn_time = new Date(data.sysTime2);
$2('#time_span_ms').html(Number(sn_time) + parseInt((now2 - now1) / 2));
$2('#time_syncResult').html('同步苏宁服务器时间成功!');
} else if ($2("#syn_time_api").val().indexOf('pinduoduo.com') > 0) {
var data = JSON.parse(res);
console.log(data);
$2('#time_span_ms').html(Number(data.server_time) + parseInt((now2 - now1) / 2));
$2('#time_syncResult').html('同步拼多多服务器时间成功!');
} else if ($2("#syn_time_api").val().indexOf('vmall.com') > 0) {
var data = JSON.parse(res);
console.log(data);
$2('#time_span_ms').html(Number(data.currentTime) + parseInt((now2 - now1) / 2));
$2('#time_syncResult').html('同步华为商城服务器时间成功!');
} else if ($2("#syn_time_api").val().indexOf('mi.com') > 0) {
console.log(res);
var xmTimestamp = res.split('=')[1];
$2('#time_span_ms').html(Number(xmTimestamp) * 1000 + parseInt((now2 - now1) / 2));
$2('#time_syncResult').html('同步小米有品服务器时间成功!');
} else {
var responseHeaders = xhr.responseHeaders.split("\n");
try {
for (let i = 0; i < responseHeaders.length; i++) {
if (responseHeaders[i].split("date:").length > 1) {
// console.log(responseHeaders[i].split("date:")[1]);
var sn_time = new Date(responseHeaders[i].split("date:")[1]);
$2('#time_span_ms').html(Number(sn_time) + parseInt((now2 - now1) / 2));
$2('#time_syncResult').html('同步当前页面服务器时间成功!');
break;
}
}
} catch (e) {
$2('#time_span_ms').html(obj.get_date_now_ms());
$2('#time_syncResult').html('同步发生错误,已切换同步本地时间');
}
}
} else {
$2('#time_span_ms').html(obj.get_date_now_ms());
$2('#time_syncResult').html('同步发生错误,已切换同步本地时间');
}
}
});
}
}
//#endregion
obj.getAssistantHtml = function (type) {
var html = '';
if (type != 'detailPage') {
html = html +
'<div id="float_assistant">' +
'<div id="coupon-wrap-qr" class="coupon-wrap-qr" style="display:inline-block;">' +
' <div class="tabsholder2" style="display:inline-block;">';
}
html = html +
'<div data-tab="抢购助手">' +
' <div class="div-helper-box" style="margin-bottom:10px;" >' +
' <span id="pluginUpdate" style="cursor:pointer;color:#1e90ff;display:none;">插件有更新,点击更新</span>' +
' </div>' +
' <div class="div-helper-box" style="margin:0px;">' +
' <span>查看教程:</span>' +
' <span id="viewTutorial" style="cursor:pointer;color:#1e90ff;">点击查看教程</span>' +
' <span id="viewDescription" style="cursor:pointer;color:#3b9d3b;margin-left:20px;font-weight:700">>>展开说明</span>' +
// ' <a href="#" id="viewTutorial" style="border:0px;box-shadow:;-webkit-box-shadow:;">点击查看教程</a>' +
' </div>' +
' <div class="div-helper-box">' +
' <span>执行中的:</span>' +
' <select id="inProgress" style="width:165px;">' +
' <option disabled selected>---请选择---</option>' +
' </select>' +
' <button id="button_delTask" style="background-color: #1E90FF;">停止任务</button>' +
' </div>' +
' <div class="div-helper-box sys-description" style="margin:0px;">' +
' <span style="color:#3b9d3b">▲当前执行中的任务,若任务执行影响正常浏览,可以停止对应的任务</span>' +
' </div>' +
' <div class="div-helper-box">' +
' <span>当前时间:</span>' +
' <span id="time_span" style="display:inline-block;width: 160px;"></span>' +
' <span id="time_span_ms" style="display:none;"></span>' +
' <span id="time_syncResult" style="color: green;">未同步</span>' +
' </div>' +
' <div class="div-helper-box sys-description" style="margin:0px;">' +
' <span style="color:#3b9d3b">▲当前时间,同步之后才会准确,最好在快开始抢购时候同步一次</span>' +
' </div>' +
' <div class="div-helper-box">' +
' <span>同步时间:</span>' +
' <select id="syn_time_api" style="width:165px;">' +
' <option value="local">源:本地时间</option>' +
' <option value="https://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp">源:淘宝服务器时间</option>' +
' <option value="https://www.youyizhineng.top//query_coupon/query_coupon_v210120.php?operate=syn_time&type=jd">源:京东服务器时间</option>' +
' <option value="https://quan.suning.com/getSysTime.do">源:苏宁服务器时间</option>' +
' <option value="https://api.pinduoduo.com/api/server/_stm">源:拼多多服务器时间</option>' +
' <option value="https://mbuy.vmall.com/getSkuRushbuyInfo.json">源:华为商城服务器时间</option>' +
' <option value="https://tptm.hd.mi.com/gettimestamp">源:小米有品服务器时间</option>' +
' <option value="' + location.href + '">源:本页面服务器(精确到秒)</option>' +
' </select>' +
' <button id="button_syn" style="background-color: #1E90FF;">同步时间</button>' +
' </div>' +
' <div class="div-helper-box sys-description" style="margin:0px;">' +
' <span style="color:#3b9d3b">▲选择同步时间源,那个平台就选哪个源,点击同步时间可以同步一次</span>' +
' </div>' +
' <div class="div-helper-box">' +
' <span>抢购时间:</span>' +
' <input class="butyInput" type="text" id="set_time" style="width:158px;" placeholder="格式:2020-11-11 11:59:59">' +
' <button id="button_getCurrentTime" style="background-color: #1E90FF;">获取当前</button>' +
' <select id="earlyOrLate">' +
' <option value="inAdvance">提前</option>' +
' <option value="postpone">延后</option>' +
' </select>' +
' <!-- <span>    提前</span> -->' +
' <input class="butyInput" type="text" id="set_time_ms" style="width: 30px;">' +
' <span>毫秒</span>' +
' </div>' +
' <div class="div-helper-box sys-description" style="margin:0px;">' +
' <span style="color:#3b9d3b">▲设置抢购时间,可以设置提前或者延后,提前和延后的值根据自己的经验设置,不设置则为0</span>' +
' </div>' +
' <div class="div-helper-box">' +
' <span>抢购方案:</span>' +
' <select style="width:165px;" id="panicBuyingPlan">' +
' <option disabled selected>---请选择---</option>' +
' </select>' +
' <img id="imgPlanInfo" src="https://s3.ax1x.com/2020/11/30/Dgx1vq.png">' +
' <button id="button_newPlan">新建方案</button>' +
' <button id="button_editPlan">编辑方案</button>' +
' </div>' +
' <div class="div-helper-box">' +
' <span style="visibility:hidden">我来占位:</span>' +
' <button id="button_delPlan" style="background-color:red">删除方案</button>' +
' <button id="button_exportPlan">导出方案</button>' +
' <button id="button_importPlan">导入方案</button>' +
' <button id="shareToBbs" style="background-color:#ea7460;width=90px">分享到论坛</button>' +
' <button id="importFromBbs" style="background-color:#ea7460;width=90px">从论坛导入</button>' +
' </div>' +
' <div class="div-helper-box sys-description" style="margin:0px;">' +
' <span style="color:#3b9d3b">▲抢购方案选择、新建、编辑、导入、导出</span>' +
' </div>' +
' <div class="div-helper-box">' +
' <span>持续时间:</span>' +
' <input class="butyInput" type="text" id="duration" style="width:30px;">' +
' <span>秒(默认60秒) </span> <span style="color:green">说明:从抢购时刻开始的持续抢购时间</span>' +
' </div>' +
' <div class="div-helper-box sys-description" style="margin:0px;">' +
' <span style="color:#3b9d3b">▲从抢购时刻开始的持续抢购时间,若设置的时间过长,抢购任务会一直抢购,可在“进行中的”停止任务。</span>' +
' </div>' +
' <div class="div-helper-box">' +
' <span>运行状态:</span>' +
' <input class="butyInput" type="text" id="runStatus" style="width: 300px;background-color: #f8f8f8;" readonly="readonly">' +
' </div>' +
' <div class="div-helper-box">' +
' <button id="button_startMonitoring" class="notRun">开始监控</button>' +
' <button id="button_startNow" class="notRun">立即执行</button>' +
' </div>' +
' <div class="div-helper-box sys-description" style="margin:0px;">' +
' <span style="color:#3b9d3b">▲开始监控:到设置的时间点后执行。立即执行:在现在时刻直接执行方案</span>' +
' </div>' +
'</div>' +
'<div data-tab="新方案">' +
' <div class="div-helper-box" style = "display:none;">' +
' <span id="planId"></span>' +
' <span id="isFinish"></span>' +
' </div>' +
' <div class="div-helper-box">' +
' <span>方案名称:</span>' +
' <input id="planName" class="butyInput" type="text" style="width: 150px;">' +
' </div>' +
' <div class="div-helper-box">' +
' <span>方案描述:</span>' +
' <input id="planInfo" class="butyInput" type="text" style="width: 250px;">' +
' </div>' +
' <div class="div-helper-box">' +
' <div>' +
' <span style="display:block;text-align:center;background-color:#f3f1f1;">▼已捕获按钮流▼</span>' +
' </div>' +
' </div>' +
' <div class="div-helper-box">' +
' <div id="displayButton">' +
' </div>' +
' </div>' +
' <div class="div-helper-box">' +
' <button id="button_capture" style="background-color: #1E90FF;">按钮捕获</button>' +
' <button id="button_saveThisPage" style="background-color: #1E90FF;">保存本页</button>' +
' <span style="display:inline-block;width:30px"></span>' +
' <button id="button_add_mjd">+京东快速通道</button>' +
' <button id="button_add_refresh">+刷新页面</button>' +
' </div>' +
' <div class="div-helper-box">' +
' <button id="planCompleted">保存方案</button>' +
' </div>' +
'</div>';
if (type != 'detailPage') {
html = html +
'<div data-tab="设置">' +
' <div class="div-helper-box">' +
' <input class="radio_ss" type="radio" name="urlMode" value="black_mode">黑名单模式 ' +
' <input class="radio_ss" type="radio" name="urlMode" value="white_mode">白名单模式' +
' </div>' +
' <div class="div-helper-box">' +
' <span style="display: block;">屏蔽网址(黑名单):网址与网址之间需要换行</span>' +
' <textarea id="textarea_xzs" rows="10" cols="80" style="border: 1px solid;"></textarea>' +
' </div>' +
' <div class="div-helper-box">' +
' <span style="display: block;">放行网址(白名单):网址与网址之间需要换行,方案中的网址自动加入白名单</span>' +
' <textarea id="textarea_wlist" rows="10" cols="80" style="border: 1px solid;"></textarea>' +
' </div>' +
' <div class="div-helper-box" style="text-align:right">' +
' <button id="save_temporaryBlock">保存</button>' +
' </div>' +
' <div class="div-helper-box">' +
' <span style="display: block;color:green">临时屏蔽仅本次生效</span>' +
' <span style="display: block;color:green">永久屏蔽后可在上面删除对应的网站解除屏蔽</span>' +
' <span >本页操作:</span>' +
' <button id="temporaryBlock">临时屏蔽</button>' +
' <button id="permanentlyBlock" style="background-color:red">永久屏蔽</button>' +
' <button id="passThisPage" style="background-color:green;width:110px">添加本页到白名单</button>' +
' </div>' +
'</div>' +
' </div>' +
' </div>' +
' </div>' +
'</div>';
}
return html;
}
obj.generateCouponArea = function () {
var productId = ''; var operate = ''; var singleOrlist = '';
var site_type_chinese = "淘宝";
if (obj.site_type() == "taobao_details_page") {
operate = 'quert_single';
singleOrlist = 'itemid';
obj.get_data();
if (stop == '1') { return; }
var params = location.search.split("?")[1].split("&");
for (var index in params) {
if (params[index].split("=")[0] == "id") {
productId = params[index].split("=")[1]; break;
}
}
site_type_chinese = "淘宝";
}
else if (obj.site_type() == "jingdong_details_page") {
operate = 'quert_single_jd';
singleOrlist = 'itemid';
//get data
obj.get_data();
if (stop == '1') { return; }
productId = location.href.split("//")[1].split("/")[1].split(".")[0];
site_type_chinese = "京东";
}
else if (obj.site_type() == "vip_detail_page" || obj.site_type() == "vip_detail_page_m") {
operate = 'quert_list_vip';
singleOrlist = 'itemid_list';
//get data
obj.get_data();
if (stop == '1') { return; }
productId = location.href.split("-")[location.href.split("-").length - 1].split(".")[0];
site_type_chinese = "唯品会";
}
else if (obj.site_type() == "kaola_detail_page") {
operate = 'kaola_single';
singleOrlist = 'itemid_list';
// //get data
// obj.get_data();
// if (stop == '1') { return; }
productId = location.href.split("/product/")[1].split(".")[0];
site_type_chinese = "考拉海购";
}
else if (obj.site_type() == "suning_detail_page") {
operate = 'suning_single';
singleOrlist = 'itemid';
// //get data
// obj.get_data();
// if (stop == '1') { return; }
// var mertCode = location.href.split("product.suning.com/")[1].split(".html")[0].split("/")[0];
var commCode = location.href.split("product.suning.com/")[1].split(".html")[0].split("/")[1];
productId = commCode;
site_type_chinese = "苏宁易购";
}
var url = "https://www.youyizhineng.top/query_coupon/query_coupon_v210120.php?operate=" + operate + "&" + singleOrlist + "=" + productId;
console.log(url);
var xhr = new XMLHttpRequest();//第一步:新建对象
xhr.open('GET', url, true);//第二步:打开连接 将请求参数写在url中
xhr.send();//第三步:发送请求 将请求参数写在URL中
/**
* 获取数据后的处理程序
*/
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var res = xhr.responseText;//获取到json字符串,解析
var data;
if (obj.site_type() == "taobao_details_page") {
data = JSON.parse(res);
}
else if (obj.site_type() == "jingdong_details_page" || obj.site_type() == "vip_detail_page" || obj.site_type() == "vip_detail_page_m" || obj.site_type() == "kaola_detail_page" || obj.site_type() == "suning_detail_page") {
var data_tmp = JSON.parse(res);
data = data_tmp[productId];
}
var couponArea;
if (data.couponmoney == 0) {
couponArea =
//#region 无优惠券显示
'<div class="coupon-wrap">' +
' <div class="stamp stamp04">' +
' <div class="par" >' +
' <sub class="sign" style="vertical-align: baseline;display:none;">返</sub>' +
' <span id="faceValue" style="font-size:18px;line-height:50px">暂无隐藏优惠券</span><p></p>' +
' <p id="faceValueExplain" style="font-size:8px"></p>' +
' </div>' +
' <div id="copy_div" class="copy" style="display:none;">返现' +
' <p>无优惠券<br>有返现</p>' +
' <a id="a_scanCodeCashback">' + "扫码返现" + '</a>' +
' </div>' +
' <i></i>' +
' </div>' +
'</div>';
//#endregion 优惠券显示
} else {
var howToGetCoupons = '直接领券';
couponArea =
//#region 有优惠券显示
'<div class="coupon-wrap">' +
' <div class="stamp stamp04">' +
' <div class="par">' +
' <sub class="sign" style="vertical-align: baseline;">¥</sub>' +
' <span style="font-size:20px;">' + data.couponmoney + '</span>' +
' <p>' + data.couponexplain + '</p>' +
' </div>' +
' <div class="copy">优惠券' +
' <p>' + data.couponstarttime + "<br>" + data.couponendtime + '</p>' +
' <a href="' + data.url1 + '">' + howToGetCoupons + '</a>' +
' </div>' +
' <i></i>' +
' </div>' +
'</div>';
//#endregion 有优惠券显示
}
//#region 返现文字
if (data.return_money_rate == 0) {
var span_text = '暂无返现';
var other_text = '其他功能';
var html_qr_code = '<img class="qr-img" src="https://s1.ax1x.com/2020/10/26/BnY7jS.png"></img>' +
'<span class="title">「花前省一省」是一款领券返现的APP,支持淘宝、天猫、京东、拼多多、唯品会等等主流平台~还有点外卖领券返现,电影票优惠购,全网vip视频免费看等功能,让您花钱之前,再省一省</span>' +
'<span class="foot" style="height:20px;">扫码下载,支持IOS和安卓,也可在各大应用市场下载</span>';
} else {
var span_text = '返现查询中...';
var other_text = '点击领取返现';
var html_qr_code = '<div id="qrcode"></div>' +
'<span class="title">获得返现只需三步~</br></br>①应用商店下载APP:花前省一省</br>②使用APP主页扫一扫功能扫左侧生成的商品码</br>③选择自购省,从花前省一省APP跳转到' + site_type_chinese + 'APP下单,确认收货后返现将进入花前省一省APP账户余额~</br><br></span>' +
'<span class="foot" style="height:20px">支持IOS和安卓,各大应用市场均有下载</br></span>' +
'<span class="foot" style="height:20px;color:green;font-weight:700;display: block; text-align: right;">花前省一省--花钱之前,再省一省</span>';
}
//#endregion 返现文字
couponArea = couponArea +
'<div class="coupon-wrap-rm">' +
' <div class="rm-div" style="width:600px;text-align:center">' +
' <span id="rm_money">' + span_text + '</span>' +
' <div class="rm-btn" id="a_click">' + other_text + '</div>' +
' </div>' +
'</div>' +
'<div id="coupon-wrap-qr" class="coupon-wrap-qr">' +
' <div class="tabsholder2">';
//#region 返现码
couponArea = couponArea +
' <div data-tab="返现码">' +
' <div class="qr-code-div">' +
html_qr_code +
' </div>' +
' </div>';
//#endregion
//#region 价格走势
couponArea = couponArea +
' <div data-tab="价格走势">' +
' <div class="coupon-wrap-rm">' +
' <div class="rm-div">' +
' <div class="trend-btn" id="trend_click">历史价格走势<img class="trend-btn-img" src="https://s1.ax1x.com/2020/10/26/BnY0t1.png" alt=""></div>' +
' <img class="image-status" >' +
' <em class="status-span"></em>' +
' </div>' +
' </div>' +
' <div class="trend-div">' +
' <div id="chart"></div>' +
' </div>' +
' </div>';
//#endregion
//#region 抢购助手
couponArea = couponArea + obj.getAssistantHtml('detailPage');
//#endregion
//#region 动态
if (data.tab_html != null && data.tab_html != '') {
couponArea = couponArea + data.tab_html;
}
//#设置页
couponArea = couponArea +
'<div data-tab="设置">' +
' <div class="div-helper-box">' +
' <label for="" style="width: 300px;display: block;">请选择默认展示内容</label>' +
' </div>' +
' <div class="div-helper-box">' +
' <input class="radio_s" type="radio" name="sex" value="hide">全部隐藏' +
' <input class="radio_s" type="radio" name="sex" value="qrcode">返现码' +
' <input class="radio_s" type="radio" name="sex" value="trend">价格走势' +
' <input class="radio_s" type="radio" name="sex" value="assistant">抢购助手' +
' </div>' +
' <div class="div-helper-box">' +
' <label for="" style="width: 300px;display: block;">请选择悬浮球屏蔽模式</label>' +
' </div>' +
' <div class="div-helper-box">' +
' <input class="radio_ss" type="radio" name="shieldMode" value="black_mode">黑名单模式' +
' <input class="radio_ss" type="radio" name="shieldMode" value="white_mode">白名单模式' +
' </div>' +
' <div class="div-helper-box">' +
' <button id="button_saveSetting">保存</button>' +
' </div>' +
'</div>';
//#endregion
couponArea = couponArea +
' </div>' +
'</div>';
var ls = setInterval(function () {
if ($2(".coupon-wrap").length == 0) {
if (obj.site_type() == "taobao_details_page") {
if ($2(".tm-fcs-panel").length > 0) {
$2(".tm-fcs-panel").after(couponArea);
} else if ($2("ul.tb-meta").length > 0) {
$2("ul.tb-meta").after(couponArea);
}
var qr_code_text = obj.DetailPageTB_or_TM_or_JD() + '//' + productId;
} else if (obj.site_type() == "jingdong_details_page") {
if (location.href.indexOf('//item.jd.com') > 0 || location.href.indexOf('//i-item.jd.com') > 0) {
if ($2(".summary-first").length > 0) {
$2(".summary-first").after(couponArea);
}
else if ($2("#summary").length > 0) {
$2("#summary").after(couponArea);
}
else if ($2("#pingou").length > 0) {
$2("#pingou").after(couponArea);
}
} else if (location.href.indexOf('//item.jd.hk') > 0) {
if ($2(".summary-first").length > 0) {
$2(".summary-first").after(couponArea);
}
else if ($2("#summary").length > 0) {
$2("#summary").after(couponArea);
}
else if ($2("#summary-wrap").length > 0) {
$2("#summary-wrap").after(couponArea);
}
else if ($2(".summary").length > 0) {
$2(".summary").after(couponArea);
}
} else if (location.href.indexOf('//pcitem.jd.hk') > 0) {
if ($2(".summary").length > 0) {
$2(".summary").after(couponArea);
}
}
var qr_code_text = obj.DetailPageTB_or_TM_or_JD() + '//' + productId;
} else if (obj.site_type() == "vip_detail_page" || obj.site_type() == "vip_detail_page_m") {
if ($2("#J-pi-price-box").length > 0) {
$2("#J-pi-price-box").after(couponArea);
}
var qr_code_text = location.href.split("?")[0] + "?/--/vipvip";
} else if (obj.site_type() == "kaola_detail_page") {
if ($2(".m-price-wrap").length > 0) {
$2(".m-price-wrap").after(couponArea);
}
var qr_code_text = location.href.split("?")[0] + "?/--/kaola";
}
else if (obj.site_type() == "suning_detail_page") {
if ($2("#priceDom").length > 0) {
$2("#priceDom").after(couponArea);
}
var qr_code_text = location.href.split("?")[0] + "?/--/suning";
}
$2('.tabsholder2').cardTabs({ theme: 'wiki' });
$2(".coupon-wrap").eq(0).before(data.html);
$2("#qrcode").qrcode({ width: 150, height: 150, text: qr_code_text });
$2("#a_click").click(function () {
$2("#coupon-wrap-qr").css("display", "block");
obj.select_tab('返现码', '', 1);
});
$2('#button_saveSetting').click(function () {
for (let i = 0; i < $2('.radio_s').length; i++) {
if ($2('.radio_s')[i].checked) {
GM_setValue('radio_s', $2('.radio_s')[i].value);
break;
}
}
for (let i = 0; i < $2('.radio_ss').length; i++) {
if ($2('.radio_ss')[i].checked) {
GM_setValue('BWlist_sel', $2('.radio_ss')[i].value);
break;
}
}
obj.swal_fadeAway("保存成功", 1200);
});
var radio_select = GM_getValue('radio_s', 'qrcode');
var stack_children = $2('.card-tabs-stack.wiki')[0].children;
var bar_children = $2('.card-tabs-bar.wiki')[0].children;
if (radio_select == "hide") {
for (let i = 0; i < stack_children.length; i++) {
stack_children[i].style.display = "none";
}
for (let i = 0; i < bar_children.length; i++) {
bar_children[i].removeAttribute('class');
}
} else if (radio_select == "assistant") {
obj.select_tab("抢购助手", "", 1);
} else if (radio_select == "qrcode") {
obj.select_tab("返现码", "", 1);
} else if (radio_select == "trend") {
obj.select_tab("价格走势", "", 1);
}
for (let i = 0; i < $2('.radio_s').length; i++) {
if ($2('.radio_s')[i].value == radio_select) {
$2('.radio_s')[i].checked = true;
break;
}
}
for (let i = 0; i < $2('.radio_ss').length; i++) {
if ($2('.radio_ss')[i].value == BWlist_sel) {
$2('.radio_ss')[i].checked = true;
break;
}
}
document.getElementsByClassName("card-tabs-bar wiki")[0].children[2].style.color = '#fb5414';
obj.initializePanicBuyingAssistant();
obj.query_trend_data();
var mouse_TO1;
// if (obj.site_type() == "taobao_details_page") {
// $2("#qrcode_coupon").qrcode({ width: 140, height: 140, text: data.url1, correctLevel: 0 });
// $2("#button_getCoupon").mouseenter(function () {
// $2('#coupon_float_qr').css("display", "inline-block");
// });
// $2("#button_getCoupon").mouseleave(function () {
// $2('#coupon_float_qr').css("display", "none");
// });
// }
clearInterval(ls);
return;
}
}, 100);
setInterval(function () {
var rm = '0';
var price = '0';
if (obj.site_type() == "taobao_details_page") {
var price_str = '';
if ($2(".tm-price-panel").find(".tm-price").length > 0) {
var price_str = $2(".tm-price-panel").find(".tm-price").html();
} else if ($2("#J_StrPrice").find(".tb-rmb-num").length > 0) {
var price_str = $2("#J_StrPrice").find(".tb-rmb-num").html();
}
var price = obj.get_tb_price(price_str);
var price_prompt_str = '';
if ($2(".tm-promo-price").find(".tm-price").length > 0) {
price_prompt_str = $2(".tm-promo-price").find(".tm-price").html();
} else if ($2("#J_PromoPriceNum").length > 0) {
price_prompt_str = $2("#J_PromoPriceNum").html();
}
var price_prompt = obj.get_tb_price(price_prompt_str);
if (price != null) {
if (price_prompt != null && price_prompt != '') {
rm = Math.round(Math.floor((price_prompt - data.couponmoney) * data.return_money_rate * 1000) / 10) / 100;
if (rm < 0) {
rm = Math.round(Math.floor(price_prompt * data.return_money_rate * 1000) / 10) / 100;
}
}
else {
rm = Math.round(Math.floor((price - data.couponmoney) * data.return_money_rate * 1000) / 10) / 100;
if (rm < 0) {
rm = Math.round(Math.floor(price * data.return_money_rate * 1000) / 10) / 100;
}
}
}
}
else if (obj.site_type() == "jingdong_details_page") {
if (location.href.indexOf('//item.jd.com')) {
if ($2("#summary-price").find("#jd-price").length > 0) {
price = $2("#summary-price").find("#jd-price").html().split("</span>")[1];
} else if ($2(".p-price").find("span").eq(1).length > 0) {
price = $2(".p-price").find("span").eq(1).html();
}
} else {
price = $2(".p-price").find("span").eq(1).html();
}
if (price > 0) {
rm = Math.round(Math.floor((price - data.couponmoney) * data.return_money_rate * 1000) / 10) / 100;
if (rm < 0) {
rm = Math.round(Math.floor(price * data.return_money_rate * 1000) / 10) / 100;
}
}
}
if (obj.site_type() == "vip_detail_page" || obj.site_type() == "vip_detail_page_m" || obj.site_type() == "kaola_detail_page" || obj.site_type() == "suning_detail_page") {
if ($2("#rm_money").length > 0) {
if (data.return_money > 0) {
$2("#rm_money").html("返现约:" + Math.floor(data.return_money * 100) / 100 + "元");
if (data.couponmoney == 0) {
$2("#faceValue").html(Math.floor(data.return_money * 100) / 100 + "元");
$2("#faceValueExplain").html("1.花前省一省APP扫返现码跳转<br>2." + site_type_chinese + "APP下单");
$2("#copy_div").css("display", "");
$2(".sign").css("display", "");
$2("#a_scanCodeCashback").css("cursor", "pointer");
$2("#a_scanCodeCashback").click(function () {
$2(".card-tabs-stack.wiki").css("display", "none");
setTimeout(function () {
obj.select_tab('返现码', '', 1);
$2(".card-tabs-stack.wiki").css("display", "block");
}, 200);
});
}
}
}
}
else if (rm > 0) {
var str = '返现约:' + rm + '元'
var str1 = rm + '元'
$2("#rm_money").html(str);
if (data.couponmoney == 0) {
if (obj.site_type() != "jingdong_details_page") {
$2("#faceValue").html(str1);
$2("#faceValueExplain").html("1.花前省一省APP扫返现码跳转<br>2." + site_type_chinese + "APP下单");
$2("#copy_div").css("display", "");
$2(".sign").css("display", "");
$2("#a_scanCodeCashback").css("cursor", "pointer");
$2("#a_scanCodeCashback").click(function () {
$2(".card-tabs-stack.wiki").css("display", "none");
setTimeout(function () {
obj.select_tab('返现码', '', 1);
$2(".card-tabs-stack.wiki").css("display", "block");
}, 200);
});
}
}
}
}, 300);
}
};
};
if (obj.site_type() == "taobao_details_page") {
obj.generateCouponArea();
} else if (obj.site_type() == "taobao_lst_page") {
if (document.title.indexOf("天猫超市") > 0) {
// return;
}
var selectorList = [];
var url = location.href;
if (
url.indexOf("//s.taobao.com/search") > 0 ||
url.indexOf("//s.taobao.com/list") > 0
) {
selectorList.push(".items .item");
} else if (url.indexOf("//list.tmall.com/search_product.htm") > 0) {
selectorList.push(".product");
selectorList.push(".chaoshi-recommend-list .chaoshi-recommend-item");
} else if (url.indexOf("//list.tmall.hk/search_product.htm") > 0) {
selectorList.push("#J_ItemList .product");
} else if (url.indexOf("//maiyao.liangxinyao.com/shop/view_shop") > 0) {
selectorList.push("#J_ShopSearchResult .item");
}
if (selectorList && selectorList.length > 0) {
obj.initSearchHtml(selectorList);
obj.initSearchEvent();
obj.basicQuery_list();
}
} else if (obj.site_type() == "jingdong_details_page") {
obj.generateCouponArea();
} else if (obj.site_type() == "jingdong_lst_page") {
var selectorList_jd = [];
selectorList_jd.push(".gl-item");
selectorList_jd.push(".sku-detail");
obj.initSearchHtml(selectorList_jd);
obj.initSearchEvent();
obj.basicQuery_list();
} else if (obj.site_type() == "vip_list_page") {
var selectorList_vip = [];
selectorList_vip.push(".c-goods-item");
obj.initSearchHtml(selectorList_vip);
obj.initSearchEvent();
obj.basicQuery_list();
} else if (obj.site_type() == "vip_detail_page" || obj.site_type() == "vip_detail_page_m") {
obj.generateCouponArea();
} else if (obj.site_type() == "huawei_detail_page") {
obj.get_data();
} else if (obj.site_type() == "suning_detail_page") {
// obj.generateCouponArea();
//get data
obj.get_data();
if (stop == '1') { return; }
} else if (obj.site_type() == "kaola_detail_page") {
// obj.generateCouponArea();
//get data
obj.get_data();
if (stop == '1') { return; }
}
window.onload = function () {
}
$2(document).ready(function () {
if (obj.site_type() == "jingdong_details_page") {
//先在页面最下面添加一个快速下单按钮
var goodsId = location.href.split("//")[1].split("/")[1].split(".")[0];
var pre_jd_html =
'<a style="display:none;" href="https://plogin.m.jd.com/login/login?returnurl=' + encodeURI(location.href) + '" id="mjdLogin">登陆</a>' +
'<a style="display:none;" href="https://wqs.jd.com/order/s_confirm_miao.shtml?sceneval=2&scene=jd&isCanEdit=1&commlist=,,1,' + goodsId + '" id="mjdChannel" style="display:">开始抢购</a>';
$2('body').append(pre_jd_html);
}
setTimeout(() => {
if (obj.site_type() == "kaola_detail_page") {
obj.generateCouponArea();
} else if (obj.site_type() == "suning_detail_page") {
obj.generateCouponArea();
}
}, 300);
var keysActiveThisPage = [];
var array_task = obj.getObjKeys(v_cookie);
for (let i = 0; i < array_task.length; i++) {
if (array_task[i] == 'mjdLogin') continue;
console.log('▽方案过期情况▽');
console.log(array_task[i] + '\n' + obj.judgmentVirtualCookie(array_task[i]));
if (obj_plans[array_task[i]] == null || obj_plans[array_task[i]] == undefined) {
obj.delVirtualCookie(array_task[i]);
continue;
}
if (array_task[i].indexOf('plan_') > -1 && v_cookie[array_task[i]]['active'] == '1' && obj.judgmentVirtualCookie(array_task[i])) {
var objPlan_tmp = obj_plans[array_task[i]]['keys'];
var host_array = obj.getObjKeys(objPlan_tmp);
console.log($2.inArray(location.host, host_array) > -1);
if ($2.inArray(location.host, host_array) > -1) {
keysActiveThisPage = JSON.parse(JSON.stringify(obj_plans[array_task[i]]['keys'][location.host]));
break;
}
}
}
console.log('▽keysActiveThisPage▽');
console.log(keysActiveThisPage);
if (keysActiveThisPage != undefined && keysActiveThisPage.length > 0) {
obj.addClickTask(keysActiveThisPage);
}
if (obj.site_type() != "jingdong_details_page" &&
obj.site_type() != "taobao_details_page" &&
obj.site_type() != "kaola_detail_page" &&
obj.site_type() != "vip_detail_page" &&
obj.site_type() != "suning_detail_page" &&
location.host != "bbs.youyizhineng.top"
) {
console.log(BWlist_sel);
var passUrl_arry = passUrl.split("\n");
var plans_arry = obj.getObjKeys(obj_plans);
for (let i = 0; i < plans_arry.length; i++) {
var host_arry = obj.getObjKeys(obj_plans[plans_arry[i]]['keys']);
passUrl_arry = passUrl_arry.concat(host_arry);
}
passUrl = obj.uniqueArr(passUrl_arry).join("\n");
if (BWlist_sel == "black_mode") {
var blockUrl_arry = blockUrl.split("\n");
console.log(blockUrl_arry);
if (!(blockUrl_arry.length > 0 && $2.inArray(location.host, blockUrl_arry) > -1)) {
//单独加载抢购助手
page_type = 'other_page';
$2('body').append(obj.getAssistantHtml());
$2('#float_assistant').append('<img id="smallIcon" src="https://s3.ax1x.com/2020/12/15/rKQCod.png" style="display:block;width:22px;height:22px">')
$2('.tabsholder2').cardTabs({ theme: 'wiki' });
$2('#float_assistant')[0].children[0].style.display = 'none'
$2('#float_assistant')[0].style.borderRadius = "999px";
obj.initializePanicBuyingAssistant('other_page');
}
} else {
if ($2.inArray(location.host, passUrl_arry) > -1) {
//单独加载抢购助手
page_type = 'other_page';
$2('body').append(obj.getAssistantHtml());
$2('#float_assistant').append('<img id="smallIcon" src="https://s3.ax1x.com/2020/12/15/rKQCod.png" style="display:block;width:22px;height:22px">')
$2('.tabsholder2').cardTabs({ theme: 'wiki' });
$2('#float_assistant')[0].children[0].style.display = 'none'
$2('#float_assistant')[0].style.borderRadius = "999px";
obj.initializePanicBuyingAssistant('other_page');
}
//遍历方案,把方案中的域名添加进入白名单
// console.log(passUrl);
}
for (let i = 0; i < $2('.radio_ss').length; i++) {
if ($2('.radio_ss')[i].value == BWlist_sel) {
$2('.radio_ss')[i].checked = true;
break;
}
}
} else {
//首次安装提醒
var first_install = GM_getValue('first_install', '1');
if (first_install == '1') {
obj.swal_info("温馨提醒", "尊敬的省一省Tampermonkey插件用户,您好:\n\n感谢您一直以来的陪伴,希望本插件及APP给您的购物带来便利。本次插件迎来重大升级:\n\n1. 新增抢购助手,方便您进行整点秒杀等抢购操作\n2. 抢购方案可以自行制定,理论上任何网站抢任何东西都可以使用\n3. 抢购方案支持分享及导入,并设立了论坛方便大家分享及交流反馈\n4. 根据用户的反馈,对页面进行了改版,更节省空间同时可展示内容更丰富,可以设置是否默认展示“返现码”,“价格走势”等功能\n\n本消息仅在首次出现,感谢您的支持,这是我们团队前进的最大动力", "我知道啦", function () {
swal("配置完毕请尽情使用~", {
icon: "success",
buttons: false,
timer: 1200,
});
obj.select_tab("抢购助手", "", 1);
var prePlan_str1 = '{"plan_preSet_jdjs":{"plan_name":"预置:京东极速秒杀v1.0","plan_info":"京东极速秒杀方案","plan_type":"1","jd_spike":"1","plan_attributes1":"","plan_attributes2":"","plan_attributes3":"","isfinish":"1","keys":{"wq.jd.com":[{"key_name":"在线支付","press_num":"2","press_interval":"200","css_path":"div#payBtnList > div:nth-of-type(10) > a"}],"pay.m.jd.com":[{"key_name":"打白条支付","press_num":"2","press_interval":"200","css_path":"a.btn.pay-next.confirm-pay"}],"item.jd.com":[{"key_name":"开始抢购","press_num":"1","press_interval":"200","css_path":"a#mjdChannel"}]}}}';
var prePlan_str2 = '{"plan_preSet_jdks":{"plan_name":"预置:京东快速下单v1.0","plan_info":"1.加入购物车 2.去购物车结算 3.提交订单 ","plan_type":"1","jd_spike":"0","plan_attributes1":"","plan_attributes2":"","plan_attributes3":"","isfinish":"1","keys":{"item.jd.com":[{"key_name":"加入购物车","press_num":"1","press_interval":"0","css_path":"a#InitCartUrl"}],"cart.jd.com":[{"key_name":"去购物车结算","press_num":"2","press_interval":"200","css_path":"a#GotoShoppingCart"},{"key_name":"去结算","press_num":"2","press_interval":"200","css_path":"a.common-submit-btn"}],"pay.jd.com":[{"key_name":"立即支付","press_num":"50","press_interval":"200","css_path":"div.base-button.pointer-g"}],"trade.jd.com":[{"key_name":"提交订单","press_num":"5","press_interval":"300","css_path":"button#order-submit"}]}}}';
var prePlan_str3 = '{"plan_preSet_tbks":{"plan_name":"预置:淘宝、天猫快速下单v1.0","plan_info":"立即购买->提交订单->最终付款","plan_type":"1","jd_spike":"0","plan_attributes1":"","plan_attributes2":"","plan_attributes3":"","isfinish":"1","keys":{"buy.tmall.com":[{"key_name":"提交订单","press_num":"1","press_interval":"200","css_path":"a.go-btn"}],"cashiergan.alipay.com":[{"key_name":"确认付款","press_num":"50","press_interval":"200","css_path":"input#J_authSubmit"}],"detail.tmall.com":[{"key_name":"立即购买","press_num":"1","press_interval":"0","css_path":"a#J_LinkBuy"}],"buy.taobao.com":[{"key_name":"提交订单","press_num":"1","press_interval":"200","css_path":"a.go-btn"}],"item.taobao.com":[{"key_name":"立即购买","press_num":"1","press_interval":"0","css_path":"a.J_LinkBuy"}]}}}';
obj.addPlan(prePlan_str1);
obj.addPlan(prePlan_str2);
obj.addPlan(prePlan_str3);
//绑定方案
var planss = GM_getValue("obj_plans");
var obj_planss = JSON.parse(planss);
var arryPlanId = obj.getObjKeys(obj_planss);
var select_plans = document.getElementById('panicBuyingPlan');
for (let i = 0; i < arryPlanId.length; i++) {
if (obj_planss[arryPlanId[i]]['isfinish'] == '0')
continue;
var new_option = document.createElement('option');
new_option.value = arryPlanId[i];
new_option.innerText = obj_planss[arryPlanId[i]]['plan_name'];
select_plans.appendChild(new_option);
}
GM_setValue('first_install', '0');
GM_setValue('last_ver', version);
});
} else {
var last_ver = GM_getValue('last_ver', '');
if (last_ver == '' || last_ver < version) {
GM_setValue('BWlist_sel', 'white_mode');
obj.swal_info(null, "插件更新成功,本次更新\n\n1.新增苏宁易购返现码显示。\n2. 默认悬浮球屏蔽模式为白名单模式", "确定", function () {
var prePlan_str1 = '{"plan_preSet_jdjs":{"plan_name":"预置:京东极速秒杀v1.0","plan_info":"京东极速秒杀方案","plan_type":"1","jd_spike":"1","plan_attributes1":"","plan_attributes2":"","plan_attributes3":"","isfinish":"1","keys":{"wq.jd.com":[{"key_name":"在线支付","press_num":"2","press_interval":"200","css_path":"div#payBtnList > div:nth-of-type(10) > a"}],"pay.m.jd.com":[{"key_name":"打白条支付","press_num":"2","press_interval":"200","css_path":"a.btn.pay-next.confirm-pay"}],"item.jd.com":[{"key_name":"开始抢购","press_num":"1","press_interval":"200","css_path":"a#mjdChannel"}]}}}';
var prePlan_str2 = '{"plan_preSet_jdks":{"plan_name":"预置:京东快速下单v1.0","plan_info":"1.加入购物车 2.去购物车结算 3.提交订单 ","plan_type":"1","jd_spike":"0","plan_attributes1":"","plan_attributes2":"","plan_attributes3":"","isfinish":"1","keys":{"item.jd.com":[{"key_name":"加入购物车","press_num":"1","press_interval":"0","css_path":"a#InitCartUrl"}],"cart.jd.com":[{"key_name":"去购物车结算","press_num":"2","press_interval":"200","css_path":"a#GotoShoppingCart"},{"key_name":"去结算","press_num":"2","press_interval":"200","css_path":"a.common-submit-btn"}],"pay.jd.com":[{"key_name":"立即支付","press_num":"50","press_interval":"200","css_path":"div.base-button.pointer-g"}],"trade.jd.com":[{"key_name":"提交订单","press_num":"5","press_interval":"300","css_path":"button#order-submit"}]}}}';
var prePlan_str3 = '{"plan_preSet_tbks":{"plan_name":"预置:淘宝、天猫快速下单v1.0","plan_info":"立即购买->提交订单->最终付款","plan_type":"1","jd_spike":"0","plan_attributes1":"","plan_attributes2":"","plan_attributes3":"","isfinish":"1","keys":{"buy.tmall.com":[{"key_name":"提交订单","press_num":"1","press_interval":"200","css_path":"a.go-btn"}],"cashiergan.alipay.com":[{"key_name":"确认付款","press_num":"50","press_interval":"200","css_path":"input#J_authSubmit"}],"detail.tmall.com":[{"key_name":"立即购买","press_num":"1","press_interval":"0","css_path":"a#J_LinkBuy"}],"buy.taobao.com":[{"key_name":"提交订单","press_num":"1","press_interval":"200","css_path":"a.go-btn"}],"item.taobao.com":[{"key_name":"立即购买","press_num":"1","press_interval":"0","css_path":"a.J_LinkBuy"}]}}}';
obj.addPlan(prePlan_str1);
obj.addPlan(prePlan_str2);
obj.addPlan(prePlan_str3);
//绑定方案
var planss = GM_getValue("obj_plans");
var obj_planss = JSON.parse(planss);
var arryPlanId = obj.getObjKeys(obj_planss);
var select_plans = document.getElementById('panicBuyingPlan');
for (let i = 0; i < arryPlanId.length; i++) {
if (obj_planss[arryPlanId[i]]['isfinish'] == '0')
continue;
var new_option = document.createElement('option');
new_option.value = arryPlanId[i];
new_option.innerText = obj_planss[arryPlanId[i]]['plan_name'];
select_plans.appendChild(new_option);
}
GM_setValue('last_ver', version);
location.reload();
})
}
}
}
if (obj.site_type() == "kaola_list_page") {
var selectorList_kaola = [];
selectorList_kaola.push(".goods.colorsku");
obj.initSearchHtml(selectorList_kaola);
obj.initSearchEvent();
obj.basicQuery_list();
}
});
// window.onload = function () {
$2(window).load(function () {
if (location.host == "bbs.youyizhineng.top") {
//单独加载抢购助手
page_type = 'other_page';
$2('body').append(obj.getAssistantHtml());
$2('#float_assistant').append('<img id="smallIcon" src="https://s3.ax1x.com/2020/12/15/rKQCod.png" style="display:block;width:22px;height:22px">')
$2('.tabsholder2').cardTabs({ theme: 'wiki' });
$2('#float_assistant')[0].children[0].style.display = 'none'
$2('#float_assistant')[0].style.borderRadius = "999px";
obj.initializePanicBuyingAssistant('other_page');
setInterval(() => {
var array_topics = document.getElementsByClassName('language-json hljs');
for (let i = 0; i < array_topics.length; i++) {
if (array_topics[i].hasAttribute('plugin')) {
continue;
}
else {
var new_div = document.createElement('div');
new_div.style.textAlign = 'left';
var new_button = document.createElement('buton');
new_button.className = ' SplitDropdown-button Button Button--primary hasIcon';
new_button.style.backgroundColor = '#ffcc00';
new_button.style.color = '#000000';
new_button.innerHTML = '导入方案到小助手';
new_button.setAttribute('name', 'yh');
new_button.onclick = function () {
var plan_str = this.parentNode.previousSibling.querySelector('code').innerText;
obj.importPlan('bbs', plan_str);
}
var new_button_copy = document.createElement('buton');
new_button_copy.className = ' SplitDropdown-button Button Button--primary hasIcon';
new_button_copy.innerHTML = '复制';
new_button_copy.style.float = 'right';
new_button_copy.onclick = function () {
var plan_str = this.parentNode.previousSibling.querySelector('code').innerText;
GM_setClipboard(plan_str, 'text');
obj.swal_fadeAway("复制成功", 1200);
}
new_div.append(new_button);
new_div.append(new_button_copy);
array_topics[i].parentNode.after(new_div);
new_button.parentNode.previousSibling.setAttribute('flag', 'true');
array_topics[i].setAttribute('plugin', 'true');
}
}
var array_inster_button = document.getElementsByName('yh');
for (let i = 0; i < array_inster_button.length; i++) {
var tmp = array_inster_button[i].parentNode.previousSibling;
if (tmp == null || !tmp.hasAttribute('flag')) {
array_inster_button[i].parentNode.remove();
}
}
//升级判断
var version_new = $2(".item-link1").find('a')[0].text;
if (version_new.indexOf("(有更新)") < 0 && version < version_new.split("v")[1]) {
$2(".item-link1").find('a')[0].text = (version_new + "(有更新)");
}
}, 500);
}
})
})();