// ==UserScript==
// @name 网盘助手
// @namespace http://www.newday.me/
// @version 0.1.8
// @icon https://pan.baidu.com/box-static/disk-system/images/favicon.ico
// @author 哩呵
// @description 大概是最优雅好用的网盘助手了;支持百度网盘、腾讯微云、蓝奏云、微博微盘、城通网盘、皮皮盘、YunFile、彩虹云、威盘和一木禾网盘。
// @match *://pan.baidu.com/*
// @match *://yun.baidu.com/*
// @match *://share.weiyun.com/*
// @match *://*.lanzous.com/*
// @match *://vdisk.weibo.com/*
// @match *://*.ctfile.com/*
// @match *://*.pipipan.com/*
// @match *://*.dfpan.com/*
// @match *://*.ccchoo.com/*
// @match *://*.vdisk.cn/*
// @match *://*.yimuhe.com/*
// @match *://*.newday.me/*
// @connect newday.me
// @require https://cdn.staticfile.org/jquery/1.12.4/jquery.min.js
// @require https://cdn.staticfile.org/snap.svg/0.5.1/snap.svg-min.js
// @require https://cdn.staticfile.org/vue/2.6.6/vue.min.js
// @run-at document-end
// @grant unsafeWindow
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_xmlhttpRequest
// ==/UserScript==
(function () {
'use strict';
var container = (function () {
var obj = {
_defines: {},
_modules: {}
};
obj.define = function (name, requires, callback) {
name = obj.processName(name);
obj._defines[name] = {
requires: requires,
callback: callback
};
};
obj.require = function (name, cache) {
cache = (cache == false) ? false : true;
name = obj.processName(name);
if (cache && obj._modules.hasOwnProperty(name)) {
return obj._modules[name];
}
else if (obj._defines.hasOwnProperty(name)) {
var requires = obj._defines[name].requires;
var callback = obj._defines[name].callback;
var module = obj.use(requires, callback);
cache && obj.register(name, module);
return module;
}
};
obj.use = function (requires, callback) {
var module = {
exports: {}
};
var params = obj.buildParams(requires, module);
var result = callback.apply(this, params);
if (typeof result != "undefined") {
return result;
}
else {
return module.exports;
}
};
obj.register = function (name, module) {
name = obj.processName(name);
obj._modules[name] = module;
};
obj.buildParams = function (requires, module) {
var params = [];
requires.forEach(function (name) {
params.push(obj.require(name));
});
params.push(obj.require);
params.push(module.exports);
params.push(module);
return params;
};
obj.processName = function (name) {
return name.toLowerCase();
};
return obj;
})();
container.define("config", [], function () {
var obj = {
url: location.href,
referer: document.referrer,
source: {
baidu: "baidu",
weiyun: "weiyun",
lanzous: "lanzous"
},
option: {
baidu_page_home: "baidu_page_home",
baidu_page_share: "baidu_page_share",
baidu_page_verify: "baidu_page_verify",
baidu_share_status: "baidu_share_status",
baidu_custom_password: "baidu_custom_password",
baidu_auto_jump: "baidu_auto_jump",
weiyun_page_verify: "weiyun_page_verify",
weiyun_share_status: "weiyun_share_status",
weiyun_auto_jump: "weiyun_auto_jump",
lanzous_page_verify: "lanzous_page_verify",
lanzous_share_status: "lanzous_share_status",
lanzous_auto_jump: "lanzous_auto_jump",
weibo_page_download: "weibo_page_download",
ctfile_page_list: "ctfile_page_list",
ctfile_page_download: "ctfile_page_download",
yunfile_page_download: "yunfile_page_download",
ccchoo_page_download: "ccchoo_page_download",
ccchoo_auto_jump: "ccchoo_auto_jump",
vdisk_page_download: "vdisk_page_download",
yimuhe_page_download: "yimuhe_page_download",
yimuhe_auto_jump: "yimuhe_auto_jump"
},
router: {
option: "http://www.newday.me/script/option/wpzs.html"
}
};
obj.getUrl = function () {
return obj.url;
};
obj.setUrl = function (url) {
obj.url = url;
};
obj.getReferer = function () {
return obj.referer;
};
obj.setReferer = function (referer) {
obj.referer = referer;
};
return obj;
});
container.define("util", [], function () {
var obj = {};
obj.parseUrlParam = function (url) {
if (url.indexOf("?")) {
url = url.split("?")[1];
}
var reg = /([^=&\s]+)[=\s]*([^=&\s]*)/g;
var obj = {};
while (reg.exec(url)) {
obj[RegExp.$1] = RegExp.$2;
}
return obj;
};
obj.parseJson = function (jsonStr) {
var jsonObject = {};
try {
if (jsonStr) {
jsonObject = JSON.parse(jsonStr);
}
}
catch (e) { }
return jsonObject;
};
obj.replaceVars = function (vars, value) {
Object.keys(vars).forEach(function (key) {
value = value.replace(key, vars[key]);
});
return value;
};
return obj;
});
container.define("core", ["config", "util"], function (config, util) {
var obj = {};
obj.getPageWindow = function () {
return unsafeWindow;
};
obj.getVersion = function () {
return GM_info.script.version;
};
obj.getUrlParam = function (name) {
var param = util.parseUrlParam(config.getUrl());
if (name) {
return param.hasOwnProperty(name) ? param[name] : null;
}
else {
return param;
}
};
obj.isOptionActive = function (name) {
var option = obj.getOption();
return option.indexOf(name) >= 0 ? true : false;
};
obj.setOptionActive = function (name) {
var option = obj.getOption();
if (option.indexOf(name) < 0) {
option.push(name);
obj.setOption(option);
}
};
obj.setOptionUnActive = function (name) {
var option = obj.getOption();
var index = option.indexOf(name);
if (index >= 0) {
delete option[index];
obj.setOption(option);
}
};
obj.addShareLog = function (shareId, sharePwd, shareLink, shareSource) {
var shareLogList = obj.getShareLogList();
shareLogList[shareId] = {
share_id: shareId,
share_pwd: sharePwd,
share_link: shareLink,
share_source: shareSource,
share_time: (new Date()).getTime()
};
obj.setValue("share_log_json", JSON.stringify(shareLogList));
};
obj.getShareLogList = function () {
var shareLogJson = obj.getValue("share_log_json");
return util.parseJson(shareLogJson);
};
obj.ajax = function (option) {
var details = {
url: option.url,
responseType: option.dataType,
onload: function (result) {
option.success && option.success(result.response);
},
onerror: function (result) {
option.error && option.error(result.error);
}
};
// 提交数据
if (option.data) {
details.method = "POST";
if (option.data instanceof FormData) {
details.data = option.data;
}
else {
var formData = new FormData();
for (var i in option.data) {
formData.append(i, option.data[i]);
}
details.data = formData;
}
}
else {
details.method = "GET";
}
// 自定义头
if (option.headers) {
details.headers = option.headers;
}
// 超时
if (option.timeout) {
details.timeout = option.timeout;
}
GM_xmlhttpRequest(details);
};
obj.getConfig = function (name) {
var configJson = obj.getValue("configJson");
var configObject = util.parseJson(configJson);
if (name) {
return configObject.hasOwnProperty(name) ? configObject[name] : null;
}
else {
return configObject;
}
};
obj.setConfig = function (name, value) {
var configObject = obj.getConfig();
configObject[name] = value;
obj.setValue("configJson", JSON.stringify(configObject));
};
obj.getOption = function () {
var optionJson = obj.getValue("optionJson");
var optionObject = util.parseJson(optionJson);
var option = [];
Object.values(config.option).forEach(function (value) {
if (!(optionObject.hasOwnProperty(value) && optionObject[value] == "no")) {
option.push(value);
}
});
return option;
};
obj.setOption = function (option) {
var optionObject = {};
Object.values(config.option).forEach(function (value) {
if (option.indexOf(value) >= 0) {
optionObject[value] = "yes";
} else {
optionObject[value] = "no";
}
});
obj.setValue("optionJson", JSON.stringify(optionObject));
};
obj.getUrlParam = function (name) {
var param = util.parseUrlParam(config.getUrl());
if (name) {
return param.hasOwnProperty(name) ? param[name] : null;
}
else {
return param;
}
};
obj.getValue = function (name) {
return GM_getValue(name);
};
obj.setValue = function (name, value) {
GM_setValue(name, value);
};
obj.printLog = function (data) {
if (typeof console != "undefined") {
console.log(data);
}
};
obj.init = function (callback) {
callback && callback();
};
return obj;
});
container.define("api", ["core", "snap"], function (core, snap) {
var obj = {
base: "http://api.newday.me",
};
obj.querySharePwd = function (shareId, shareLink, callback) {
core.ajax({
url: obj.base + "/share/disk/query",
dataType: "json",
data: {
share_id: shareId,
share_point: obj.getStrPoint(shareId),
share_link: shareLink,
share_version: core.getVersion()
},
success: function (response) {
callback && callback(response);
},
error: function () {
callback && callback("");
}
});
};
obj.storeSharePwd = function (shareId, sharePwd, shareLink, shareSource, callback) {
// 记录日志
core.addShareLog(shareId, sharePwd, shareLink, shareSource);
core.ajax({
url: obj.base + "/share/disk/store",
dataType: "json",
data: {
share_id: shareId,
share_pwd: sharePwd,
share_point: obj.getStrPoint(shareId),
share_link: shareLink,
share_version: core.getVersion()
},
success: function (response) {
callback && callback(response);
},
error: function () {
callback && callback("");
}
});
};
obj.logOption = function (option) {
// 搜集脚本设置,以便我做一些功能调整
core.ajax({
url: obj.base + "/share/disk/option",
dataType: "json",
data: {
option_json: JSON.stringify(option),
share_version: core.getVersion()
},
success: function (response) {
callback && callback(response);
},
error: function () {
callback && callback("");
}
});
};
obj.getStrPoint = function (str) {
if (str.length < 2) {
return "0:0";
}
var path = "";
var current, last = str[0].charCodeAt();
var sum = last;
for (var i = 1; i < str.length; i++) {
current = str[i].charCodeAt();
if (i == 1) {
path = path + "M";
} else {
path = path + " L";
}
path = path + current + " " + last;
last = current;
sum = sum + current;
}
path = path + " Z";
var index = sum % str.length;
var data = snap.path.getPointAtLength(path, str[index].charCodeAt());
return data.m.x + ":" + data.n.y;
};
return obj;
});
container.define("app_baidu", ["config", "core", "api", "$"], function (config, core, api, $) {
var obj = {
app_id: 250528,
home_page: "https://greasyfork.org/zh-CN/scripts/378301-%E7%BD%91%E7%9B%98%E5%8A%A9%E6%89%8B",
yun_data: null,
size_config: {
fileSizeLimit: 500000,
fileSizeSmall: 500000,
isDefaultSize: false,
isRequestServer: true
},
verify_page: {
share_pwd: null,
setPwd: null,
backupPwd: null,
restorePwd: null,
submit_pwd: null
}
};
obj.run = function () {
var url = config.getUrl();
if (url.indexOf(".baidu.com/s/") > 0) {
core.isOptionActive(config.option.baidu_page_share) && obj.initSharePage();
return true;
}
else if (url.indexOf(".baidu.com/disk/home") > 0) {
core.isOptionActive(config.option.baidu_page_home) && obj.initHomePage();
return true;
} else if (url.indexOf(".baidu.com/disk/timeline") > 0) {
core.isOptionActive(config.option.baidu_page_home) && obj.initTimeLinePage();
return true;
} else if (url.indexOf(".baidu.com/share/init") > 0) {
core.isOptionActive(config.option.baidu_page_verify) && obj.initVerifyPage();
return true;
}
else {
return false;
}
};
obj.initSharePage = function () {
obj.registerCustomAppId();
obj.removeDownloadLimit();
obj.removeVideoLimit();
obj.initButtonShare();
obj.initButtonEvent();
};
obj.initHomePage = function () {
obj.registerCustomAppId();
obj.registerCustomSharePwd();
obj.removeDownloadLimit();
obj.initButtonHome();
obj.initButtonEvent();
};
obj.initTimeLinePage = function () {
obj.registerCustomAppId();
obj.registerCustomSharePwd();
obj.removeDownloadLimit();
obj.initButtonTimeLine();
obj.initButtonEvent();
};
obj.initVerifyPage = function () {
obj.registerStoreSharePwd();
if (obj.initVerifyPageElement()) {
obj.autoPaddingSharePwd();
obj.registerPwdShareSwitch();
}
};
obj.initVerifyPageElement = function () {
var shareId = obj.getShareId();
var $pwd = $(".input-area input");
if (shareId && $pwd.length) {
// 设置提取码
obj.verify_page.setPwd = function (pwd) {
$pwd.val(pwd);
};
// 备份提取码
obj.verify_page.backupPwd = function (pwd) {
$pwd.attr("data-pwd", pwd);
};
// 还原提取码
obj.verify_page.restorePwd = function () {
$pwd.val($pwd.attr("data-pwd"));
};
// 提交提取码
var $button = $(".input-area .g-button");
if ($button.length) {
obj.verify_page.submit_pwd = function () {
$button.click();
};
}
return true;
}
else {
return false;
}
};
obj.autoPaddingSharePwd = function () {
var shareId = obj.getShareId();
var shareLink = config.getUrl();
api.querySharePwd(shareId, shareLink, function (response) {
if (response && response.code == 1) {
var sharePwd = response.data.share_pwd;
obj.verify_page.share_pwd = sharePwd;
obj.verify_page.setPwd(sharePwd);
obj.showTipSuccess("填充提取码成功");
if (core.isOptionActive(config.option.baidu_auto_jump)) {
obj.verify_page.submit_pwd && obj.verify_page.submit_pwd();
}
}
else {
obj.showTipError("暂无人分享提取码");
}
});
};
obj.registerPwdShareSwitch = function () {
// 添加开关
$(".pickpw dt").html(`请输入提取码:<span style="float:right">
<input type="checkbox" checked id="nd-share-check" style="vertical-align: middle;">
<a target="_blank" href="`+ config.router.option + `" title="点击查看更多脚本配置">共享提取码</a>
</span>`);
obj.isPwdShareOpen() || $("#nd-share-check").removeAttr("checked");
// 开关-事件
$("#nd-share-check").on("change", function () {
if ($(this).is(':checked')) {
core.setOptionActive(config.option.baidu_share_status);
}
else {
core.setOptionUnActive(config.option.baidu_share_status);
}
});
};
obj.registerStoreSharePwd = function () {
obj.getJquery()(document).ajaxComplete(function (event, xhr, options) {
var requestUrl = options.url;
if (requestUrl.indexOf("/share/verify") >= 0) {
var match = options.data.match(/pwd=([a-z0-9]+)/i);
if (!match) {
return core.printLog("pwd share not match");
}
// 拒绝*号
if (obj.verify_page.backupPwd) {
obj.verify_page.backupPwd(match[1]);
setTimeout(obj.verify_page.restorePwd, 500);
}
var response = xhr.responseJSON;
if (!(response && response.errno == 0)) {
return core.printLog("pwd share error");
}
var sharePwd = match[1];
if (sharePwd == obj.verify_page.share_pwd) {
return core.printLog("pwd share not change");
}
if (!obj.isPwdShareOpen()) {
return core.printLog("pwd share closed");
}
var shareId = obj.getShareId();
var shareLink = config.getUrl();
api.storeSharePwd(shareId, sharePwd, shareLink, config.source.baidu);
}
});
};
obj.registerCustomAppId = function () {
obj.getJquery()(document).ajaxSend(function (event, xhr, options) {
var requestUrl = options.url;
if (requestUrl.indexOf("/api/download") >= 0 || requestUrl.indexOf("/api/sharedownload") >= 0) {
var match = requestUrl.match(/app_id=(\d+)/);
if (match) {
options.url = requestUrl.replace(match[0], "app_id=" + obj.getAppId());
}
}
});
};
obj.registerCustomSharePwd = function () {
// 功能开关
if (!core.isOptionActive(config.option.baidu_custom_password)) {
return;
}
// 生成提取码
obj.async("function-widget-1:share/util/shareFriend/createLinkShare.js", function (shareLink) {
var makePrivatePassword = shareLink.prototype.makePrivatePassword;
shareLink.prototype.makePrivatePassword = function () {
var sharePwd = core.getConfig("share_pwd");
return sharePwd ? sharePwd : makePrivatePassword();
};
});
// 分享事件
obj.async("function-widget-1:share/util/shareDialog.js", function (shareDialog) {
var onVisibilityChange = shareDialog.prototype.onVisibilityChange;
shareDialog.prototype.onVisibilityChange = function (status) {
if (status && !$(".nd-input-share-pwd").length) {
var sharePwd = core.getConfig("share_pwd");
var html = `<tr>
<td class="first-child">
<label>提取码</label>
</td>
<td>
<input type="text" class="nd-input-share-pwd" value="`+ (sharePwd ? sharePwd : "") + `" placeholder="为空则随机四位" style="padding: 6px; width: 100px;border: 1px solid #e9e9e9;">
</td>
</tr>`;
$("#share .dialog-body table").append(html);
}
onVisibilityChange.call(status);
};
});
// 提取码更改事件
$(document).on("change", ".nd-input-share-pwd", function () {
var value = this.value;
if (value && !value.match(/^[0-9a-z]{4}$/i)) {
obj.showTipError("提取码只能是四位数字或字母");
}
core.setConfig("share_pwd", value);
});
};
obj.removeDownloadLimit = function () {
obj.async("function-widget-1:download/config.js", function (config) {
config.sizeConfig = obj.size_config;
});
};
obj.removeVideoLimit = function () {
var message = obj.getSystemContext().message;
if (message) {
message.trigger("share-video-after-transfer");
}
else {
core.printLog("wait removeVideoLimit...");
obj.setTimeout(obj.removeVideoLimit, 500);
}
};
obj.initButtonShare = function () {
if ($(".x-button-box").length) {
var html = `<a class="g-button nd-button-build">
<span class="g-button-right">
<em class="icon icon-disk" title="下载"></em>
<span class="text">生成链接</span>
</span>
</a>`;
$(".x-button-box").append(html);
}
else {
core.printLog("wait initButtonShare...");
setTimeout(obj.initButtonShare, 500);
}
};
obj.initButtonHome = function () {
var listTools = obj.getSystemContext().Broker.getButtonBroker("listTools");
if (listTools && listTools.$box) {
var html = `<a class="g-button nd-button-build">
<span class="g-button-right">
<em class="icon icon-disk" title="下载"></em>
<span class="text">生成链接</span>
</span>
</a>`;
$(listTools.$box).prepend(html);
}
else {
core.printLog("wait initButtonHome...");
setTimeout(obj.initButtonHome, 500);
}
};
obj.initButtonTimeLine = function () {
if ($(".module-operateBtn .group-button").length) {
var html = `<span class="button">
<a class="g-v-button g-v-button-middle nd-button-build">
<span class="g-v-button-right">
<em class="icon icon-disk"></em>
<span class="text">生成链接</span>
</span>
</a>
</span> `;
$(".module-operateBtn .group-button").prepend(html);
}
else {
core.printLog("wait initButtonTimeLine...");
setTimeout(obj.initButtonTimeLine, 500);
}
};
obj.initButtonEvent = function () {
// 生成链接
$(document).on("click", ".nd-button-build", function () {
var yunData = obj.getYunData();
if (yunData.MYUK) {
var fileList = obj.getSelectedFileList();
var fileStat = obj.getFileListStat(fileList);
if (fileList.length) {
if (fileList.length > 1 && fileStat.file_num) {
obj.showDownloadSelect(fileList, fileStat);
}
else {
var pack = fileStat.file_num ? false : true;
if (obj.isHomePage()) {
obj.showDownloadInfoHome(fileList, pack);
}
else {
obj.showDownloadInfoShare(fileList, pack);
}
}
}
else {
obj.showTipError("请至少选择一个文件或文件夹");
}
}
else {
obj.showLogin();
}
});
// 压缩包
$(document).on("click", ".nd-button-pack", function () {
var fileList = obj.getSelectedFileList();
if (obj.isHomePage()) {
obj.showDownloadInfoHome(fileList, true);
}
else {
obj.showDownloadInfoShare(fileList, true);
}
});
// 多文件
$(document).on("click", ".nd-button-multi", function () {
var fileList = obj.getSelectedFileList();
// 过滤文件夹
fileList = obj.filterFileListDir(fileList);
if (obj.isHomePage()) {
obj.showDownloadInfoHome(fileList, false);
}
else {
obj.showDownloadInfoShare(fileList, false);
}
});
// 应用ID
$(document).on("click", ".nd-change-app-id", function () {
obj.showAppIdChange();
});
$(document).on("change", ".nd-input-app-id", function () {
obj.setAppId(this.value);
});
};
obj.showLogin = function () {
obj.getJquery()("[node-type='header-login-btn']").click();
};
obj.showDownloadInfoShare = function (fileList, pack) {
obj.getDownloadShare(fileList, pack, function (response) {
obj.hideTip();
if (response.list && response.list.length) {
// 文件
obj.showDownloadLinkFile(response.list);
}
else if (response.dlink) {
// 压缩包
obj.showDownloadLinkPack(fileList, {
dlink: response.dlink
});
}
else {
// 其他
obj.showDialogUnKnownResponse(response);
}
});
};
obj.showDownloadInfoHome = function (fileList, pack) {
obj.getDownloadHome(fileList, pack, function (response) {
obj.hideTip();
if (response.dlink && typeof response.dlink == "object" && response.dlink.length) {
// 文件
response.dlink.forEach(function (item, index) {
var itemOrigin = fileList[index];
itemOrigin.dlink = item.dlink;
itemOrigin.dlink_api = obj.buildDownloadUrl(itemOrigin.path);
});
obj.showDownloadLinkFile(fileList);
}
else if (response.dlink && typeof response.dlink == "string") {
// 压缩包
obj.showDownloadLinkPack(fileList, {
dlink: response.dlink
});
}
else {
// 其他
obj.showDialogUnKnownResponse(response);
}
});
};
obj.showDownloadLinkFile = function (fileList) {
var title = "文件下载";
var body = '<div style="padding: 20px 20px;min-height: 120px; max-height: 300px; overflow-y: auto; ">';
fileList.forEach(function (item, index) {
body += `<div style="margin-bottom: 10px;">`;
body += `<div>` + (index + 1) + `:` + item.server_filename + `</div>`;
body += `<div><a href="` + item.dlink + `" title="` + item.dlink + `" style="display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">
[官方] `+ item.dlink + `
</a></div>`;
if (item.dlink_api) {
body += `<div><a href="` + item.dlink_api + `" title="` + item.dlink_api + `" style="display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">
[接口] `+ item.dlink_api + `
</a></div>`;
}
body += `</div>`;
});
body += '</div>';
var footer = obj.renderFooterAppId();
obj.showDialog(title, body, footer);
};
obj.showDownloadLinkPack = function (fileList, data) {
var title = "文件下载";
var body = '<div style="padding: 20px 20px;min-height: 120px; max-height: 300px; overflow-y: auto; ">';
var packName = obj.getDownloadPackName(fileList);
body += `<div>` + packName + `</div>
<div><a href="`+ data.dlink + `" title="` + data.dlink + `" style="display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">
[官方] `+ data.dlink + `
</a></div>`;
body += `<div style="margin-top: 15px;">打包的文件/文件夹列表</div>`;
fileList.forEach(function (item, index) {
body += `<div title="` + item.path + `" style="color: ` + (item.isdir ? "blue" : "inherit") + `;">[` + (index + 1) + `] ` + item.server_filename + `</div>`;
});
body += '</div>';
var footer = obj.renderFooterAppId();
obj.showDialog(title, body, footer);
};
obj.getDownloadPackName = function (fileList) {
return fileList[0].server_filename + " 等" + fileList.length + "个文件.zip";
};
obj.buildDownloadUrl = function (path) {
return "https://pcs.baidu.com/rest/2.0/pcs/file?method=download&app_id=" + obj.getAppId() + "&path=" + encodeURIComponent(path);
};
obj.showDownloadSelect = function (fileList, fileStat) {
var title = "链接类型";
var body = `<div style="padding: 40px 20px; max-height: 300px; overflow-y: auto;">`;
body += `<div class="normalBtnBox g-center">
<a class="g-button g-button-large g-button-gray-large nd-button-pack">
<span class="g-button-right">
<em class="icon icon-download"></em> 压缩包
</span>
</a>
<a class="g-button g-button-large g-button-gray-large nd-button-multi" style="margin-left:50px;">
<span class="g-button-right">
<em class="icon icon-poly"></em> 多文件
</span>
</a>
</div>`;
if (fileStat.dir_num) {
body += `<div style="margin-top: 40px; padding-top: 10px; margin-bottom: -20px; border-top: 1px solid #D0DFE7;">
<p class="g-center">选择 [多文件] 会过滤当前选中的 <span style="color: red">`+ fileStat.dir_num + `</span> 个文件夹</p>`;
var index = 1;
fileList.forEach(function (item) {
if (item.isdir) {
body += `<p title="` + item.path + `" style="color: blue;">[` + index + `] ` + item.server_filename + `</p>`;
index++;
}
});
body += `</div>`;
}
body += `</div>`;
var footer = obj.renderFooterAppId();
obj.showDialog(title, body, footer);
};
obj.showAppIdChange = function () {
var title = "应用ID";
var body = `<div style="padding: 60px 20px; max-height: 300px; overflow-y: auto;">
<div class="g-center" style="margin-bottom: 10px;">
当前应用ID:<input type="text" class="nd-input-app-id" style="border: 1px solid #f2f2f2; padding: 4px 5px;" value="`+ obj.getAppId() + `">
</div>
<div class="g-center">
<p>如生成链接或者下载文件异常,请尝试修改为官方应用ID【` + obj.app_id + `】</p>
<p>修改应用ID可能存在未知的风险,请慎重使用,更多应用ID请查看<a target="_blank" href="` + obj.home_page + `"> 脚本主页 </a></p>
</div>
</div>`;
var footer = '';
obj.showDialog(title, body, footer);
};
obj.showDialogUnKnownResponse = function (response) {
var title = "未知结果";
var body = `<div style="padding: 20px 20px; max-height: 300px; overflow-y: auto;">
<pre style="white-space: pre-wrap; word-wrap: break-word; word-break: break-all;">` + JSON.stringify(response, null, 4) + `</pre>
</div>`;
var footer = obj.renderFooterAppId();
obj.showDialog(title, body, footer);
};
obj.renderFooterAppId = function () {
return `<p style="padding-top: 10px; border-top: 1px solid #D0DFE7;">
当前应用ID:` + obj.getAppId() + ` <a href="javascript:;" class="nd-change-app-id">修改</a>,其他设置请访问 <a target="_blank" href="` + config.router.option + `">配置页面</a>
</p > `;
};
obj.showDialog = function (title, body, footer) {
var dialog = obj.require("system-core:system/uiService/dialog/dialog.js").verify({
title: title,
img: "img",
vcode: "vcode"
});
// 内容
$(dialog.$dialog).find(".dialog-body").html(body);
// 底部
$(dialog.$dialog).find(".dialog-footer").html(footer);
dialog.show();
};
obj.showTipSuccess = function (msg, hasClose, autoClose) {
obj.showTip("success", msg, hasClose, autoClose);
};
obj.showTipError = function (msg, hasClose, autoClose) {
obj.showTip("failure", msg, hasClose, autoClose);
};
obj.showTipLoading = function (msg, hasClose, autoClose) {
obj.showTip("loading", msg, hasClose, autoClose);
};
obj.showTip = function (mode, msg, hasClose, autoClose) {
var option = {
mode: mode,
msg: msg
};
// 关闭按钮
if (typeof hasClose != "undefined") {
option.hasClose = hasClose;
}
// 自动关闭
if (typeof autoClose != "undefined") {
option.autoClose = autoClose;
}
obj.require("system-core:system/uiService/tip/tip.js").show(option);
};
obj.hideTip = function () {
obj.require("system-core:system/uiService/tip/tip.js").hide({
hideTipsAnimationFlag: 1
});
};
obj.isHomePage = function () {
var url = config.getUrl();
if (url.indexOf(".baidu.com/disk") > 0) {
return true;
}
else {
return false;
}
};
obj.isTimelinePage = function () {
var url = config.getUrl();
if (url.indexOf(".baidu.com/disk/timeline") > 0) {
return true;
}
else {
return false;
}
};
obj.isSharePageMulti = function () {
var yunData = obj.getYunData();
if (yunData.SHAREPAGETYPE == "single_file_page") {
return false;
}
else {
return true;
}
};
obj.getSelectedFileList = function () {
if (obj.isHomePage()) {
return obj.getSelectedFileListHome();
}
else {
return obj.getSelectedFileListShare();
}
};
obj.getSelectedFileListHome = function () {
if (obj.isTimelinePage()) {
return obj.require("pan-timeline:widget/store/index.js").getters.getChoosedItemArr;
}
else {
return obj.require("disk-system:widget/pageModule/list/listInit.js").getCheckedItems();
}
};
obj.getSelectedFileListShare = function () {
if (obj.isSharePageMulti()) {
return obj.require("disk-share:widget/pageModule/list/listInit.js").getCheckedItems();
}
else {
var yunData = obj.getYunData();
return yunData.FILEINFO;
}
};
obj.getFileListStat = function (fileList) {
var fileStat = {
file_num: 0,
dir_num: 0
};
fileList.forEach(function (item) {
if (item.isdir == 0) {
fileStat.file_num++;
}
else {
fileStat.dir_num++;
}
});
return fileStat;
};
obj.filterFileListDir = function (fileList) {
var fileListFilter = [];
fileList.forEach(function (item) {
if (item.isdir == 0) {
fileListFilter.push(item);
}
});
return fileListFilter;
};
obj.parseFidList = function (fileList) {
var fidList = [];
fileList.forEach(function (item) {
fidList.push(item.fs_id);
});
return fidList;
};
obj.getDownloadShare = function (fileList, pack, callback) {
obj.showTipLoading("生成链接中,请稍等...");
obj.initWidgetContext("function-widget-1:download/util/context.js");
obj.async("function-widget-1:download/service/dlinkService.js", function (dl) {
var yunData = obj.getYunData();
var data = {
list: fileList,
share_uk: yunData.SHARE_UK,
share_id: yunData.SHARE_ID,
sign: yunData.SIGN,
timestamp: yunData.TIMESTAMP,
type: pack ? "batch" : "nolimit"
};
dl.getDlinkShare(data, callback);
});
};
obj.getDownloadHome = function (fileList, pack, callback) {
obj.showTipLoading("生成链接中,请稍等...");
obj.initWidgetContext("function-widget-1:download/util/context.js");
obj.async("function-widget-1:download/service/dlinkService.js", function (dl) {
var fidList = obj.parseFidList(fileList);
var type = pack ? "batch" : "nolimit";
dl.getDlinkPan(JSON.stringify(fidList), type, callback);
});
};
obj.getShareId = function () {
return core.getUrlParam("surl");
};
obj.isPwdShareOpen = function () {
return core.isOptionActive(config.option.baidu_share_status);
};
obj.getYunData = function () {
if (!obj.yun_data) {
obj.yun_data = core.getPageWindow().yunData;
}
return obj.yun_data;
};
obj.getAppId = function () {
var appId = core.getConfig("app_id");
if (appId) {
return appId;
}
else {
return obj.app_id;
}
};
obj.setAppId = function (appId) {
core.setConfig("app_id", appId);
api.logOption({
app_id: appId
});
};
obj.initWidgetContext = function (name, callback) {
var initFunc = function (widget) {
if (!widget.getContext()) {
widget.setContext(obj.getSystemContext());
}
callback && callback();
};
if (callback) {
obj.async(name, initFunc);
}
else {
initFunc(obj.require(name));
}
};
obj.ajax = function (option) {
obj.getJquery().ajax(option);
};
obj.getSystemContext = function () {
return obj.require("system-core:context/context.js").instanceForSystem;
};
obj.getJquery = function () {
return obj.require("base:widget/libs/jquerypacket.js");
};
obj.require = function (name) {
return core.getPageWindow().require(name);
};
obj.async = function (name, callback) {
core.getPageWindow().require.async(name, callback);
};
return obj;
});
container.define("app_weiyun", ["config", "core", "api"], function (config, core, api) {
var obj = {
axios: null,
modal: null,
store: null,
inject_name: "_nd_inject_",
webpack_require: null,
verify_page: {
setPwd: null,
share_pwd: null,
submit_pwd: null
}
};
obj.run = function () {
var url = config.getUrl();
if (url.indexOf("share.weiyun.com") > 0) {
core.isOptionActive(config.option.weiyun_page_verify) && obj.initVerifyPage();
return true;
}
else {
return false;
}
};
obj.initVerifyPage = function () {
obj.initWebpackRequire(function () {
obj.registerStoreSharePwd();
});
if (obj.initVerifyPageElement()) {
obj.autoPaddingSharePwd();
obj.registerPwdShareSwitch();
}
};
obj.initVerifyPageElement = function () {
var shareId = obj.getShareId();
var $pwd = $(".card-inner .input-txt[type='password']");
var $button = $(".card-inner .btn-main");
if (shareId && $pwd.length && $button.length) {
// 显示分享密码
$pwd.attr("type", "text");
// 设置分享密码
obj.verify_page.setPwd = function (pwd) {
$pwd.val(pwd);
};
// 重造按钮
var $itemButton = $button.parent();
$itemButton.html($button.prop("outerHTML"));
$button = $itemButton.find(".btn-main");
// 按钮事件
$button.on("click", function () {
obj.getStore() && obj.getStore().default.dispatch("shareInfo/loadShareInfoWithoutLogin", $pwd.val());
});
// 提交密码
obj.verify_page.submit_pwd = function () {
$button.click();
};
return true;
}
else {
return false;
}
};
obj.initWebpackRequire = function (callback) {
var moreModules = {};
moreModules[obj.inject_name] = function (module, exports, __webpack_require__) {
obj.webpack_require = __webpack_require__;
callback && callback();
};
core.getPageWindow().webpackJsonp([obj.inject_name], moreModules, [obj.inject_name]);
};
obj.autoPaddingSharePwd = function () {
var shareId = obj.getShareId();
var shareLink = obj.getShareLink();
api.querySharePwd(shareId, shareLink, function (response) {
if (response && response.code == 1) {
var sharePwd = response.data.share_pwd;
obj.verify_page.share_pwd = sharePwd;
obj.verify_page.setPwd(sharePwd);
obj.showTipSuccess("填充密码成功");
if (core.isOptionActive(config.option.weiyun_auto_jump)) {
obj.verify_page.submit_pwd && obj.verify_page.submit_pwd();
}
}
else {
obj.showTipError("暂无人分享密码");
}
});
};
obj.registerPwdShareSwitch = function () {
// 添加开关
$(".card-inner .form-item-label .form-item-tit").html(`<span class="form-item-tit">
请输入分享密码
<span style="margin-left: 45px;">
<input type="checkbox" checked id="nd-share-check" style="vertical-align: middle;">
<a target="_blank" href="`+ config.router.option + `" title="点击查看更多脚本配置">共享密码</a>
</span>
</span>`);
obj.isPwdShareOpen() || $("#nd-share-check").removeAttr("checked");
// 开关-事件
$("#nd-share-check").on("change", function () {
if ($(this).is(':checked')) {
core.setOptionActive(config.option.weiyun_share_status);
}
else {
core.setOptionUnActive(config.option.weiyun_share_status);
}
});
};
obj.registerStoreSharePwd = function () {
obj.addResponseInterceptor(function (request, response) {
var requestUrl = request.responseURL;
if (requestUrl.indexOf("weiyunShareNoLogin/WeiyunShareView") > 0) {
if (response.data.data.rsp_header.retcode == 0) {
var match = response.config.data.match(/\\"share_pwd\\":\\"([\w]+)\\"/);
if (!match) {
return core.printLog("pwd share not match");
}
var sharePwd = match[1];
if (sharePwd == obj.verify_page.share_pwd) {
return core.printLog("pwd share not change");
}
if (!obj.isPwdShareOpen()) {
return core.printLog("pwd share closed");
}
var shareId = obj.getShareId();
var shareLink = obj.getShareLink();
api.storeSharePwd(shareId, sharePwd, shareLink, config.source.weiyun);
}
else {
return core.printLog("pwd share error");
}
}
});
};
obj.addResponseInterceptor = function (callback) {
var success = function (response) {
try {
callback && callback(response.request, response);
}
catch (e) {
core.printLog(e);
}
return response;
};
var error = function () {
return Promise.reject(error);
};
obj.getAxios() && obj.getAxios().interceptors.response.use(success, error);
};
obj.showTipSuccess = function (msg) {
obj.getModal() && obj.getModal().success(msg);
};
obj.showTipError = function (msg) {
obj.getModal() && obj.getModal().error(msg);
};
obj.getShareId = function () {
var url = config.getUrl();
var match = url.match(/share.weiyun.com\/([0-9a-z]+)/i);
return match ? match[1] : null;
};
obj.getShareLink = function () {
return config.getUrl();
};
obj.isPwdShareOpen = function () {
return core.isOptionActive(config.option.weiyun_share_status);
};
obj.getAxios = function () {
if (!obj.axios) {
obj.axios = obj.matchWebpackModule(function (module, name) {
if (module && module.Axios) {
return module;
}
});
}
return obj.axios;
};
obj.getModal = function () {
if (!obj.modal) {
obj.modal = obj.matchWebpackModule(function (module, name) {
if (module && module.confirm && module.success) {
return module;
}
});
}
return obj.modal;
};
obj.getStore = function () {
if (!obj.store) {
obj.store = obj.matchWebpackModule(function (module, name) {
if (module && module.default && module.default._modulesNamespaceMap) {
return module;
}
});
}
return obj.store;
};
obj.matchWebpackModule = function (matchFunc) {
var names = Object.keys(obj.webpack_require.c);
for (var i in names) {
var name = names[i];
var match = matchFunc(obj.webpack_require(name), name);
if (match) {
return match;
}
}
};
return obj;
});
container.define("app_lanzous", ["config", "util", "core", "api", "$"], function (config, util, core, api, $) {
var obj = {
verify_page: {
setPwd: null,
share_pwd: null,
submit_pwd: null
}
};
obj.run = function () {
var url = config.getUrl();
if (url.indexOf("www.lanzous.com/fn") > 0) {
core.isOptionActive(config.option.lanzous_page_verify) && obj.initVerifyPage();
return true;
}
else {
return false;
}
};
obj.initVerifyPage = function () {
obj.registerStoreSharePwd();
if (obj.initVerifyPageElement()) {
obj.autoPaddingSharePwd();
obj.registerPwdShareSwitch();
}
};
obj.initVerifyPageElement = function () {
var shareId = obj.getShareId();
var $pwd = $("#pwd");
if (shareId && $pwd.length) {
// 设置分享密码
obj.verify_page.setPwd = function (pwd) {
$pwd.val(pwd);
};
// 提交密码
obj.verify_page.submit_pwd = function () {
$("#sub").click();
};
return true;
}
else {
return false;
}
};
obj.autoPaddingSharePwd = function () {
var shareId = obj.getShareId();
var shareLink = obj.getShareLink();
api.querySharePwd(shareId, shareLink, function (response) {
if (response && response.code == 1) {
var sharePwd = response.data.share_pwd;
obj.verify_page.share_pwd = sharePwd;
obj.verify_page.setPwd(sharePwd);
obj.showTip(1, "填充密码成功", 2000);
if (core.isOptionActive(config.option.lanzous_auto_jump)) {
obj.verify_page.submit_pwd && obj.verify_page.submit_pwd();
}
}
else {
obj.showTip(0, "暂无人分享密码", 2000);
}
});
};
obj.registerPwdShareSwitch = function () {
// 添加开关
$(".text").html(`<input type="checkbox" checked id="nd-share-check" style="vertical-align: middle;" >
<a style="cursor: pointer;" target="_blank" href="` + config.router.option + `" title="点击查看更多脚本配置">共享密码</a>`);
obj.isPwdShareOpen() || $("#nd-share-check").removeAttr("checked");
// 开关-事件
$("#nd-share-check").on("change", function () {
if ($(this).is(':checked')) {
core.setOptionActive(config.option.lanzous_share_status);
}
else {
core.setOptionUnActive(config.option.lanzous_share_status);
}
});
};
obj.registerStoreSharePwd = function () {
core.getPageWindow().$(document).ajaxComplete(function (event, xhr, options) {
var match = options.data.match(/p=(\w+)/);
if (!match) {
return core.printLog("pwd share not match");
}
var sharePwd = match[1];
if (sharePwd == obj.verify_page.share_pwd) {
return core.printLog("pwd share not change");
}
if (!obj.isPwdShareOpen()) {
return core.printLog("pwd share closed");
}
var shareId = obj.getShareId();
var shareLink = obj.getShareLink();
var response = util.parseJson(xhr.response);
if (response && response.zt == 1 && sharePwd) {
api.storeSharePwd(shareId, sharePwd, shareLink, config.source.lanzous);
}
else {
core.printLog("pwd share error");
}
});
};
obj.showTip = function (code, msg, timeout) {
if (code) {
$("#info").html('<span style="color: green;">' + msg + '</span>');
}
else {
$("#info").html('<span style="color: red;">' + msg + '</span>');
}
setTimeout(function () {
$("#info").html("");
}, timeout);
};
obj.getShareId = function () {
return core.getUrlParam("f");
};
obj.getShareLink = function () {
return top.location.href;
};
obj.isPwdShareOpen = function () {
return core.isOptionActive(config.option.lanzous_share_status);
};
return obj;
});
container.define("app_weibo", ["config", "util", "core"], function (config, util, core) {
var obj = {};
obj.run = function () {
var url = config.getUrl();
if (url.indexOf("vdisk.weibo.com") > 0) {
core.isOptionActive(config.option.weibo_page_download) && obj.initDownloadPage();
return true;
}
return false;
};
obj.initDownloadPage = function () {
var pageWindow = core.getPageWindow();
// 取消未登录弹窗
pageWindow.define("2/widget/fileDownLayer", ["2/core"], function () {
return {
init: function () { }
};
});
// 请求下载链接
pageWindow.seajs.use(["2/core"], function (http) {
var $button = $("#download_small_btn");
var fileInfo = util.parseJson($button.attr("data-info"));
http.api({
url: "api/weipan/fileopsStatCount",
data: {
link: fileInfo.copy_ref,
ops: "download",
wpSign: pageWindow.SIGN
}
}, function (response) {
var html = `<a style="color: red;" title="右键使用迅雷或者IDM进行下载" href="` + response.url + `"><i class="vd_pic_v2 ico_file_download">右键下载</i></a>`;
$button.after(html);
$button.hide();
});
});
};
return obj;
});
container.define("app_[ctfile|pipipan]", ["config", "core", "$"], function (config, core, $) {
var obj = {
base: "",
_downloads: {}
};
obj.getBase = function () {
return obj.base;
};
obj.setBase = function (base) {
obj.base = base;
};
obj.run = function () {
var url = config.getUrl();
if (url.indexOf("ctfile.com") > 0) {
obj.runDiskCtFile();
return true;
}
else if (url.indexOf("pipipan.com") > 0) {
obj.runDiskPiPiPan();
return true;
}
else {
return false;
}
};
obj.runDiskCtFile = function () {
obj.setBase("https://qihuanmp3.ctfile.com");
var url = config.getUrl();
if (url.indexOf("ctfile.com/u/") > 0) {
obj.initAlbumPage();
}
else if (url.indexOf("ctfile.com/i/") > 0) {
obj.initDownloadPage();
}
};
obj.runDiskPiPiPan = function () {
obj.setBase("https://www.pipipan.com");
var url = config.getUrl();
if (url.indexOf("pipipan.com/dir/") > 0) {
obj.initAlbumPage();
}
else if (url.indexOf("pipipan.com/i/") > 0) {
obj.initDownloadPage();
}
};
obj.initAlbumPage = function () {
core.isOptionActive(config.option.ctfile_page_list) && obj.initTableFile();
};
obj.initTableFile = function () {
if ($("#table_files td a").not(".active").length) {
var selector = $("#table_files td a").not(".active")[0];
obj.queryTableFile(selector);
}
else {
setTimeout(obj.initTableFile, 2000);
}
};
obj.queryTableFile = function (selector) {
var initFunc = function (timeout) {
setTimeout(obj.initTableFile, timeout);
};
var $selector = $(selector);
if ($selector.hasClass("active")) {
initFunc(0);
return;
}
else {
$selector.addClass("active");
}
var url = $selector.attr("href");
if (url.indexOf("/u/") == 0 || url.indexOf("/dir/") == 0) {
initFunc(0);
}
else {
obj.queryFileUrlPage(url, function (response) {
initFunc(100);
if (response && response.downurl) {
$selector.attr("href", response.downurl);
$selector.css("color", "red");
$selector.attr("title", "右键使用迅雷或者IDM进行下载");
}
});
}
};
obj.initDownloadPage = function () {
core.isOptionActive(config.option.ctfile_page_download) && obj.queryFileUrl(document.body.innerHTML, function (response) {
if (response && response.downurl) {
var $downLink = $("#free_down_link");
$downLink.removeAttr("onclick");
$downLink.attr("href", response.downurl);
$downLink.find("em").css("color", "red");
$downLink.attr("title", "右键使用迅雷或者IDM进行下载");
}
});
};
obj.queryFileUrlPage = function (url, callback) {
obj.pageQuery(url, function (response) {
if (response) {
obj.queryFileUrl(response, callback);
}
else {
callback && callback("");
}
});
};
obj.queryFileUrl = function (html, callback) {
var uid = obj.parseUid(html);
var fid = obj.parseFid(html);
var chk = obj.parseChk($(html).find("#free_down_link").attr("onclick"));
var code = "";
var referer = config.getUrl();
obj.downloadQuery(uid, fid, chk, code, referer, callback);
};
obj.parseUid = function (html) {
var match = html.match(/uid=(\d+)/)
if (match) {
return match[1];
}
};
obj.parseFid = function (html) {
var match = html.match(/fid=(\d+)/)
if (match) {
return match[1];
}
};
obj.parseChk = function (html) {
if (html) {
var match = html.match(/, '(\S+)',/);
if (match) {
return match[1];
}
}
};
obj.pageQuery = function (url, callback) {
core.ajax({
url: obj.getBase() + url,
dataType: "text",
success: function (response) {
callback && callback(response);
},
error: function (error) {
callback && callback("");
}
});
};
obj.downloadQuery = function (uid, fid, chk, code, referer, callback) {
var key = [uid, fid, chk].join("_");
if (obj._downloads.hasOwnProperty(key)) {
callback && callback(obj._downloads[key]);
}
else {
var url = obj.getBase() + "/get_file_url.php?uid=" + uid + "&fid=" + fid + "&file_chk=" + chk + "&verifycode=" + code;
core.ajax({
url: url,
dataType: "json",
headers: {
"Referer": referer
},
success: function (response) {
if (response && response.downurl) {
obj._downloads[key] = response;
}
callback && callback(response);
},
error: function (error) {
callback && callback("");
}
});
}
};
return obj;
});
container.define("app_dfpan", ["config", "core", "$"], function (config, core, $) {
var obj = {};
obj.run = function () {
var url = config.getUrl();
if (url.indexOf("page2.dfpan.com") > 0) {
core.isOptionActive(config.option.yunfile_page_download) && obj.initDownloadPage();
return true;
}
else {
return false;
}
};
obj.initDownloadPage = function () {
obj.removeAdLayer();
obj.destoryAdEvent();
obj.autoClickDownload();
};
obj.removeAdLayer = function () {
$(".ad-layer").hide();
};
obj.destoryAdEvent = function () {
core.getPageWindow().CTAMAT = {};
setTimeout(obj.destoryAdEvent, 1000);
};
obj.autoClickDownload = function () {
$("#common_speed_down").click();
};
return obj;
});
container.define("app_ccchoo", ["config", "core", "$"], function (config, core, $) {
var obj = {};
obj.run = function () {
var url = config.getUrl();
if (url.indexOf("ccchoo.com/file") > 0) {
core.isOptionActive(config.option.ccchoo_auto_jump) && obj.initFilePage();
return true;
}
else if (url.indexOf("ccchoo.com/down2") > 0) {
core.isOptionActive(config.option.ccchoo_auto_jump) && obj.initDownload2Page();
return true;
}
else if (url.indexOf("ccchoo.com/down") > 0) {
core.isOptionActive(config.option.ccchoo_page_download) && obj.initDownloadPage();
return true;
}
else {
return false;
}
};
obj.initFilePage = function () {
var url = config.getUrl();
location.href = url.replace("/file-", "/down2-");
};
obj.initDownload2Page = function () {
var url = config.getUrl();
location.href = url.replace("/down2-", "/down-");
};
obj.initDownloadPage = function () {
$("#down_link").hide();
$(".b-box").show();
$(".q-box").css("opacity", 0);
};
return obj;
});
container.define("app_vdisk", ["config", "core", "$"], function (config, core, $) {
var obj = {};
obj.run = function () {
var url = config.getUrl();
if (url.indexOf("vdisk.cn/down/") > 0) {
core.isOptionActive(config.option.vdisk_page_download) && obj.initDownloadPage();
return true;
}
else {
return false;
}
};
obj.initDownloadPage = function () {
$("#loadingbox").hide();
$("#btnbox").show();
};
return obj;
});
container.define("app_yimuhe", ["config", "core", "$"], function (config, core, $) {
var obj = {};
obj.run = function () {
var url = config.getUrl();
if (url.indexOf("yimuhe.com/file") > 0) {
core.isOptionActive(config.option.yimuhe_auto_jump) && obj.initFilePage();
return true;
}
else if (url.indexOf("yimuhe.com/down") > 0) {
core.isOptionActive(config.option.yimuhe_page_download) && obj.initDownloadPage();
return true;
}
else {
return false;
}
};
obj.initFilePage = function () {
var url = config.getUrl();
location.href = url.replace("/file-", "/down-");
};
obj.initDownloadPage = function () {
var pageWindow = core.getPageWindow();
pageWindow.wait = -1;
pageWindow.__qy_pop_up_tg.uinit();
$("#loading").hide();
$("#yzm").show();
$("a").each(function () {
if (this.href && this.href.indexOf("AID") > 0) {
$(this).hide();
}
});
};
return obj;
});
container.define("app_newday", ["config", "util", "core", "api", "$", "vue"], function (config, util, core, api, $, vue) {
var obj = {};
obj.run = function () {
if (obj.existMeta("wpzs::option")) {
obj.initOptionPage();
}
else if (obj.existMeta("wpzs::share")) {
obj.initSharePage();
}
return true;
};
obj.initOptionPage = function () {
new vue({
el: "#container",
data: {
app_id: core.getConfig("app_id"),
info: {
version: core.getVersion()
},
option: core.getOption()
},
mounted: function () {
this.initCheckBox();
},
watch: {
option: function (value) {
core.setOption(value);
api.logOption(value);
},
app_id: function (value) {
core.setConfig("app_id", value);
api.logOption({
app_id: value
});
}
},
methods: {
initCheckBox: function () {
$("body").addClass("init-checkbox-wait");
}
}
});
};
obj.initSharePage = function () {
var shareLogList = core.getShareLogList();
new vue({
el: "#container",
data: {
info: {
version: core.getVersion()
},
list: []
},
mounted: function () {
this.loadShareLogList("all");
},
methods: {
showShareLogList: function (source) {
$(".am-nav-tabs .am-active").removeClass("am-active");
$(".source-" + source).addClass("am-active");
this.loadShareLogList(source);
},
loadShareLogList: function (source) {
this.list = this.processShareLogList(source);
},
processShareLogList: function (source) {
var filterShareLogList = [];
Object.keys(shareLogList).forEach(function (shareId) {
var shareLog = shareLogList[shareId];
if (source == "all" || source == shareLog.share_source) {
filterShareLogList.push({
share_id: shareId,
share_pwd: shareLog.share_pwd,
share_link: obj.buildShareLink(shareId, shareLog.share_source, shareLog.share_link),
share_time: obj.buildShareTime(shareLog.share_time)
});
}
});
return filterShareLogList.reverse();
}
}
});
};
obj.buildShareLink = function (shareId, shareSource, shareLink) {
if (shareSource == config.source.baidu) {
shareLink = "https://pan.baidu.com/s/1" + shareId;
}
else if (shareSource == config.source.baidu) {
shareLink = "https://share.weiyun.com/" + shareId;
} else if (shareSource == config.source.baidu) {
shareLink = "https://www.lanzous.com/" + shareId;
}
return shareLink;
};
obj.buildShareTime = function (shareTime) {
var date = new Date(shareTime);
var year = 1900 + date.getYear();
var month = "0" + (date.getMonth() + 1);
var day = "0" + date.getDate();
var hour = "0" + date.getHours();
var minute = "0" + date.getMinutes();
var second = "0" + date.getSeconds();
var vars = {
"Y": year,
"m": month.substring(month.length - 2, month.length),
"d": day.substring(day.length - 2, day.length),
"H": hour.substring(hour.length - 2, hour.length),
"i": minute.substring(minute.length - 2, minute.length),
"s": second.substring(second.length - 2, second.length)
};
return util.replaceVars(vars, "Y-m-d H:i:s");
};
obj.existMeta = function (name) {
if ($("meta[name='" + name + "']").length) {
return true;
}
else {
return false;
}
};
return obj;
});
container.define("app", ["config", "core", "$"], function (config, core, $, require) {
var obj = {};
obj.run = function () {
var metaName = "wpzs::status";
if (obj.existMeta(metaName)) {
core.printLog("addon setup already");
}
else {
core.printLog("addon setup success");
// 添加meta
obj.appendMeta(metaName);
// 运行应用
obj.runApp();
}
};
obj.runApp = function () {
var appList = [
{
name: "app_baidu",
matchs: [
"baidu.com"
]
},
{
name: "app_weiyun",
matchs: [
"weiyun.com"
]
},
{
name: "app_lanzous",
matchs: [
"lanzous.com"
]
},
{
name: "app_weibo",
matchs: [
"weibo.com"
]
},
{
name: "app_[ctfile|pipipan]",
matchs: [
"ctfile.com",
"pipipan.com"
]
},
{
name: "app_dfpan",
matchs: [
"dfpan.com"
]
},
{
name: "app_ccchoo",
matchs: [
"ccchoo.com"
]
},
{
name: "app_vdisk",
matchs: [
"vdisk.cn"
]
},
{
name: "app_yimuhe",
matchs: [
"yimuhe.com"
]
},
{
name: "app_newday",
matchs: [
"newday.me"
]
}
];
var url = config.getUrl();
for (var i in appList) {
var app = appList[i];
if (obj.matchApp(url, app) && require(app.name).run() == true) {
break;
}
}
};
obj.matchApp = function (url, app) {
var match = false;
app.matchs.forEach(function (item) {
if (url.indexOf(item) > 0) {
match = true;
}
});
return match;
};
obj.existMeta = function (name) {
if ($("meta[name='" + name + "']").length) {
return true;
}
else {
return false;
}
};
obj.appendMeta = function (name, content) {
content || (content = "on");
$('<meta name="' + name + '" content="on">').appendTo($("head"));
};
return obj;
});
// 注册模块
container.register("$", window.$);
container.register("snap", window.Snap);
container.register("vue", window.Vue);
container.use(["core", "app"], function (core, app) {
core.init(function () {
app.run();
});
});
})();