// ==UserScript==
// @name 【玩的嗨】VIP工具箱,百度文库解析导出,全网VIP视频免费破解去广告,一站式音乐搜索下载,获取B站封面,下载B站视频等众多功能聚合 长期更新,放心使用
// @namespace https://www.wandhi.com/
// @version 4.2.48
// @homepage https://tools.wandhi.com/scripts
// @supportURL https://wiki.wandhi.com/
// @description 功能介绍:1、Vip视频解析;2、一站式音乐搜索解决方案;3、bilibili视频封面获取;4、bilibili视频下载;5、上学吧答案查询(已下线);6、商品历史价格展示(一次性告别虚假降价);7、优惠券查询
// @author MaxZhang
// @icon https://www.wandhi.com//favicon.ico
// @include *://m.youku.com/v*
// @include *://m.youku.com/a*
// @include *://v.youku.com/v_*
// @include *://v.youku.com/pad_show*
// @include *://*.iqiyi.com/v_*
// @include *://*.iqiyi.com/w_*
// @include *://*.iqiyi.com/a_*
// @include *://*.iqiyi.com/adv*
// @include *.iq.com/play/*
// @include *://*.le.com/ptv/vplay/*
// @include *v.qq.com/x/cover/*
// @include *v.qq.com/x/page/*
// @include *v.qq.com/*play*
// @include *v.qq.com/cover*
// @include *://*.tudou.com/listplay/*
// @include *://*.tudou.com/albumplay/*
// @include *://*.tudou.com/programs/view/*
// @include *://*.tudou.com/v*
// @include *://*.mgtv.com/b/*
// @include *://film.sohu.com/album/*
// @include *://tv.sohu.com/v/*
// @include *://*.acfun.cn/v/*
// @include *://*.bilibili.com/video/*
// @include *://*.bilibili.com/anime/*
// @include *://*.bilibili.com/bangumi/play/*
// @include *://*.pptv.com/show/*
// @include *://*.baofeng.com/play/*
// @include *://*.wasu.cn/Play/show*
// @include *://v.yinyuetai.com/video/*
// @include *://v.yinyuetai.com/playlist/*
// @include *://*.wasu.cn/Play/show/*
// @include *://music.taihe.com/song*
// @include *://item.taobao.com/*
// @include *://s.taobao.com/search*
// @include *://list.tmall.com/search_product.htm*
// @include *://detail.tmall.com/*
// @include *://chaoshi.detail.tmall.com/*
// @include *://detail.tmall.hk/*
// @include *://item.jd.com/*
// @include *://item.jd.hk/*
// @include *://detail.vip.com/detail-*
// @include *://product.suning.com/*
// @include *://music.163.com/song*
// @include *://music.163.com/m/song*
// @include *://y.qq.com/*
// @include *://*.kugou.com/*
// @include *://*.kuwo.cn/*
// @include *://*.xiami.com/*
// @include *://music.taihe.com/*
// @include *://*.1ting.com/player*
// @include *://www.qingting.fm/*
// @include *://www.lizhi.fm/*
// @include *://music.migu.cn/*
// @include *://www.shangxueba.com/ask/*.html
// @include *://www.ximalaya.com/*
// @include *://www.shangxueba.com/ask/*.html
// @include *://pan.baidu.com/disk/home*
// @include *://yun.baidu.com/disk/home*
// @include *://pan.baidu.com/s/*
// @include *://yun.baidu.com/s/*
// @include *://pan.baidu.com/share/link*
// @include *://yun.baidu.com/share/link*
// @include *://wenku.baidu.com/view/*
// @include *://blog.csdn.net/*
// @include *://link.csdn.net/*
// @include *://link.zhihu.com/*
// @include *www.jianshu.com/go-wild*
// @exclude *://*.wandhi.com/*
// @require https://lib.baomitu.com/jquery/1.12.4/jquery.min.js
// @require https://cdn.jsdelivr.net/npm/sweetalert2@11
// @require https://lib.baomitu.com/echarts/4.6.0/echarts.min.js
// @require https://lib.baomitu.com/layer/2.3/layer.js
// @require https://lib.baomitu.com/reflect-metadata/0.1.13/Reflect.min.js
// @require https://cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js
// @require https://cdn.jsdelivr.net/npm/vuex@3.4.0/dist/vuex.min.js
// @require https://cdn.jsdelivr.net/npm/qrcode@1.4.4/build/qrcode.min.js
// @require https://cdn.jsdelivr.net/npm/crypto-js@4.0.0/crypto-js.js
// @require https://cdn.jsdelivr.net/npm/file-saver@2.0.5/dist/FileSaver.min.js
// @license MIT
// @grant GM_setClipboard
// @run-at document-end
// @connect shangxueba365.com
// @connect api.wandhi.com
// @connect cdn.jsdelivr.net
// @connect tool.manmanbuy.com
// @connect xbeibeix.com
// @connect gwdang.com
// @grant unsafeWindow
// @grant GM_xmlhttpRequest
// @grant GM_info
// @grant GM.addStyle
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_notification
// @grant GM_openInTab
// @grant GM_deleteValue
// @grant GM_registerMenuCommand
// @grant GM_unregisterMenuCommand
// @compatible firefox
// @compatible chrome
// @compatible opera safari edge
// @compatible safari
// @compatible edge
// @antifeature referral-link 此提示为GreasyFork代码规范要求含有查券功能的脚本必须添加,实际使用无任何强制跳转,代码可查,请知悉。
// @downloadURL none
// ==/UserScript==
!function(global, factory) {
"object" == typeof exports && "undefined" != typeof module ? factory(require("sweetalert2"), require("vue"), require("reflect-metadata"), require("crypto-js")) : "function" == typeof define && define.amd ? define([ "sweetalert2", "vue", "reflect-metadata", "crypto-js" ], factory) : factory((global = "undefined" != typeof globalThis ? globalThis : global || self).Swal, global.Vue, null, global.CryptoJS);
}(this, (function(Swal, Vue, reflectMetadata, CryptoJS) {
"use strict";
function _interopDefaultLegacy(e) {
return e && "object" == typeof e && "default" in e ? e : {
default: e
};
}
var Swal__default = _interopDefaultLegacy(Swal), Vue__default = _interopDefaultLegacy(Vue), CryptoJS__default = _interopDefaultLegacy(CryptoJS), extendStatics = function(d, b) {
return (extendStatics = Object.setPrototypeOf || {
__proto__: []
} instanceof Array && function(d, b) {
d.__proto__ = b;
} || function(d, b) {
for (var p in b) b.hasOwnProperty(p) && (d[p] = b[p]);
})(d, b);
};
function __extends(d, b) {
function __() {
this.constructor = d;
}
extendStatics(d, b), d.prototype = null === b ? Object.create(b) : (__.prototype = b.prototype,
new __);
}
function __decorate(decorators, target, key, desc) {
var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function __metadata(metadataKey, metadataValue) {
if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(metadataKey, metadataValue);
}
function __awaiter(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
}
function __generator(thisArg, body) {
var f, y, t, g, _ = {
label: 0,
sent: function() {
if (1 & t[0]) throw t[1];
return t[1];
},
trys: [],
ops: []
};
return g = {
next: verb(0),
throw: verb(1),
return: verb(2)
}, "function" == typeof Symbol && (g[Symbol.iterator] = function() {
return this;
}), g;
function verb(n) {
return function(v) {
return function step(op) {
if (f) throw new TypeError("Generator is already executing.");
for (;_; ) try {
if (f = 1, y && (t = 2 & op[0] ? y.return : op[0] ? y.throw || ((t = y.return) && t.call(y),
0) : y.next) && !(t = t.call(y, op[1])).done) return t;
switch (y = 0, t && (op = [ 2 & op[0], t.value ]), op[0]) {
case 0:
case 1:
t = op;
break;
case 4:
return _.label++, {
value: op[1],
done: !1
};
case 5:
_.label++, y = op[1], op = [ 0 ];
continue;
case 7:
op = _.ops.pop(), _.trys.pop();
continue;
default:
if (!(t = _.trys, (t = t.length > 0 && t[t.length - 1]) || 6 !== op[0] && 2 !== op[0])) {
_ = 0;
continue;
}
if (3 === op[0] && (!t || op[1] > t[0] && op[1] < t[3])) {
_.label = op[1];
break;
}
if (6 === op[0] && _.label < t[1]) {
_.label = t[1], t = op;
break;
}
if (t && _.label < t[2]) {
_.label = t[2], _.ops.push(op);
break;
}
t[2] && _.ops.pop(), _.trys.pop();
continue;
}
op = body.call(thisArg, _);
} catch (e) {
op = [ 6, e ], y = 0;
} finally {
f = t = 0;
}
if (5 & op[0]) throw op[1];
return {
value: op[0] ? op[1] : void 0,
done: !0
};
}([ n, v ]);
};
}
}
var update_key = "isUpdate", Min = 60, Hour = 60 * Min, B1 = "YmVpYmVpZG91eXUxMjM0NQ==", B2 = "YmVpYmVpMTIzNDU2Nzg5MA==", Logger = function() {
function Logger() {}
return Logger.log = function(msg, level) {}, Logger.debug = function(msg) {
this.log(msg, LogLevel.debug);
}, Logger.info = function(msg) {
this.log(msg, LogLevel.info);
}, Logger.warn = function(msg) {
this.log(msg, LogLevel.warn);
}, Logger.error = function(msg) {
this.log(msg, LogLevel.error);
}, Logger;
}(), LogLevel;
!function(LogLevel) {
LogLevel[LogLevel.debug = 0] = "debug", LogLevel[LogLevel.info = 1] = "info", LogLevel[LogLevel.warn = 2] = "warn",
LogLevel[LogLevel.error = 3] = "error";
}(LogLevel || (LogLevel = {}));
var Config = function() {
function Config() {}
return Object.defineProperty(Config, "env", {
get: function() {
return GM_info;
},
enumerable: !1,
configurable: !0
}), Config.get = function(key, defaultValue) {
void 0 === defaultValue && (defaultValue = "");
var objStr = GM_getValue(this.encode(key), defaultValue);
if (objStr) {
var obj = JSON.parse(objStr);
if (-1 == obj.exp || obj.exp > (new Date).getTime()) return Logger.info("cache true"),
obj.value;
}
return Logger.info("cache false"), defaultValue;
}, Config.set = function(key, v, exp) {
void 0 === exp && (exp = -1);
var obj = {
key: key,
value: v,
exp: -1 == exp ? exp : (new Date).getTime() + 1e3 * exp
};
GM_setValue(this.encode(key), JSON.stringify(obj));
}, Config.clear = function(key) {
this.set(key, null, -10);
}, Config.decode = function(str) {
return atob(str);
}, Config.encode = function(str) {
return btoa(str);
}, Config;
}(), History = function History() {
this.max = 0, this.price_detail = [];
}, PriceDetail = function PriceDetail() {}, ListPriceItem = function ListPriceItem() {}, BrowerType;
!function(BrowerType) {
BrowerType[BrowerType.Edge = 0] = "Edge", BrowerType[BrowerType.Edg = 1] = "Edg",
BrowerType[BrowerType.Chrome = 2] = "Chrome", BrowerType[BrowerType.Firefox = 3] = "Firefox",
BrowerType[BrowerType.Safiri = 4] = "Safiri", BrowerType[BrowerType.Se360 = 5] = "Se360",
BrowerType[BrowerType.Ie2345 = 6] = "Ie2345", BrowerType[BrowerType.Baidu = 7] = "Baidu",
BrowerType[BrowerType.Liebao = 8] = "Liebao", BrowerType[BrowerType.UC = 9] = "UC",
BrowerType[BrowerType.QQ = 10] = "QQ", BrowerType[BrowerType.Sogou = 11] = "Sogou",
BrowerType[BrowerType.Opera = 12] = "Opera", BrowerType[BrowerType.Maxthon = 13] = "Maxthon";
}(BrowerType || (BrowerType = {}));
var Core = function() {
function Core() {
this.url = this.currentUrl();
}
return Core.appendTo = function(selecter, html) {
$(selecter).append(html);
}, Core.lazyload = function(callback, time) {
return void 0 === time && (time = 5), __awaiter(this, void 0, Promise, (function() {
var _this = this;
return __generator(this, (function(_a) {
return [ 2, new Promise((function(resolve) {
setTimeout((function() {
return __awaiter(_this, void 0, void 0, (function() {
return __generator(this, (function(_a) {
switch (_a.label) {
case 0:
return [ 4, callback() ];
case 1:
return _a.sent(), resolve(), [ 2 ];
}
}));
}));
}), 1e3 * time);
})) ];
}));
}));
}, Core.autoLazyload = function(is_ok, callback, time) {
return void 0 === time && (time = 5), __awaiter(this, void 0, Promise, (function() {
var _this = this;
return __generator(this, (function(_a) {
return [ 2, new Promise((function(resolve) {
return __awaiter(_this, void 0, void 0, (function() {
return __generator(this, (function(_a) {
switch (_a.label) {
case 0:
return is_ok() ? [ 3, 1 ] : (setTimeout((function() {
Core.autoLazyload(is_ok, callback, time).then((function() {
return resolve();
}));
}), 1e3 * time), [ 3, 3 ]);
case 1:
return [ 4, callback() ];
case 2:
_a.sent(), Logger.debug("\u81ea\u52a8\u5ef6\u8fdf\u56de\u8c03\u6267\u884c\u5b8c\u6bd5,\u5ef6\u65f6\u65f6\u95f4:" + time),
resolve(), _a.label = 3;
case 3:
return [ 2 ];
}
}));
}));
})) ];
}));
}));
}, Core.sleep = function(time) {
return new Promise((function(resolve) {
setTimeout((function() {
resolve();
}), 1e3 * time);
}));
}, Core.random = function(min, max) {
var range = max - min, rand = Math.random();
return min + Math.round(rand * range);
}, Core.prototype.background = function(callback, time) {
void 0 === time && (time = 5), setInterval((function() {
callback();
}), 1e3 * time);
}, Object.defineProperty(Core, "head", {
get: function() {
return unsafeWindow.window.document.head;
},
enumerable: !1,
configurable: !0
}), Core.isNumber = function(a) {
return !Array.isArray(a) && a - parseFloat(a) >= 0;
}, Core.addUrl = function(key, url) {
GM_setValue(key, url);
}, Core.openUrl = function(key) {
this.open(GM_getValue(key));
}, Core.prototype.getPar = function(option, url) {
void 0 === url && (url = window.location.search);
var v = url.match(new RegExp("[?&]" + option + "=([^&]+)", "i"));
return null == v || v.length < 1 ? "" : v[1];
}, Core.appendCss = function(url) {
var linkCSS = document.createElement("link");
linkCSS.type = "text/css", linkCSS.rel = "stylesheet", linkCSS.href = url, Core.head.appendChild(linkCSS);
}, Core.appendCssContent = function(content) {
var Style = document.createElement("style");
Style.innerHTML = content, Core.head.appendChild(Style);
}, Core.prototype.bodyAppendCss = function(url) {
$("body").append($(''));
}, Core.bodyAppend = function(html) {
$("body").append(html);
}, Core.appendJs = function(url) {
var linkScript = document.createElement("script");
linkScript.type = "text/javascript", linkScript.src = url, this.head.appendChild(linkScript);
}, Core.prototype.bodyAppendJs = function(url) {
$("body").append($('