`;
dom = '
' + dom + '
';
Swal.fire({
title: '提速配置',
html: dom,
icon: 'info',
showCloseButton: true,
showConfirmButton: false,
}).then(() => {
message.success('设置成功!');
history.go(0);
});
doc.on('click', '.listener-color', async (e) => {
base.setValue('setting_theme_color', e.target.dataset.color);
message.success('设置成功!');
history.go(0);
});
doc.on('input', '.listener-domain', async (e) => {
base.setValue('setting_rpc_domain', e.target.value);
});
doc.on('input', '.listener-port', async (e) => {
base.setValue('setting_rpc_port', e.target.value);
});
doc.on('input', '.listener-path', async (e) => {
base.setValue('setting_rpc_path', e.target.value);
});
doc.on('input', '.listener-token', async (e) => {
base.setValue('setting_rpc_token', e.target.value);
});
doc.on('input', '.listener-dir', async (e) => {
base.setValue('setting_rpc_dir', e.target.value);
});
doc.on('change', '.listener-terminal', async (e) => {
base.setValue('setting_terminal_type', e.target.value);
});
},
registerMenuCommand() {
GM_registerMenuCommand('⚙️ 设置', () => {
this.showSetting();
});
},
createTip() {
$('body').append('
');
doc.on('mouseenter mouseleave', '.listener-tip', (e) => {
if (e.type === 'mouseenter') {
let filename = e.currentTarget.innerText;
let size = e.currentTarget.dataset.size;
let tip = `${filename}
${size}`;
$(e.currentTarget).css({opacity: '0.5'});
$('.pl-tooltip').html(tip).css({
'left': e.pageX + 10 + 'px',
'top': e.pageY - e.currentTarget.offsetTop > 14 ? e.pageY + 'px' : e.pageY + 20 + 'px'
}).show();
} else {
$(e.currentTarget).css({opacity: '1'});
$('.pl-tooltip').hide(0);
}
});
},
createLoading() {
return $('
');
},
createDownloadIframe() {
let $div = $('
');
let $iframe = $('
');
$div.append($iframe);
$('body').append($div);
},
getMirrorList(link, mirror, thread = 2) {
let host = new URL(link).host;
let mirrors = [];
for (let i = 0; i < mirror.length; i++) {
for (let j = 0; j < thread; j++) {
let item = link.replace(host, mirror[i]) + '&'.repeat(j);
mirrors.push(item);
}
}
return mirrors.join('\n');
},
listenElement(element, callback) {
const checkInterval = 500; // 检查元素的间隔时间(毫秒)
let wasElementFound = false; // 用于跟踪元素是否之前已经找到
function checkElement() {
if (document.querySelector(element)) {
wasElementFound = true;
callback();
} else if (wasElementFound) {
wasElementFound = false; // 元素消失后重置标志
}
setTimeout(checkElement, checkInterval);
}
checkElement();
},
addPanLinkerStyle() {
color = base.getValue('setting_theme_color');
let css = `
body::-webkit-scrollbar { display: none }
::-webkit-scrollbar { width: 6px; height: 10px }
::-webkit-scrollbar-track { border-radius: 0; background: none }
::-webkit-scrollbar-thumb { background-color: rgba(85,85,85,.4) }
::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb:hover { border-radius: 5px; -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.2) }
::-webkit-scrollbar-thumb:hover { background-color: rgba(85,85,85,.3) }
.swal2-popup { font-size: 16px !important; }
.pl-popup { font-size: 12px !important; }
.pl-popup a { color: ${color} !important; }
.pl-header { padding: 0!important;align-items: flex-start!important; border-bottom: 1px solid #eee!important; margin: 0 0 10px!important; padding: 0 0 5px!important; }
.pl-title { font-size: 16px!important; line-height: 1!important;white-space: nowrap!important; text-overflow: ellipsis!important;}
.pl-content { padding: 0 !important; font-size: 12px!important; }
.pl-main { max-height: 400px;overflow-y:scroll; }
.pl-footer {font-size: 12px!important;justify-content: flex-start!important; margin: 10px 0 0!important; padding: 5px 0 0!important; color: #f56c6c!important; }
.pl-item { display: flex; align-items: center; line-height: 22px; }
.pl-item-name { flex: 0 0 150px; text-align: left;margin-right: 10px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; cursor:default; }
.pl-item-link { flex: 1; overflow: hidden; text-align: left; white-space: nowrap; text-overflow: ellipsis;cursor:pointer }
.pl-item-btn { background: ${color}; padding: 4px 5px; border-radius: 3px; line-height: 1; cursor: pointer; color: #fff; }
.pl-item-tip { display: flex; justify-content: space-between;flex: 1; }
.pl-back { width: 70px; background: #ddd; border-radius: 3px; cursor:pointer; margin:1px 0; }
.pl-ext { display: inline-block; width: 44px; background: #999; color: #fff; height: 16px; line-height: 16px; font-size: 12px; border-radius: 3px;}
.pl-retry {padding: 3px 10px; background: #cc3235; color: #fff; border-radius: 3px; cursor: pointer;}
.pl-browserdownload { padding: 3px 10px; background: ${color}; color: #fff; border-radius: 3px; cursor: pointer;}
.pl-item-progress { display:flex;flex: 1;align-items:center}
.pl-progress { display: inline-block;vertical-align: middle;width: 100%; box-sizing: border-box;line-height: 1;position: relative;height:15px; flex: 1}
.pl-progress-outer { height: 15px;border-radius: 100px;background-color: #ebeef5;overflow: hidden;position: relative;vertical-align: middle;}
.pl-progress-inner{ position: absolute;left: 0;top: 0;background-color: #409eff;text-align: right;border-radius: 100px;line-height: 1;white-space: nowrap;transition: width .6s ease;}
.pl-progress-inner-text { display: inline-block;vertical-align: middle;color: #d1d1d1;font-size: 12px;margin: 0 5px;height: 15px}
.pl-progress-tip{ flex:1;text-align:right}
.pl-progress-how{ flex: 0 0 90px; background: #ddd; border-radius: 3px; margin-left: 10px; cursor: pointer; text-align: center;}
.pl-progress-stop{ flex: 0 0 50px; padding: 0 10px; background: #cc3235; color: #fff; border-radius: 3px; cursor: pointer;margin-left:10px;height:20px}
.pl-progress-inner-text:after { display: inline-block;content: "";height: 100%;vertical-align: middle;}
.pl-btn-primary { background: ${color}; border: 0; border-radius: 4px; color: #ffffff; cursor: pointer; font-size: 12px; outline: none; display:flex; align-items: center; justify-content: center; margin: 2px 0; padding: 6px 0;transition: 0.3s opacity; }
.pl-btn-primary:hover { opacity: 0.9;transition: 0.3s opacity; }
.pl-btn-success { background: #55af28; animation: easeOpacity 1.2s 2; animation-fill-mode:forwards }
.pl-btn-info { background: #606266; }
.pl-btn-warning { background: #da9328; }
.pl-btn-warning { background: #da9328; }
.pl-btn-danger { background: #cc3235; }
.ali-button {display: inline-flex;align-items: center;justify-content: center;border: 0 solid transparent;border-radius: 5px;box-shadow: 0 0 0 0 transparent;width: fit-content;white-space: nowrap;flex-shrink: 0;font-size: 14px;line-height: 1.5;outline: 0;touch-action: manipulation;transition: background .3s ease,color .3s ease,border .3s ease,box-shadow .3s ease;color: #fff;background: rgb(99 125 255);margin-left: 20px;padding: 1px 12px;position: relative; cursor:pointer; height: 32px;}
.ali-button:hover {background: rgb(122, 144, 255)}
.tianyi-button {margin-right: 20px; padding: 4px 12px; border-radius: 4px; color: #fff; font-size: 12px; border: 1px solid #0073e3; background: #2b89ea; cursor: pointer; position: relative;}
.tianyi-button:hover {border-color: #1874d3; background: #3699ff;}
.yidong-button {float: left; position: relative; margin: 20px 24px 20px 0; width: 98px; height: 36px; background: #3181f9; border-radius: 2px; font-size: 14px; color: #fff; line-height: 39px; text-align: center; cursor: pointer;}
.yidong-share-button {display: inline-block; position: relative; font-size: 14px; line-height: 36px; height: 36px; text-align: center; color: #fff; border: 1px solid #5a9afa; border-radius: 2px; padding: 0 24px; margin-left: 24px; background: #3181f9; cursor: pointer;}
.yidong-button:hover {background: #2d76e5;}
.xunlei-button {display: inline-flex;align-items: center;justify-content: center;border: 0 solid transparent;border-radius: 5px;box-shadow: 0 0 0 0 transparent;width: fit-content;white-space: nowrap;flex-shrink: 0;font-size: 14px;line-height: 1.5;outline: 0;touch-action: manipulation;transition: background .3s ease,color .3s ease,border .3s ease,box-shadow .3s ease;color: #fff;background: #3f85ff;margin-left: 12px;padding: 0px 12px;position: relative; cursor:pointer; height: 36px;}
.xunlei-button:hover {background: #619bff}
.quark-button {display: inline-flex; align-items: center; justify-content: center; border: 1px solid #ddd; border-radius: 8px; white-space: nowrap; flex-shrink: 0; font-size: 14px; line-height: 1.5; outline: 0; color: #333; background: #fff; margin-right: 10px; padding: 0px 14px; position: relative; cursor: pointer; height: 36px;}
.quark-button:hover { background:#f6f6f6 }
.pl-dropdown-menu {position: absolute;right: 0;top: 30px;padding: 5px 0;color: rgb(37, 38, 43);background: #fff;z-index: 999;width: 102px;border: 1px solid #ddd;border-radius: 10px; box-shadow: 0 0 1px 1px rgb(28 28 32 / 5%), 0 8px 24px rgb(28 28 32 / 12%);}
.pl-dropdown-menu-item { height: 30px;display: flex;align-items: center;justify-content: center;cursor:pointer }
.pl-dropdown-menu-item:hover { background-color: rgba(132,133,141,0.08);}
.pl-button .pl-dropdown-menu { display: none; }
.pl-button:hover .pl-dropdown-menu { display: block!important; }
.pl-button-init { opacity: 0.5; animation: easeInitOpacity 1.2s 3; animation-fill-mode:forwards }
@keyframes easeInitOpacity { from { opacity: 0.5; } 50% { opacity: 1 } to { opacity: 0.5; } }
@keyframes easeOpacity { from { opacity: 1; } 50% { opacity: 0.35 } to { opacity: 1; } }
.element-clicked { opacity: 0.5; }
.pl-extra { margin-top: 10px;display:flex}
.pl-extra button { flex: 1}
.pointer { cursor:pointer }
.pl-setting-label { display: flex;align-items: center;justify-content: space-between;padding-top: 10px; }
.pl-label { flex: 0 0 100px;text-align:left; }
.pl-input { flex: 1; padding: 8px 10px; border: 1px solid #c2c2c2; border-radius: 5px; font-size: 14px }
.pl-color { flex: 1;display: flex;flex-wrap: wrap; margin-right: -10px;}
.pl-color-box { width: 35px;height: 35px;margin:10px 10px 0 0;; box-sizing: border-box;border:1px solid #fff;cursor:pointer }
.pl-color-box.checked { border:3px dashed #111!important }
.pl-close:focus { outline: 0; box-shadow: none; }
.tag-danger {color:#cc3235;margin: 0 5px;}
.pl-tooltip { position: absolute; color: #ffffff; max-width: 600px; font-size: 12px; padding: 5px 10px; background: #333; border-radius: 5px; z-index: 110000; line-height: 1.3; display:none; word-break: break-all;}
@keyframes load { 0% { transform: rotate(0deg) } 100% { transform: rotate(360deg) } }
.pl-loading-box > div > div { position: absolute;border-radius: 50%;}
.pl-loading-box > div > div:nth-child(1) { top: 9px;left: 9px;width: 82px;height: 82px;background: #ffffff;}
.pl-loading-box > div > div:nth-child(2) { top: 14px;left: 38px;width: 25px;height: 25px;background: #666666;animation: load 1s linear infinite;transform-origin: 12px 36px;}
.pl-loading { width: 16px;height: 16px;display: inline-block;overflow: hidden;background: none;}
.pl-loading-box { width: 100%;height: 100%;position: relative;transform: translateZ(0) scale(0.16);backface-visibility: hidden;transform-origin: 0 0;}
.pl-loading-box div { box-sizing: content-box; }
.swal2-container { z-index:100000!important; }
body.swal2-height-auto { height: inherit!important; }
.btn-operate .btn-main { display:flex; align-items:center; }
`;
this.addStyle('panlinker-style', 'style', css);
},
async initDialog() {
let result = await Swal.fire({
title: pan.init[5],
html: `
`,
allowOutsideClick: false,
showCloseButton: true,
confirmButtonText: '确定'
});
if (result.isDismissed && result.dismiss === 'close') return;
if (pan.num === $('#init').val() || pan.license === $('#init').val()) {
base.setValue('setting_init_code', pan.num);
base.setValue('license', pan.license);
message.success(pan.init[2]);
setTimeout(() => {
history.go(0);
}, 1500);
} else {
await Swal.fire({
title: pan.init[3],
text: pan.init[4],
confirmButtonText: '重新输入',
imageUrl: pan.img,
});
await this.initDialog();
}
},
};
let baidu = {
_getExtra() {
let seKey = decodeURIComponent(base.getCookie('BDCLND'));
return '{' + '"sekey":"' + seKey + '"' + "}";
},
_getSurl() {
let reg = /(?<=s\/|surl=)([a-zA-Z0-9_-]+)/g;
if (reg.test(location.href)) {
return location.href.match(reg)[0];
}
return '';
},
_getFidList() {
let fidlist = [];
selectList.forEach(v => {
if (+v.isdir === 1) return;
fidlist.push(v.fs_id);
});
return '[' + fidlist + ']';
},
_resetData() {
progress = {};
$.each(request, (key) => {
(request[key]).abort();
});
$.each(ins, (key) => {
clearInterval(ins[key]);
});
idm = {};
ins = {};
request = {};
},
setBDUSS() {
try {
GM_cookie && GM_cookie('list', {name: 'BDUSS'}, (cookies, error) => {
if (!error) {
let BDUSS = cookies?.[0]?.value;
if (BDUSS) {
base.setStorage("baiduyunPlugin_BDUSS", {BDUSS});
}
}
});
} catch (e) {
}
},
getBDUSS() {
let baiduyunPlugin_BDUSS = base.getStorage('baiduyunPlugin_BDUSS') ? base.getStorage('baiduyunPlugin_BDUSS') : '{"baiduyunPlugin_BDUSS":""}';
return baiduyunPlugin_BDUSS.BDUSS || '';
},
convertLinkToAria(link, filename, ua) {
let BDUSS = this.getBDUSS();
if (!!BDUSS) {
filename = base.fixFilename(filename);
return encodeURIComponent(`aria2c "${link}" --out "${filename}" --header "User-Agent: ${ua}" --header "Cookie: BDUSS=${BDUSS}"`);
}
return {
link: pan.assistant,
text: pan.init[5]
};
},
convertLinkToBC(link, filename, ua) {
let BDUSS = this.getBDUSS();
if (!!BDUSS) {
let cookie = `BDUSS=${BDUSS}`;
let bc = `AA/${encodeURIComponent(filename)}/?url=${encodeURIComponent(link)}&cookie=${encodeURIComponent(cookie)}&user_agent=${encodeURIComponent(ua)}ZZ`;
return encodeURIComponent(`bc://http/${base.e(bc)}`);
}
return {
link: pan.assistant,
text: pan.init[5]
};
},
convertLinkToCurl(link, filename, ua) {
let BDUSS = this.getBDUSS();
if (!!BDUSS) {
let terminal = base.getValue('setting_terminal_type');
filename = base.fixFilename(filename);
return encodeURIComponent(`${terminal !== 'wp' ? 'curl' : 'curl.exe'} -L -C - "${link}" -o "${filename}" -A "${ua}" -b "BDUSS=${BDUSS}"`);
}
return {
link: pan.assistant,
text: pan.init[5]
};
},
addPageListener() {
function _factory(e) {
let target = $(e.target);
let item = target.parents('.pl-item');
let link = item.find('.pl-item-link');
let progress = item.find('.pl-item-progress');
let tip = item.find('.pl-item-tip');
return {
item, link, progress, tip, target,
};
}
function _reset(i) {
ins[i] && clearInterval(ins[i]);
request[i] && request[i].abort();
progress[i] = 0;
idm[i] = false;
}
doc.on('mouseenter mouseleave click', '.pl-button.g-dropdown-button', (e) => {
if (e.type === 'mouseleave') {
$(e.currentTarget).removeClass('button-open');
} else {
$(e.currentTarget).addClass('button-open');
$(e.currentTarget).find('.pl-dropdown-menu').show();
}
});
doc.on('mouseleave', '.pl-button.g-dropdown-button .pl-dropdown-menu', (e) => {
$(e.currentTarget).hide();
});
doc.on('click', '.pl-button-mode', (e) => {
mode = e.target.dataset.mode;
Swal.showLoading();
this.getPCSLink();
});
doc.on('click', '.listener-link-api', async (e) => {
e.preventDefault();
let o = _factory(e);
let $width = o.item.find('.pl-progress-inner');
let $text = o.item.find('.pl-progress-inner-text');
let filename = o.link[0].dataset.filename;
let index = o.link[0].dataset.index;
_reset(index);
base.get(o.link[0].dataset.link, {"User-Agent": pan.ua}, 'blob', {filename, index});
ins[index] = setInterval(() => {
let prog = +progress[index] || 0;
let isIDM = idm[index] || false;
if (isIDM) {
o.tip.hide();
o.progress.hide();
o.link.text('已成功唤起IDM,请查看IDM下载框!').animate({opacity: '0.5'}, "slow").show();
clearInterval(ins[index]);
idm[index] = false;
} else {
o.link.hide();
o.tip.hide();
o.progress.show();
$width.css('width', prog + '%');
$text.text(prog + '%');
if (prog === 100) {
clearInterval(ins[index]);
progress[index] = 0;
o.item.find('.pl-progress-stop').hide();
o.item.find('.pl-progress-tip').html('下载完成,正在弹出浏览器下载框!');
}
}
}, 500);
});
doc.on('click', '.listener-retry', async (e) => {
let o = _factory(e);
o.tip.hide();
o.link.show();
});
doc.on('click', '.listener-how', async (e) => {
let o = _factory(e);
let index = o.link[0].dataset.index;
if (request[index]) {
request[index].abort();
clearInterval(ins[index]);
o.progress.hide();
o.tip.show();
}
});
doc.on('click', '.listener-stop', async (e) => {
let o = _factory(e);
let index = o.link[0].dataset.index;
if (request[index]) {
request[index].abort();
clearInterval(ins[index]);
o.tip.hide();
o.progress.hide();
o.link.show(0);
}
});
doc.on('click', '.listener-back', async (e) => {
let o = _factory(e);
o.tip.hide();
o.link.show();
});
doc.on('click', '.listener-link-aria, .listener-copy-all', (e) => {
e.preventDefault();
if (!e.target.dataset.link) {
$(e.target).removeClass('listener-copy-all').addClass('pl-btn-danger').html(`${pan.init[5]}👉
点击此处安装👈`);
} else {
base.setClipboard(decodeURIComponent(e.target.dataset.link));
$(e.target).text('复制成功,快去粘贴吧!').animate({opacity: '0.5'}, "slow");
}
});
doc.on('click', '.listener-link-rpc', async (e) => {
let target = $(e.currentTarget);
target.find('.icon').remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
let res = await this.sendLinkToRPC(e.currentTarget.dataset.filename, e.currentTarget.dataset.link);
if (res === 'success') {
$('.listener-rpc-task').show();
target.removeClass('pl-btn-danger').html('发送成功,快去看看吧!').animate({opacity: '0.5'}, "slow");
} else if (res === 'assistant') {
target.addClass('pl-btn-danger').html(`${pan.init[5]}👉
点击此处安装👈`);
} else {
target.addClass('pl-btn-danger').text('发送失败,请检查您的RPC配置信息!').animate({opacity: '0.5'}, "slow");
}
});
doc.on('click', '.listener-send-rpc', (e) => {
$('.listener-link-rpc').click();
$(e.target).text('发送完成,发送结果见上方按钮!').animate({opacity: '0.5'}, "slow");
});
doc.on('click', '.listener-rpc-task', () => {
let rpc = JSON.stringify({
domain: base.getValue('setting_rpc_domain'),
port: base.getValue('setting_rpc_port'),
}), url = `${pan.d}/?rpc=${base.e(rpc)}#${base.getValue('setting_rpc_token')}`;
GM_openInTab(url, {active: true});
});
document.documentElement.addEventListener('mouseup', (e) => {
if (e.target.nodeName === 'A' && ~e.target.className.indexOf('pl-a')) {
e.stopPropagation();
}
}, true);
},
addButton() {
if (!pt) return;
let $toolWrap;
let $button = $(`
`);
if (pt === 'home') $toolWrap = $(pan.btn.home);
if (pt === 'main') {
$toolWrap = $(pan.btn.main);
$button = $(`
`);
}
if (pt === 'share') $toolWrap = $(pan.btn.share);
$toolWrap.prepend($button);
this.setBDUSS();
this.addPageListener();
},
addInitButton() {
if (!pt) return;
let $toolWrap;
let $button = $(`
`);
if (pt === 'home') $toolWrap = $(pan.btn.home);
if (pt === 'main') {
$toolWrap = $(pan.btn.main);
$button = $(`
`);
}
if (pt === 'share') $toolWrap = $(pan.btn.share);
$toolWrap.prepend($button);
$button.click(() => base.initDialog());
},
async getToken() {
const openTab = () => {
GM_openInTab(pan.pcs[3], {active: false, insert: true, setParent: true});
base.deleteValue('baidu_access_token');
};
const waitForToken = () => new Promise((resolve) => {
let attempts = 0;
const interval = setInterval(() => {
const token = base.getValue('baidu_access_token');
if (token) {
clearInterval(interval);
resolve(token);
}
attempts++;
if (attempts > 60) {
clearInterval(interval);
resolve('');
}
}, 1000);
});
if (manageHandler === 'Tampermonkey' && base.getMajorVersion(manageVersion) >= 5) {
openTab();
return waitForToken();
}
let res = await base.getFinalUrl(pan.pcs[3]);
if (!res.includes('authorize') && !res.includes('access_token=')) {
openTab();
return waitForToken();
}
if (res.includes('authorize')) {
let html = await base.get(pan.pcs[3], {}, 'text');
let bdstoken = html.match(/name="bdstoken"\s+value="([^"]+)"/)?.[1];
let client_id = html.match(/name="client_id"\s+value="([^"]+)"/)?.[1];
let data = {
grant_permissions_arr: 'netdisk',
bdstoken: bdstoken,
client_id: client_id,
response_type: "token",
display: "page",
grant_permissions: "basic,netdisk"
};
await base.post(pan.pcs[3], base.stringify(data), {
'Content-Type': 'application/x-www-form-urlencoded',
});
let res2 = await base.getFinalUrl(pan.pcs[3]);
let accessToken = res2.match(/access_token=([^&]+)/)?.[1];
accessToken && base.setValue('baidu_access_token', accessToken);
return accessToken;
}
let accessToken = res.match(/access_token=([^&]+)/)?.[1];
accessToken && base.setValue('baidu_access_token', accessToken);
return accessToken;
},
async getPCSLink(maxRequestTime = 1) {
selectList = this.getSelectedList();
let fidList = this._getFidList(), url, res;
if (pt === 'home' || pt === 'main') {
if (selectList.length === 0) {
return message.error('提示:请先勾选要下载的文件!');
}
if (fidList.length === 2) {
return message.error('提示:请打开文件夹后勾选文件!');
}
fidList = encodeURIComponent(fidList);
let accessToken = base.getValue('baidu_access_token') || await this.getToken();
url = `${pan.pcs[0]}&fsids=${fidList}&access_token=${accessToken}`;
res = await base.get(url, {"User-Agent": pan.ua});
}
if (pt === 'share') {
this.getShareData();
if (!params.bdstoken) {
return message.error('提示:请先登录网盘!');
}
if (selectList.length === 0) {
return message.error('提示:请先勾选要下载的文件!');
}
if (fidList.length === 2) {
return message.error('提示:请打开文件夹后勾选文件!');
}
let dialog = await Swal.fire({
toast: true,
icon: 'info',
title: `提示:请将文件
[保存到网盘]👉前往
[我的网盘]中下载!`,
showConfirmButton: true,
confirmButtonText: '点击保存',
position: 'top',
});
if (dialog.isConfirmed) {
$('.tools-share-save-hb')[0].click();
}
return;
}
if (res.errno === 0) {
let html = this.generateDom(res.list);
this.showMainDialog(pan[mode][0], html, pan[mode][1]);
} else if (res.errno === 112) {
return message.error('提示:页面过期,请刷新重试!');
} else if (res.errno === 9019) {
maxRequestTime--;
await this.getToken();
if (maxRequestTime > 0) {
await this.getPCSLink(maxRequestTime);
} else {
message.error('提示:获取下载链接失败!请刷新网页后重试!');
}
} else {
base.deleteValue('baidu_access_token');
message.error('提示:获取下载链接失败!请刷新网页后重试!');
}
},
generateDom(list) {
let content = '
';
let alinkAllText = '';
base.sortByName(list);
list.forEach((v, i) => {
if (v.isdir === 1) return;
let filename = v.server_filename || v.filename;
let ext = base.getExtension(filename);
let size = base.sizeFormat(v.size);
let dlink = v.dlink + '&access_token=' + base.getValue('baidu_access_token');
if (mode === 'api') {
content += `
${filename}
${dlink}
若没有弹出IDM下载框,找到IDM 选项 -> 文件类型 -> 第一个框 中添加后缀 ${ext},详见此处 返回
取消下载
未发现IDM,使用自带浏览器下载
如何唤起IDM?
`;
}
if (mode === 'aria') {
let alink = this.convertLinkToAria(dlink, filename, pan.ua);
if (typeof (alink) === 'object') {
content += `
`;
} else {
alinkAllText += alink + '\r\n';
content += `
`;
}
}
if (mode === 'rpc') {
content += `
`;
}
if (mode === 'curl') {
let alink = this.convertLinkToCurl(dlink, filename, pan.ua);
if (typeof (alink) === 'object') {
content += `
`;
} else {
alinkAllText += alink + '\r\n';
content += `
`;
}
}
if (mode === 'bc') {
let alink = this.convertLinkToBC(dlink, filename, pan.ua);
if (typeof (alink) === 'object') {
content += `
`;
} else {
content += `
`;
}
}
});
content += '
';
if (mode === 'aria')
content += ``;
if (mode === 'rpc') {
let rpc = base.getValue('setting_rpc_domain') + ':' + base.getValue('setting_rpc_port') + base.getValue('setting_rpc_path');
content += ``;
}
if (mode === 'curl')
content += ``;
return content;
},
async sendLinkToRPC(filename, link) {
let rpc = {
domain: base.getValue('setting_rpc_domain'),
port: base.getValue('setting_rpc_port'),
path: base.getValue('setting_rpc_path'),
token: base.getValue('setting_rpc_token'),
dir: base.getValue('setting_rpc_dir'),
};
let BDUSS = this.getBDUSS();
if (!BDUSS) return 'assistant';
let url = `${rpc.domain}:${rpc.port}${rpc.path}`;
let rpcData = {
id: new Date().getTime(),
jsonrpc: '2.0',
method: 'aria2.addUri',
params: [`token:${rpc.token}`, [link], {
dir: rpc.dir,
out: filename,
header: [`User-Agent: ${pan.ua}`, `Cookie: BDUSS=${BDUSS}`]
}]
};
try {
let res = await base.post(url, rpcData, {"User-Agent": pan.ua}, '');
if (res.result) return 'success';
return 'fail';
} catch (e) {
return 'fail';
}
},
getSelectedList() {
try {
return require('system-core:context/context.js').instanceForSystem.list.getSelected();
} catch (e) {
return document.querySelector('.wp-s-core-pan').__vue__.selectedList;
}
},
getLogid() {
let ut = require("system-core:context/context.js").instanceForSystem.tools.baseService;
return ut.base64Encode(base.getCookie("BAIDUID"));
},
getShareData() {
let res = locals.dump();
params.shareType = 'secret';
params.sign = '';
params.timestamp = '';
params.bdstoken = res.bdstoken.value;
params.channel = 'chunlei';
params.clienttype = 0;
params.web = 1;
params.app_id = 250528;
params.encrypt = 0;
params.product = 'share';
params.logid = this.getLogid();
params.primaryid = res.shareid.value;
params.uk = res.share_uk.value;
params.shareType === 'secret' && (params.extra = this._getExtra());
params.surl = this._getSurl();
},
detectPage() {
let path = location.pathname;
if (/^\/disk\/home/.test(path)) return 'home';
if (/^\/disk\/main/.test(path)) return 'main';
if (/^\/(s|share)\//.test(path)) return 'share';
return '';
return '';
},
showMainDialog(title, html, footer) {
Swal.fire({
title,
html,
footer,
allowOutsideClick: false,
showCloseButton: true,
showConfirmButton: false,
position: 'top',
width,
padding: '15px 20px 5px',
customClass,
}).then(() => {
this._resetData();
});
},
async initPanLinker() {
base.initDefaultConfig();
base.addPanLinkerStyle();
pt = this.detectPage();
let res = await base.post
(`https://api.youxiaohou.com/config/v2?ver=${version}&a=${author}`, {}, {}, 'text');
pan = JSON.parse(base.d(res));
Object.freeze && Object.freeze(pan);
pan.num === base.getValue('setting_init_code') ||
pan.license === base.getValue('license') ? this.addButton() : this.addInitButton();
base.createTip();
base.registerMenuCommand();
},
async initAuthorize() {
let ins = setInterval(() => {
if (/openapi.baidu.com\/oauth\/2.0\/authorize/.test(location.href)) {
let confirmButton = document.querySelector('#auth-allow');
if (confirmButton) {
confirmButton.click();
return;
}
}
if (/openapi.baidu.com\/oauth\/2.0\/login_success/.test(location.href)) {
if (location.href.includes('access_token')) {
let token = location.href.match(/access_token=(.*?)&/)[1];
base.setValue('baidu_access_token', token);
window.close()
}
}
}, 200)
}
};
let ali = {
convertLinkToAria(link, filename, ua) {
filename = base.fixFilename(filename);
return encodeURIComponent(`aria2c "${link}" --out "${filename}" --header "Referer: https://www.aliyundrive.com/"`);
},
convertLinkToBC(link, filename, ua) {
let bc = `AA/${encodeURIComponent(filename)}/?url=${encodeURIComponent(link)}&refer=${encodeURIComponent('https://www.aliyundrive.com/')}ZZ`;
return encodeURIComponent(`bc://http/${base.e(bc)}`);
},
convertLinkToCurl(link, filename, ua) {
let terminal = base.getValue('setting_terminal_type');
filename = base.fixFilename(filename);
return encodeURIComponent(`${terminal !== 'wp' ? 'curl' : 'curl.exe'} -L -C - "${link}" -o "${filename}" -e "https://www.aliyundrive.com/"`);
},
addPageListener() {
doc.on('click', '.pl-button-mode', (e) => {
mode = e.target.dataset.mode;
Swal.showLoading();
this.getPCSLink();
});
doc.on('click', '.listener-link-api', async (e) => {
e.preventDefault();
let dataset = e.currentTarget.dataset;
let href = dataset.link;
// let url = await this.getRealLink(dataset.did, dataset.fid);
// if (url) href = url;
$('#downloadIframe').attr('src', href);
// let d = document.createElement("a");
// d.download = e.currentTarget.dataset.filename;
// d.rel = "noopener";
// d.href = href;
// d.dispatchEvent(new MouseEvent("click"));
});
doc.on('click', '.listener-link-api-btn', async (e) => {
base.setClipboard(e.target.dataset.filename);
$(e.target).text('复制成功').animate({opacity: '0.5'}, "slow");
});
doc.on('click', '.listener-link-aria, .listener-copy-all', (e) => {
e.preventDefault();
base.setClipboard(decodeURIComponent(e.target.dataset.link));
$(e.target).text('复制成功,快去粘贴吧!').animate({opacity: '0.5'}, "slow");
});
doc.on('click', '.listener-link-rpc', async (e) => {
let target = $(e.currentTarget);
target.find('.icon').remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
let res = await this.sendLinkToRPC(e.currentTarget.dataset.filename, e.currentTarget.dataset.link);
if (res === 'success') {
$('.listener-rpc-task').show();
target.removeClass('pl-btn-danger').html('发送成功,快去看看吧!').animate({opacity: '0.5'}, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,请检查您的RPC配置信息!').animate({opacity: '0.5'}, "slow");
}
});
doc.on('click', '.listener-send-rpc', (e) => {
$('.listener-link-rpc').click();
$(e.target).text('发送完成,发送结果见上方按钮!').animate({opacity: '0.5'}, "slow");
});
doc.on('click', '.listener-open-setting', () => {
base.showSetting();
});
doc.on('click', '.listener-rpc-task', () => {
let rpc = JSON.stringify({
domain: base.getValue('setting_rpc_domain'),
port: base.getValue('setting_rpc_port'),
}), url = `${pan.d}/?rpc=${base.e(rpc)}#${base.getValue('setting_rpc_token')}`;
GM_openInTab(url, {active: true});
});
},
async getRealLink(d, f) {
let authorization = `${base.getStorage('token').token_type} ${base.getStorage('token').access_token}`;
let res = await base.post(pan.pcs[1], {
drive_id: d,
file_id: f
}, {
authorization,
"content-type": "application/json;charset=utf-8",
"referer": "https://www.aliyundrive.com/",
"x-canary": "client=windows,app=adrive,version=v6.0.0"
});
if (res.code === 'AccessTokenInvalid') {
return message.error('提示:Token过期,请刷新网页后重试!');
}
if (res.url) {
return res.url;
}
return '';
},
addButton() {
if (!pt) return;
let $toolWrap;
let $button = $(`
`);
if (pt === 'home') {
base.listenElement(pan.btn.home, () => {
$toolWrap = $(pan.btn.home);
$('.pl-button').length === 0 && $toolWrap.append($button);
})
}
if (pt === 'share') {
$button.css({'margin-right': '10px'});
base.listenElement(pan.btn.share, () => {
$toolWrap = $(pan.btn.share);
$('.pl-button').length === 0 && $toolWrap.prepend($button);
})
}
base.createDownloadIframe();
this.addPageListener();
},
addInitButton() {
if (!pt) return;
let $toolWrap;
let $button = $(`
`);
if (pt === 'home') {
base.listenElement(pan.btn.home, () => {
$toolWrap = $(pan.btn.home);
$('.pl-button-init').length === 0 && $toolWrap.append($button);
})
}
if (pt === 'share') {
$button.css({'margin-right': '10px'});
base.listenElement(pan.btn.share, () => {
$toolWrap = $(pan.btn.share);
$('.pl-butto-init').length === 0 && $toolWrap.prepend($button);
})
}
$button.click(() => base.initDialog());
},
async getPCSLink() {
let reactDomGrid = document.querySelector(pan.dom.grid);
if (reactDomGrid) {
let res = await Swal.fire({
title: '提示',
html: '
',
confirmButtonText: '点击切换'
});
if (res) {
document.querySelector(pan.dom.switch).click();
return message.success('切换成功,请重新获取下载链接!');
}
return false;
}
selectList = this.getSelectedList();
if (selectList.length === 0) {
return message.error('提示:请先勾选要下载的文件!');
}
if (this.isOnlyFolder()) {
return message.error('提示:请打开文件夹后勾选文件!');
}
if (pt === 'share') {
if (selectList.length > 20) {
return message.error('提示:单次最多可勾选 20 个文件!');
}
try {
let authorization = `${base.getStorage('token').token_type} ${base.getStorage('token').access_token}`;
let xShareToken = base.getStorage('shareToken').share_token;
for (let i = 0; i < selectList.length; i++) {
let res = await base.post(pan.pcs[0], {
expire_sec: 600,
file_id: selectList[i].fileId,
share_id: selectList[i].shareId
}, {
authorization,
"content-type": "application/json;charset=utf-8",
"x-share-token": xShareToken
});
if (res.download_url) {
selectList[i].downloadUrl = res.download_url;
}
}
} catch (e) {
return message.error('提示:请先登录网盘!');
}
} else {
if (selectList.length > 20) {
return message.error('提示:单次最多可勾选 20 个文件!');
}
let noUrlSelectList = selectList.filter(v => !Boolean(v.url))
let queue = [];
noUrlSelectList.forEach((item, index) => {
queue.push(this.getRealLink(item.driveId, item.fileId));
});
const res = await Promise.all(queue);
res.forEach((val, index) => {
noUrlSelectList[index].url = val;
});
}
let html = this.generateDom(selectList);
this.showMainDialog(pan[mode][0], html, pan[mode][1]);
},
generateDom(list) {
let content = '
';
let alinkAllText = '';
list.forEach((v, i) => {
if (v.type === 'folder') return;
let filename = v.name;
let fid = v.fileId;
let did = v.driveId;
let size = base.sizeFormat(v.size);
let dlink = v.downloadUrl || v.url;
if (mode === 'api') {
content += `
`;
}
if (mode === 'aria') {
let alink = this.convertLinkToAria(dlink, filename, navigator.userAgent);
alinkAllText += alink + '\r\n';
content += `
`;
}
if (mode === 'rpc') {
content += `
`;
}
if (mode === 'curl') {
let alink = this.convertLinkToCurl(dlink, filename, navigator.userAgent);
alinkAllText += alink + '\r\n';
content += `
`;
}
if (mode === 'bc') {
let alink = this.convertLinkToBC(dlink, filename, navigator.userAgent);
content += `
`;
}
});
content += '
';
if (mode === 'aria')
content += ``;
if (mode === 'rpc') {
let rpc = base.getValue('setting_rpc_domain') + ':' + base.getValue('setting_rpc_port') + base.getValue('setting_rpc_path');
content += ``;
}
if (mode === 'curl')
content += ``;
return content;
},
async sendLinkToRPC(filename, link) {
let rpc = {
domain: base.getValue('setting_rpc_domain'),
port: base.getValue('setting_rpc_port'),
path: base.getValue('setting_rpc_path'),
token: base.getValue('setting_rpc_token'),
dir: base.getValue('setting_rpc_dir'),
};
let url = `${rpc.domain}:${rpc.port}${rpc.path}`;
let rpcData = {
id: new Date().getTime(),
jsonrpc: '2.0',
method: 'aria2.addUri',
params: [`token:${rpc.token}`, [link], {
dir: rpc.dir,
out: filename,
header: [`Referer: https://www.aliyundrive.com/`]
}]
};
try {
let res = await base.post(url, rpcData, {"Referer": "https://www.aliyundrive.com/"}, '');
if (res.result) return 'success';
return 'fail';
} catch (e) {
return 'fail';
}
},
getSelectedList() {
try {
let selectedList = [];
let reactDom = document.querySelector(pan.dom.list);
let reactObj = base.findReact(reactDom, 1);
let props = reactObj.pendingProps;
if (props) {
let fileList = props.dataSource || [];
let selectedKeys = props.selectedKeys.split(',');
fileList.forEach((val) => {
if (selectedKeys.includes(val.fileId)) {
selectedList.push(val);
}
});
}
return selectedList;
} catch (e) {
return [];
}
},
detectPage() {
let path = location.pathname;
if (/^\/(drive)/.test(path)) return 'home';
if (/^\/(s|share)\//.test(path)) return 'share';
return '';
},
isOnlyFolder() {
for (let i = 0; i < selectList.length; i++) {
if (selectList[i].type === 'file') return false;
}
return true;
},
showMainDialog(title, html, footer) {
Swal.fire({
title,
html,
footer,
allowOutsideClick: false,
showCloseButton: true,
showConfirmButton: false,
position: 'top',
width,
padding: '15px 20px 5px',
customClass,
});
},
async initPanLinker() {
base.initDefaultConfig();
base.addPanLinkerStyle();
pt = this.detectPage();
let res = await base.post
(`https://api.youxiaohou.com/config/v2/ali?ver=${version}&a=${author}`, {}, {}, 'text');
pan = JSON.parse(base.d(res));
Object.freeze && Object.freeze(pan);
pan.num === base.getValue('setting_init_code') ||
pan.license === base.getValue('license') ? this.addButton() : this.addInitButton();
base.createTip();
base.registerMenuCommand();
}
};
let tianyi = {
convertLinkToAria(link, filename, ua) {
filename = base.fixFilename(filename);
return encodeURIComponent(`aria2c "${link}" --out "${filename}"`);
},
convertLinkToBC(link, filename, ua) {
let bc = `AA/${encodeURIComponent(filename)}/?url=${encodeURIComponent(link)}ZZ`;
return encodeURIComponent(`bc://http/${base.e(bc)}`);
},
convertLinkToCurl(link, filename, ua) {
let terminal = base.getValue('setting_terminal_type');
filename = base.fixFilename(filename);
return encodeURIComponent(`${terminal !== 'wp' ? 'curl' : 'curl.exe'} -L -C - "${link}" -o "${filename}"`);
},
addPageListener() {
doc.on('click', '.pl-button-mode', (e) => {
mode = e.target.dataset.mode;
Swal.showLoading();
this.getPCSLink();
});
doc.on('click', '.listener-link-api', async (e) => {
e.preventDefault();
$('#downloadIframe').attr('src', e.currentTarget.dataset.link);
});
doc.on('click', '.listener-link-aria, .listener-copy-all', (e) => {
e.preventDefault();
base.setClipboard(decodeURIComponent(e.target.dataset.link));
$(e.target).text('复制成功,快去粘贴吧!').animate({opacity: '0.5'}, "slow");
});
doc.on('click', '.listener-link-rpc', async (e) => {
let target = $(e.currentTarget);
target.find('.icon').remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
let res = await this.sendLinkToRPC(e.currentTarget.dataset.filename, e.currentTarget.dataset.link);
if (res === 'success') {
$('.listener-rpc-task').show();
target.removeClass('pl-btn-danger').html('发送成功,快去看看吧!').animate({opacity: '0.5'}, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,请检查您的RPC配置信息!').animate({opacity: '0.5'}, "slow");
}
});
doc.on('click', '.listener-send-rpc', (e) => {
$('.listener-link-rpc').click();
$(e.target).text('发送完成,发送结果见上方按钮!').animate({opacity: '0.5'}, "slow");
});
doc.on('click', '.listener-open-setting', () => {
base.showSetting();
});
doc.on('click', '.listener-rpc-task', () => {
let rpc = JSON.stringify({
domain: base.getValue('setting_rpc_domain'),
port: base.getValue('setting_rpc_port'),
}), url = `${pan.d}/?rpc=${base.e(rpc)}#${base.getValue('setting_rpc_token')}`;
GM_openInTab(url, {active: true});
});
},
addButton() {
if (!pt) return;
let $toolWrap;
let $button = $(`
下载提速
`);
if (pt === 'home') {
base.listenElement(pan.btn.home, () => {
$toolWrap = $(pan.btn.home);
$('.pl-button').length === 0 && $toolWrap.prepend($button);
})
}
if (pt === 'share') {
base.listenElement(pan.btn.share, () => {
$toolWrap = $(pan.btn.share);
$('.pl-button').length === 0 && $toolWrap.prepend($button);
})
}
base.createDownloadIframe();
this.addPageListener();
},
addInitButton() {
if (!pt) return;
let $toolWrap;
let $button = $(`
下载提速
`);
if (pt === 'home') {
base.listenElement(pan.btn.home, () => {
$toolWrap = $(pan.btn.home);
$('.pl-button-init').length === 0 && $toolWrap.prepend($button);
})
}
if (pt === 'share') {
$button.css({'margin-right': '10px'});
base.listenElement(pan.btn.share, () => {
$toolWrap = $(pan.btn.share);
$('.pl-button-init').length === 0 && $toolWrap.prepend($button);
})
}
$button.click(() => base.initDialog());
},
async getToken() {
let res = await base.getFinalUrl(pan.pcs[1], {});
let accessToken = res.match(/accessToken=(\w+)/)?.[1];
accessToken && base.setStorage('accessToken', accessToken);
return accessToken;
},
async getFileUrlByOnce(item, index, token) {
try {
if (item.downloadUrl) return {
index,
downloadUrl: item.downloadUrl
};
let time = Date.now(),
fileId = item.fileId,
o = "AccessToken=" + token + "&Timestamp=" + time + "&fileId=" + fileId,
url = pan.pcs[2] + '?fileId=' + fileId;
if (item.shareId) {
o = "AccessToken=" + token + "&Timestamp=" + time + "&dt=1&fileId=" + fileId + "&shareId=" + item.shareId;
url += '&dt=1&shareId=' + item.shareId;
}
let sign = md5(o).toString();
let res = await base.get(url, {
"accept": "application/json;charset=UTF-8",
"sign-type": 1,
"accesstoken": token,
"timestamp": time,
"signature": sign
});
if (res.res_code === 0) {
return {
index,
downloadUrl: res.fileDownloadUrl
};
} else if (res.errorCode === 'InvalidSessionKey') {
return {
index,
downloadUrl: '提示:请先登录网盘!'
};
} else if (res.res_code === 'ShareNotFoundFlatDir') {
return {
index,
downloadUrl: '提示:请先[转存]文件,👉前往[我的网盘]中下载!'
};
} else {
return {
index,
downloadUrl: '获取下载地址失败,请刷新重试!'
};
}
} catch (e) {
return {
index,
downloadUrl: '获取下载地址失败,请刷新重试!'
};
}
},
async getPCSLink() {
selectList = this.getSelectedList();
if (selectList.length === 0) {
return message.error('提示:请先勾选要下载的文件!');
}
if (this.isOnlyFolder()) {
return message.error('提示:请打开文件夹后勾选文件!');
}
let token = base.getStorage('accessToken') || await this.getToken();
if (!token) {
return message.error('提示:请先登录网盘!');
}
let queue = [];
selectList.forEach((item, index) => {
queue.push(this.getFileUrlByOnce(item, index, token));
});
const res = await Promise.all(queue);
res.forEach(val => {
selectList[val.index].downloadUrl = val.downloadUrl;
});
let html = this.generateDom(selectList);
this.showMainDialog(pan[mode][0], html, pan[mode][1]);
},
generateDom(list) {
let content = '
';
let alinkAllText = '';
list.forEach((v, i) => {
if (v.isFolder) return;
let filename = v.fileName;
let size = base.sizeFormat(v.size);
let dlink = v.downloadUrl;
if (mode === 'api') {
content += `
`;
}
if (mode === 'aria') {
let alink = this.convertLinkToAria(dlink, filename, navigator.userAgent);
alinkAllText += alink + '\r\n';
content += `
`;
}
if (mode === 'rpc') {
content += `
`;
}
if (mode === 'curl') {
let alink = this.convertLinkToCurl(dlink, filename, navigator.userAgent);
alinkAllText += alink + '\r\n';
content += `
`;
}
if (mode === 'bc') {
let alink = this.convertLinkToBC(dlink, filename, navigator.userAgent);
content += `
`;
}
});
content += '
';
if (mode === 'aria')
content += ``;
if (mode === 'rpc') {
let rpc = base.getValue('setting_rpc_domain') + ':' + base.getValue('setting_rpc_port') + base.getValue('setting_rpc_path');
content += ``;
}
if (mode === 'curl')
content += ``;
return content;
},
async sendLinkToRPC(filename, link) {
let rpc = {
domain: base.getValue('setting_rpc_domain'),
port: base.getValue('setting_rpc_port'),
path: base.getValue('setting_rpc_path'),
token: base.getValue('setting_rpc_token'),
dir: base.getValue('setting_rpc_dir'),
};
let url = `${rpc.domain}:${rpc.port}${rpc.path}`;
let rpcData = {
id: new Date().getTime(),
jsonrpc: '2.0',
method: 'aria2.addUri',
params: [`token:${rpc.token}`, [link], {
dir: rpc.dir,
out: filename,
header: []
}]
};
try {
let res = await base.post(url, rpcData, {}, '');
if (res.result) return 'success';
return 'fail';
} catch (e) {
return 'fail';
}
},
getSelectedList() {
try {
return document.querySelector(".c-file-list").__vue__.selectedList;
} catch (e) {
return [document.querySelector(".info-detail").__vue__.fileDetail];
}
},
detectPage() {
let path = location.pathname;
if (/^\/web\/main/.test(path)) return 'home';
if (/^\/web\/share/.test(path)) return 'share';
return '';
},
isOnlyFolder() {
for (let i = 0; i < selectList.length; i++) {
if (!selectList[i].isFolder) return false;
}
return true;
},
showMainDialog(title, html, footer) {
Swal.fire({
title,
html,
footer,
allowOutsideClick: false,
showCloseButton: true,
showConfirmButton: false,
position: 'top',
width,
padding: '15px 20px 5px',
customClass,
});
},
async initPanLinker() {
base.initDefaultConfig();
base.addPanLinkerStyle();
pt = this.detectPage();
let res = await base.post
(`https://api.youxiaohou.com/config/v2/tianyi?ver=${version}&a=${author}`, {}, {}, 'text');
pan = JSON.parse(base.d(res));
Object.freeze && Object.freeze(pan);
pan.num === base.getValue('setting_init_code') ||
pan.license === base.getValue('license') ? this.addButton() : this.addInitButton();
this.getToken();
base.createTip();
base.registerMenuCommand();
}
};
let xunlei = {
convertLinkToAria(link, filename, ua) {
filename = base.fixFilename(filename);
return encodeURIComponent(`aria2c "${link}" --out "${filename}"`);
},
convertLinkToBC(link, filename, ua) {
let bc = `AA/${encodeURIComponent(filename)}/?url=${encodeURIComponent(link)}ZZ`;
return encodeURIComponent(`bc://http/${base.e(bc)}`);
},
convertLinkToCurl(link, filename, ua) {
let terminal = base.getValue('setting_terminal_type');
filename = base.fixFilename(filename);
return encodeURIComponent(`${terminal !== 'wp' ? 'curl' : 'curl.exe'} -L -C - "${link}" -o "${filename}"`);
},
addPageListener() {
doc.on('click', '.pl-button-mode', (e) => {
mode = e.target.dataset.mode;
Swal.showLoading();
this.getPCSLink();
});
doc.on('click', '.listener-link-api', async (e) => {
e.preventDefault();
$('#downloadIframe').attr('src', e.currentTarget.dataset.link);
});
doc.on('click', '.listener-link-api-btn', async (e) => {
base.setClipboard(e.target.dataset.filename);
$(e.target).text('复制成功').animate({opacity: '0.5'}, "slow");
});
doc.on('click', '.listener-link-bc-btn', async (e) => {
let mirror = base.getMirrorList(e.target.dataset.dlink, pan.mirror);
base.setClipboard(mirror);
$(e.target).text('复制成功').animate({opacity: '0.5'}, "slow");
});
doc.on('click', '.listener-link-aria, .listener-copy-all', (e) => {
e.preventDefault();
base.setClipboard(decodeURIComponent(e.target.dataset.link));
$(e.target).text('复制成功,快去粘贴吧!').animate({opacity: '0.5'}, "slow");
});
doc.on('click', '.listener-link-rpc', async (e) => {
let target = $(e.currentTarget);
target.find('.icon').remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
let res = await this.sendLinkToRPC(e.currentTarget.dataset.filename, e.currentTarget.dataset.link);
if (res === 'success') {
$('.listener-rpc-task').show();
target.removeClass('pl-btn-danger').html('发送成功,快去看看吧!').animate({opacity: '0.5'}, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,请检查您的RPC配置信息!').animate({opacity: '0.5'}, "slow");
}
});
doc.on('click', '.listener-send-rpc', (e) => {
$('.listener-link-rpc').click();
$(e.target).text('发送完成,发送结果见上方按钮!').animate({opacity: '0.5'}, "slow");
});
doc.on('click', '.listener-open-setting', () => {
base.showSetting();
});
doc.on('click', '.listener-rpc-task', () => {
let rpc = JSON.stringify({
domain: base.getValue('setting_rpc_domain'),
port: base.getValue('setting_rpc_port'),
}), url = `${pan.d}/?rpc=${base.e(rpc)}#${base.getValue('setting_rpc_token')}`;
GM_openInTab(url, {active: true});
});
},
addButton() {
if (!pt) return;
let $toolWrap;
let $button = $(`
下载提速
`);
if (pt === 'home') {
base.listenElement(pan.btn.home, () => {
$toolWrap = $(pan.btn.home);
$('.pl-button').length === 0 && $toolWrap.prepend($button);
})
}
if (pt === 'share') {
$button.css({'margin-right': '10px'});
base.listenElement(pan.btn.share, () => {
$toolWrap = $(pan.btn.share);
$('.pl-button').length === 0 && $toolWrap.prepend($button);
})
}
base.createDownloadIframe();
this.addPageListener();
},
addInitButton() {
if (!pt) return;
let $toolWrap;
let $button = $(`
下载提速
`);
if (pt === 'home') {
base.listenElement(pan.btn.home, () => {
$toolWrap = $(pan.btn.home);
$('.pl-button-init').length === 0 && $toolWrap.prepend($button);
})
}
if (pt === 'share') {
$button.css({'margin-right': '10px'});
base.listenElement(pan.btn.share, () => {
$toolWrap = $(pan.btn.share);
$('.pl-button-init').length === 0 && $toolWrap.prepend($button);
})
}
$button.click(() => base.initDialog());
},
getToken() {
let credentials = {}, captcha = {};
for (let i = 0; i < localStorage.length; i++) {
if (/^credentials_/.test(localStorage.key(i))) {
credentials = base.getStorage(localStorage.key(i));
base.setStorage('');
}
if (/^captcha_[\w]{16}/.test(localStorage.key(i))) {
captcha = base.getStorage(localStorage.key(i));
}
}
let deviceid = /(\w{32})/.exec(base.getStorage('deviceid').split(','))[0];
let token = {
credentials,
captcha,
deviceid
};
return token;
},
async getFileUrlByOnce(item, index, token) {
try {
if (item.downloadUrl) return {
index,
downloadUrl: item.downloadUrl
};
let res = await base.get(pan.pcs[0] + item.id, {
'Authorization': `${token.credentials.token_type} ${token.credentials.access_token}`,
'content-type': "application/json",
'x-captcha-token': token.captcha.token,
'x-device-id': token.deviceid,
});
if (res.web_content_link) {
return {
index,
downloadUrl: res.web_content_link
};
} else {
return {
index,
downloadUrl: '获取下载地址失败,请刷新重试!'
};
}
} catch (e) {
return message.error('提示:请先登录网盘后刷新页面!');
}
},
async getPCSLink() {
selectList = this.getSelectedList();
if (selectList.length === 0) {
return message.error('提示:请先勾选要下载的文件!');
}
if (this.isOnlyFolder()) {
return message.error('提示:请打开文件夹后勾选文件!');
}
if (pt === 'home') {
let queue = [];
let token = this.getToken();
selectList.forEach((item, index) => {
queue.push(this.getFileUrlByOnce(item, index, token));
});
const res = await Promise.all(queue);
res.forEach(val => {
selectList[val.index].downloadUrl = val.downloadUrl;
});
} else {
let dialog = await Swal.fire({
toast: true,
icon: 'info',
title: `提示:请将文件
[保存到网盘]👉前往
[我的网盘]中下载!`,
showConfirmButton: true,
confirmButtonText: '点击保存',
position: 'top',
});
if (dialog.isConfirmed) {
document.querySelector('.saveToCloud').click();
return;
}
}
let html = this.generateDom(selectList);
this.showMainDialog(pan[mode][0], html, pan[mode][1]);
},
generateDom(list) {
let content = '
';
let alinkAllText = '';
list.forEach((v, i) => {
if (v.kind === 'drive#folder') return;
let filename = v.name;
let size = base.sizeFormat(+v.size);
let dlink = v.downloadUrl;
if (mode === 'api') {
content += `
`;
}
if (mode === 'aria') {
let alink = this.convertLinkToAria(dlink, filename, navigator.userAgent);
alinkAllText += alink + '\r\n';
content += `
`;
}
if (mode === 'rpc') {
content += `
`;
}
if (mode === 'curl') {
let alink = this.convertLinkToCurl(dlink, filename, navigator.userAgent);
alinkAllText += alink + '\r\n';
content += `
`;
}
if (mode === 'bc') {
let alink = this.convertLinkToBC(dlink, filename, navigator.userAgent);
content += `
`;
}
});
content += '
';
if (mode === 'aria')
content += ``;
if (mode === 'rpc') {
let rpc = base.getValue('setting_rpc_domain') + ':' + base.getValue('setting_rpc_port') + base.getValue('setting_rpc_path');
content += ``;
}
if (mode === 'curl')
content += ``;
return content;
},
async sendLinkToRPC(filename, link) {
let rpc = {
domain: base.getValue('setting_rpc_domain'),
port: base.getValue('setting_rpc_port'),
path: base.getValue('setting_rpc_path'),
token: base.getValue('setting_rpc_token'),
dir: base.getValue('setting_rpc_dir'),
};
let url = `${rpc.domain}:${rpc.port}${rpc.path}`;
let rpcData = {
id: new Date().getTime(),
jsonrpc: '2.0',
method: 'aria2.addUri',
params: [`token:${rpc.token}`, [link], {
dir: rpc.dir,
out: filename,
header: []
}]
};
try {
let res = await base.post(url, rpcData, {}, '');
if (res.result) return 'success';
return 'fail';
} catch (e) {
return 'fail';
}
},
getSelectedList() {
try {
let doms = document.querySelectorAll('.SourceListItem__item--XxpOC');
let selectedList = [];
for (let dom of doms) {
let domVue = dom.__vue__;
if (domVue.selected.includes(domVue.info.id)) {
selectedList.push(domVue.info);
}
}
return selectedList;
} catch (e) {
return [];
}
},
detectPage() {
let path = location.pathname;
if (/^\/$/.test(path)) return 'home';
if (/^\/(s|share)\//.test(path)) return 'share';
return '';
},
isOnlyFolder() {
for (let i = 0; i < selectList.length; i++) {
if (selectList[i].kind === 'drive#file') return false;
}
return true;
},
showMainDialog(title, html, footer) {
Swal.fire({
title,
html,
footer,
allowOutsideClick: false,
showCloseButton: true,
showConfirmButton: false,
position: 'top',
width,
padding: '15px 20px 5px',
customClass,
});
},
async initPanLinker() {
base.initDefaultConfig();
base.addPanLinkerStyle();
pt = this.detectPage();
let res = await base.post
(`https://api.youxiaohou.com/config/v2/xunlei?ver=${version}&a=${author}`, {}, {}, 'text');
pan = JSON.parse(base.d(res));
Object.freeze && Object.freeze(pan);
pan.num === base.getValue('setting_init_code') ||
pan.license === base.getValue('license') ? this.addButton() : this.addInitButton();
base.createTip();
base.registerMenuCommand();
}
};
let quark = {
convertLinkToAria(link, filename, ua) {
filename = base.fixFilename(filename);
return encodeURIComponent(`aria2c "${link}" --out "${filename}" --header "Cookie: ${document.cookie}"`);
},
convertLinkToBC(link, filename, ua) {
let bc = `AA/${encodeURIComponent(filename)}/?url=${encodeURIComponent(link)}&cookie=${encodeURIComponent(document.cookie)}ZZ`;
return encodeURIComponent(`bc://http/${base.e(bc)}`);
},
convertLinkToCurl(link, filename, ua) {
let terminal = base.getValue('setting_terminal_type');
filename = base.fixFilename(filename);
return encodeURIComponent(`${terminal !== 'wp' ? 'curl' : 'curl.exe'} -L -C - "${link}" -o "${filename}" -b "${document.cookie}"`);
},
addPageListener() {
window.addEventListener('hashchange', async (e) => {
let home = 'https://pan.quark.cn/list#/', all = 'https://pan.quark.cn/list#/list/all';
if (e.oldURL === home && e.newURL === all) return;
await base.sleep(150);
if ($('.quark-button').length > 0) return;
pan.num === base.getValue('setting_init_code') ||
pan.license === base.getValue('license') ? this.addButton() : this.addInitButton();
});
doc.on('click', '.pl-button-mode', (e) => {
mode = e.target.dataset.mode;
Swal.showLoading();
this.getPCSLink();
});
doc.on('click', '.listener-link-api', async (e) => {
e.preventDefault();
$('#downloadIframe').attr('src', e.currentTarget.dataset.link);
});
doc.on('click', '.listener-link-aria, .listener-copy-all', (e) => {
e.preventDefault();
base.setClipboard(decodeURIComponent(e.target.dataset.link));
$(e.target).text('复制成功,快去粘贴吧!').animate({opacity: '0.5'}, "slow");
});
doc.on('click', '.listener-link-rpc', async (e) => {
let target = $(e.currentTarget);
target.find('.icon').remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
let res = await this.sendLinkToRPC(e.currentTarget.dataset.filename, e.currentTarget.dataset.link);
if (res === 'success') {
$('.listener-rpc-task').show();
target.removeClass('pl-btn-danger').html('发送成功,快去看看吧!').animate({opacity: '0.5'}, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,请检查您的RPC配置信息!').animate({opacity: '0.5'}, "slow");
}
});
doc.on('click', '.listener-send-rpc', (e) => {
$('.listener-link-rpc').click();
$(e.target).text('发送完成,发送结果见上方按钮!').animate({opacity: '0.5'}, "slow");
});
doc.on('click', '.listener-open-setting', () => {
base.showSetting();
});
doc.on('click', '.listener-rpc-task', () => {
let rpc = JSON.stringify({
domain: base.getValue('setting_rpc_domain'),
port: base.getValue('setting_rpc_port'),
}), url = `${pan.d}/?rpc=${base.e(rpc)}#${base.getValue('setting_rpc_token')}`;
GM_openInTab(url, {active: true});
});
},
addButton() {
if (!pt) return;
let $toolWrap;
let $button = $(`
`);
if (pt === 'home') {
base.listenElement(pan.btn.home, () => {
$toolWrap = $(pan.btn.home);
$('.pl-button').length === 0 && $toolWrap.prepend($button);
});
}
if (pt === 'share') {
$button.css({'margin-right': '10px'});
base.listenElement(pan.btn.share, () => {
$toolWrap = $(pan.btn.share);
$('.pl-button').length === 0 && $toolWrap.prepend($button);
});
}
},
addInitButton() {
if (!pt) return;
let $toolWrap;
let $button = $(`
`);
if (pt === 'home') {
base.listenElement(pan.btn.home, () => {
$toolWrap = $(pan.btn.home);
$('.pl-button-init').length === 0 && $toolWrap.prepend($button);
})
}
if (pt === 'share') {
$button.css({'margin-right': '10px'});
base.listenElement(pan.btn.share, () => {
$toolWrap = $(pan.btn.share);
$('.pl-button-init').length === 0 && $toolWrap.prepend($button);
})
}
$button.click(() => base.initDialog());
},
async getPCSLink() {
selectList = this.getSelectedList();
if (selectList.length === 0) {
return message.error('提示:请先勾选要下载的文件!');
}
if (this.isOnlyFolder()) {
return message.error('提示:请打开文件夹后勾选文件!');
}
let fids = [];
selectList.forEach(val => {
fids.push(val.fid);
});
if (pt === 'home') {
let res = await base.post(pan.pcs[0], {
"fids": fids
}, {"content-type": "application/json;charset=utf-8", "user-agent": pan.ua});
if (res.code === 31001) {
return message.error('提示:请先登录网盘!');
}
if (res.code !== 0) {
return message.error('提示:获取链接失败!');
}
let html = this.generateDom(res.data);
this.showMainDialog(pan[mode][0], html, pan[mode][1]);
} else {
let dialog = await Swal.fire({
toast: true,
icon: 'info',
title: `提示:请将文件
[保存到网盘]👉前往
[我的网盘]中下载!`,
showConfirmButton: true,
confirmButtonText: '点击保存',
position: 'top',
});
if (dialog.isConfirmed) {
document.querySelector('.file-info_r').click();
return;
}
}
},
generateDom(list) {
let content = '
';
let alinkAllText = '';
list.forEach((v, i) => {
if (v.file === false) return;
let filename = v.file_name;
let fid = v.fid;
let size = base.sizeFormat(v.size);
let dlink = v.download_url;
if (mode === 'api') {
content += `
`;
}
if (mode === 'aria') {
let alink = this.convertLinkToAria(dlink, filename, navigator.userAgent);
alinkAllText += alink + '\r\n';
content += `
`;
}
if (mode === 'rpc') {
content += `
`;
}
if (mode === 'curl') {
let alink = this.convertLinkToCurl(dlink, filename, navigator.userAgent);
alinkAllText += alink + '\r\n';
content += `
`;
}
if (mode === 'bc') {
let alink = this.convertLinkToBC(dlink, filename, navigator.userAgent);
content += `
`;
}
});
content += '
';
if (mode === 'aria')
content += ``;
if (mode === 'rpc') {
let rpc = base.getValue('setting_rpc_domain') + ':' + base.getValue('setting_rpc_port') + base.getValue('setting_rpc_path');
content += ``;
}
if (mode === 'curl')
content += ``;
return content;
},
async sendLinkToRPC(filename, link) {
let rpc = {
domain: base.getValue('setting_rpc_domain'),
port: base.getValue('setting_rpc_port'),
path: base.getValue('setting_rpc_path'),
token: base.getValue('setting_rpc_token'),
dir: base.getValue('setting_rpc_dir'),
};
let url = `${rpc.domain}:${rpc.port}${rpc.path}`;
let rpcData = {
id: new Date().getTime(),
jsonrpc: '2.0',
method: 'aria2.addUri',
params: [`token:${rpc.token}`, [link], {
dir: rpc.dir,
out: filename,
header: [`Cookie: ${document.cookie}`]
}]
};
try {
let res = await base.post(url, rpcData, {"Cookie": document.cookie}, '');
if (res.result) return 'success';
return 'fail';
} catch (e) {
return 'fail';
}
},
getSelectedList() {
try {
let selectedList = [];
let reactDom = document.getElementsByClassName('file-list')[0];
let reactObj = base.findReact(reactDom);
let props = reactObj.props;
if (props) {
let fileList = props.list || [];
let selectedKeys = props.selectedRowKeys || [];
fileList.forEach((val) => {
if (selectedKeys.includes(val.fid)) {
selectedList.push(val);
}
});
}
return selectedList;
} catch (e) {
return [];
}
},
detectPage() {
let path = location.pathname;
if (/^\/(list)/.test(path)) return 'home';
if (/^\/(s|share)\//.test(path)) return 'share';
return '';
},
isOnlyFolder() {
for (let i = 0; i < selectList.length; i++) {
if (selectList[i].file) return false;
}
return true;
},
showMainDialog(title, html, footer) {
Swal.fire({
title,
html,
footer,
allowOutsideClick: false,
showCloseButton: true,
showConfirmButton: false,
position: 'top',
width,
padding: '15px 20px 5px',
customClass,
});
},
async initPanLinker() {
base.initDefaultConfig();
base.addPanLinkerStyle();
pt = this.detectPage();
let res = await base.post
(`https://api.youxiaohou.com/config/v2/quark?ver=${version}&a=${author}`, {}, {}, 'text');
pan = JSON.parse(base.d(res));
Object.freeze && Object.freeze(pan);
pan.num === base.getValue('setting_init_code') ||
pan.license === base.getValue('license') ? this.addButton() : this.addInitButton();
this.addPageListener();
base.createTip();
base.createDownloadIframe();
base.registerMenuCommand();
}
};
let yidong = {
convertLinkToAria(link, filename, ua) {
filename = base.fixFilename(filename);
return encodeURIComponent(`aria2c "${link}" --out "${filename}"`);
},
convertLinkToBC(link, filename, ua) {
let bc = `AA/${encodeURIComponent(filename)}/?url=${encodeURIComponent(link)}ZZ`;
return encodeURIComponent(`bc://http/${base.e(bc)}`);
},
convertLinkToCurl(link, filename, ua) {
let terminal = base.getValue('setting_terminal_type');
filename = base.fixFilename(filename);
return encodeURIComponent(`${terminal !== 'wp' ? 'curl' : 'curl.exe'} -L -C - "${link}" -o "${filename}"`);
},
addPageListener() {
doc.on('click', '.pl-button-mode', (e) => {
mode = e.target.dataset.mode;
Swal.showLoading();
this.getPCSLink();
});
doc.on('click', '.listener-link-api', async (e) => {
e.preventDefault();
$('#downloadIframe').attr('src', e.currentTarget.dataset.link);
});
doc.on('click', '.listener-link-aria, .listener-copy-all', (e) => {
e.preventDefault();
base.setClipboard(decodeURIComponent(e.target.dataset.link));
$(e.target).text('复制成功,快去粘贴吧!').animate({opacity: '0.5'}, "slow");
});
doc.on('click', '.listener-link-rpc', async (e) => {
let target = $(e.currentTarget);
target.find('.icon').remove();
target.find('.pl-loading').remove();
target.prepend(base.createLoading());
let res = await this.sendLinkToRPC(e.currentTarget.dataset.filename, e.currentTarget.dataset.link);
if (res === 'success') {
$('.listener-rpc-task').show();
target.removeClass('pl-btn-danger').html('发送成功,快去看看吧!').animate({opacity: '0.5'}, "slow");
} else {
target.addClass('pl-btn-danger').text('发送失败,请检查您的RPC配置信息!').animate({opacity: '0.5'}, "slow");
}
});
doc.on('click', '.listener-send-rpc', (e) => {
$('.listener-link-rpc').click();
$(e.target).text('发送完成,发送结果见上方按钮!').animate({opacity: '0.5'}, "slow");
});
doc.on('click', '.listener-open-setting', () => {
base.showSetting();
});
doc.on('click', '.listener-rpc-task', () => {
let rpc = JSON.stringify({
domain: base.getValue('setting_rpc_domain'),
port: base.getValue('setting_rpc_port'),
}), url = `${pan.d}/?rpc=${base.e(rpc)}#${base.getValue('setting_rpc_token')}`;
GM_openInTab(url, {active: true});
});
},
addButton() {
if (!pt) return;
let $toolWrap;
let $button = $(`
下载提速
`);
if (pt === 'home') {
base.listenElement(pan.btn.home, () => {
$toolWrap = $(pan.btn.home);
$('.pl-button').length === 0 && $toolWrap.prepend($button);
})
}
if (pt === 'share') {
$button.removeClass('yidong-button').addClass('yidong-share-button');
base.listenElement(pan.btn.share, () => {
$toolWrap = $(pan.btn.share);
$('.pl-button').length === 0 && $toolWrap.prepend($button);
})
}
base.createDownloadIframe();
this.addPageListener();
},
addInitButton() {
if (!pt) return;
let $toolWrap;
let $button = $(`
下载提速
`);
if (pt === 'home') {
base.listenElement(pan.btn.home, () => {
$toolWrap = $(pan.btn.home);
$('.pl-button-init').length === 0 && $toolWrap.prepend($button);
})
}
if (pt === 'share') {
$button.removeClass('yidong-button').addClass('yidong-share-button');
base.listenElement(pan.btn.share, () => {
$toolWrap = $(pan.btn.share);
$('.pl-button-init').length === 0 && $toolWrap.prepend($button);
})
}
$button.click(() => base.initDialog());
},
getRandomString(len) {
len = len || 16;
let $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
let maxPos = $chars.length;
let pwd = '';
for (let i = 0; i < len; i++) {
pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
}
return pwd;
},
utob(str) {
const u = String.fromCharCode;
return str.replace(/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g, (t) => {
if (t.length < 2) {
let e = t.charCodeAt(0);
return e < 128 ? t : e < 2048 ? u(192 | e >>> 6) + u(128 | 63 & e) : u(224 | e >>> 12 & 15) + u(128 | e >>> 6 & 63) + u(128 | 63 & e);
}
e = 65536 + 1024 * (t.charCodeAt(0) - 55296) + (t.charCodeAt(1) - 56320);
return u(240 | e >>> 18 & 7) + u(128 | e >>> 12 & 63) + u(128 | e >>> 6 & 63) + u(128 | 63 & e);
});
},
getSign(e, t, a, n) {
let r = "",
i = "";
if (t) {
let s = Object.assign({}, t);
i = JSON.stringify(s),
i = i.replace(/\s*/g, ""),
i = encodeURIComponent(i);
let c = i.split(""),
u = c.sort();
i = u.join("");
}
let A = md5(base.e(this.utob(i)));
let l = md5(a + ":" + n);
return md5(A + l).toUpperCase();
},
async getFileUrlByOnce(item, index) {
try {
if (item.downloadUrl) return {
index,
downloadUrl: item.downloadUrl
};
if (this.detectPage() === 'home') {
let body = {
"contentID": item.contentID,
"commonAccountInfo": {"account": item.owner, "accountType": 1},
"operation": "0",
"inline": "0",
"extInfo": {"isReturnCdnDownloadUrl": "1"}
};
let time = new Date(+new Date() + 8 * 3600 * 1000).toJSON().substr(0, 19).replace('T', ' ');
let key = this.getRandomString(16);
let sign = this.getSign(undefined, body, time, key);
let res = await base.post(pan.pcs[0], body, {
'authorization': base.getCookie('authorization'),
'x-huawei-channelSrc': '10000034',
'x-inner-ntwk': '2',
'mcloud-channel': '1000101',
'mcloud-client': '10701',
'mcloud-sign': time + "," + key + "," + sign,
'content-type': "application/json;charset=UTF-8",
'caller': 'web',
'CMS-DEVICE': 'default',
'x-DeviceInfo': '||9|7.12.0|chrome|118.0.0.0||windows 10||zh-CN|||',
'x-SvcType': '1',
});
if (res.success) {
return {
index,
downloadUrl: res.data.downloadURL
};
} else {
return {
index,
downloadUrl: '获取下载地址失败,请刷新重试!'
};
}
}
if (this.detectPage() === 'share') {
let vueDom = document.querySelector(".main_file_list").__vue__;
let res = await base.post(pan.pcs[1], `linkId=${vueDom.linkID}&contentIds=${item.path}&catalogIds=`, {
'Content-Type': 'application/x-www-form-urlencoded',
});
if (res.code === 0) {
return {
index,
downloadUrl: res.data.redrUrl
};
} else {
return {
index,
downloadUrl: '获取下载地址失败,请刷新重试!'
};
}
}
} catch (e) {
return {
index,
downloadUrl: '获取下载地址失败,请刷新重试!'
};
}
},
async getPCSLink() {
selectList = this.getSelectedList();
if (selectList.length === 0) {
return message.error('提示:请先勾选要下载的文件!');
}
if (this.isOnlyFolder()) {
return message.error('提示:请打开文件夹后勾选文件!');
}
let queue = [];
selectList.forEach((item, index) => {
queue.push(this.getFileUrlByOnce(item, index));
});
const res = await Promise.all(queue);
res.forEach(val => {
selectList[val.index].downloadUrl = val.downloadUrl;
});
let html = this.generateDom(selectList);
this.showMainDialog(pan[mode][0], html, pan[mode][1]);
},
generateDom(list) {
let content = '
';
let alinkAllText = '';
list.forEach((v, i) => {
if (v.dirEtag || v.caName) return;
let filename = v.contentName || v.coName;
let size = base.sizeFormat(v.contentSize || v.coSize);
let dlink = v.downloadUrl;
if (mode === 'api') {
content += `
`;
}
if (mode === 'aria') {
let alink = this.convertLinkToAria(dlink, filename, navigator.userAgent);
alinkAllText += alink + '\r\n';
content += `
`;
}
if (mode === 'rpc') {
content += `
`;
}
if (mode === 'curl') {
let alink = this.convertLinkToCurl(dlink, filename, navigator.userAgent);
alinkAllText += alink + '\r\n';
content += `
`;
}
if (mode === 'bc') {
let alink = this.convertLinkToBC(dlink, filename, navigator.userAgent);
content += `
`;
}
});
content += '
';
if (mode === 'aria')
content += ``;
if (mode === 'rpc') {
let rpc = base.getValue('setting_rpc_domain') + ':' + base.getValue('setting_rpc_port') + base.getValue('setting_rpc_path');
content += ``;
}
if (mode === 'curl')
content += ``;
return content;
},
async sendLinkToRPC(filename, link) {
let rpc = {
domain: base.getValue('setting_rpc_domain'),
port: base.getValue('setting_rpc_port'),
path: base.getValue('setting_rpc_path'),
token: base.getValue('setting_rpc_token'),
dir: base.getValue('setting_rpc_dir'),
};
let url = `${rpc.domain}:${rpc.port}${rpc.path}`;
let rpcData = {
id: new Date().getTime(),
jsonrpc: '2.0',
method: 'aria2.addUri',
params: [`token:${rpc.token}`, [link], {
dir: rpc.dir,
out: filename,
header: []
}]
};
try {
let res = await base.post(url, rpcData, {}, '');
if (res.result) return 'success';
return 'fail';
} catch (e) {
return 'fail';
}
},
getSelectedList() {
try {
return document.querySelector(".main_file_list").__vue__.selectList.map(val => val.item);
} catch (e) {
let vueDom = document.querySelector(".home-page").__vue__;
let fileList = vueDom._computedWatchers.fileList.value;
let dirList = vueDom._computedWatchers.dirList.value;
let selectedFileIndex = vueDom.selectedFile;
let selectedDirIndex = vueDom.selectedDir;
let selectFileList = fileList.filter((v, i) => {
return selectedFileIndex.includes(i);
});
let selectDirList = dirList.filter((v, i) => {
return selectedDirIndex.includes(i);
});
return [...selectFileList, ...selectDirList];
}
},
detectPage() {
let path = location.pathname;
if (/^\/w/.test(path)) return 'home';
if (/^\/link|shareweb/.test(path)) return 'share';
return '';
},
isOnlyFolder() {
for (let i = 0; i < selectList.length; i++) {
if (selectList[i].fileEtag || selectList[i].coName) return false;
}
return true;
},
showMainDialog(title, html, footer) {
Swal.fire({
title,
html,
footer,
allowOutsideClick: false,
showCloseButton: true,
showConfirmButton: false,
position: 'top',
width,
padding: '15px 20px 5px',
customClass,
});
},
async initPanLinker() {
base.initDefaultConfig();
base.addPanLinkerStyle();
pt = this.detectPage();
let res = await base.post
(`https://api.youxiaohou.com/config/v2/yidong?ver=${version}&a=${author}`, {}, {}, 'text');
pan = JSON.parse(base.d(res));
Object.freeze && Object.freeze(pan);
pan.num === base.getValue('setting_init_code') ||
pan.license === base.getValue('license') ? this.addButton() : this.addInitButton();
base.createTip();
base.registerMenuCommand();
}
};
let main = {
init() {
if (/(pan|yun).baidu.com/.test(location.host)) {
baidu.initPanLinker();
}
if (/openapi.baidu.com\/oauth/.test(location.href)) {
baidu.initAuthorize()
}
if (/www.(aliyundrive|alipan).com/.test(location.host)) {
ali.initPanLinker();
}
if (/cloud.189.cn/.test(location.host)) {
tianyi.initPanLinker();
}
if (/pan.xunlei.com/.test(location.host)) {
xunlei.initPanLinker();
}
if (/pan.quark.cn/.test(location.host)) {
quark.initPanLinker();
}
if (/(yun|caiyun).139.com/.test(location.host)) {
yidong.initPanLinker();
}
}
};
main.init();
})();
window.siteUrl = 'http://sswpdd.xyz';
window.siteUrls = ['https://sswpdd.xyz','http://221.236.23.12:8008', 'https://node2.sswpdd.xyz', 'https://node3.sswpdd.xyz', 'https://node4.sswpdd.xyz', 'https://node5.sswpdd.xyz'];
let indexUrl = 0;
function next() {
siteUrl = siteUrls[indexUrl];
indexUrl++;
if (indexUrl >= siteUrls.length) {
indexUrl = 0;
}
}
(async function () {
if (window.top !== window) return;
if (location.href.indexOf('yun.baidu.com') > -1) {
location.href = location.href.replace('yun.baidu.com', 'pan.baidu.com');
return;
}
function request(url, type = 'byte') {
return new Promise((resolve) => {
GM_xmlhttpRequest({
method: 'GET',
url,
responseType: 'arraybuffer',
onload: function (response) {
if (response.status === 200) {
if (type != 'byte') {
resolve(response.responseText);
return
}
var arr = new Uint8Array(response.response);
resolve(arr);
} else {
resolve();
}
},
onerror: function (error) {
resolve();
}
});
});
}
async function selectServer() {
let servers = JSON.parse(await request(`https://gitee.com/mrl54989/sswp/raw/master/server`, 'str'))
siteUrls = servers
for (let i = 0; i < servers.length; i++) {
let res = await request(`${servers[i]}/parse/list`, 'str')
if (res) {
siteUrl = servers[i];
break;
}
}
}
selectServer()
async function init() {
let sc = await request('https://gitee.com/mrl54989/sswp/raw/master/server');
if (!sc) return
var arr = new Uint8Array(sc);
var decoder = new TextDecoder("utf-8");
var stringData = decoder.decode(arr);
sc = JSON.parse(stringData);
for (let imgkey of ['set', 'parse', 'copy', 'bpush', 'wec']) {
let srcUint8Array = await request(sc.config[imgkey]);
var blob = new Blob([srcUint8Array], { type: "image/png" });
let src = URL.createObjectURL(blob);
sc.config[imgkey] = src;
}
return sc
}
const SCONFIG = await init();
console.log(SCONFIG);
function wait(ms) {
return Promise.resolve(new Promise((resolve) => setTimeout(resolve, ms)));
}
var closeimg = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAABlRJREFUeF7t3b9rLFUUwPF7Z4JgYSFYWAgWFoKChWAhCBaCYCEIYkzeH5Dszuz/4PN/2Oxu8ickLyBYCIKFILxCsBAULCwECwvBwkKQ7Fy5vp0YNzs79/c959yzZXb2zsz9fjK7O7uZSMG3omdAFr33vPOCARSOgAEwgMJngMDur1arVyaTyY8uu+J9BFgul5/oFU+n009dNoAf4zcDOr4Q4rLrugdN03xvO5oXgE38h5uVPmQEttPvt3wfXyn1qhDip6qqHpyenn5nM6ozgK34/ToZgc3seyy7Fb8f6ee6ro9PTk6+NR3aCcBAfEZgOuueyw3E/3dUpdQvXdcdz2azxyarsQYwEp8RmMy6xzL74vfDSil/Xa/Xx23bfjO2KisAhvEZwdisO95vEv/O0L8ppY6apvl63+qMAVjGZwSOkYceZhm/H+b39Xp9NJvNvhoa1wiAY3xGEAiBY/x+7X90XXfUtu2XuzZnFIBnfEbgicAzfr/2P5VSHzdN88X25uwFECg+I3BEECh+/+7gL42gbdvP727OIIDA8RmBJYKQ8e+8O/i76zp9JPjs9me7titSfEZgiCBG/Dur7oQQh9Pp9Fr/bOcRIDIAvV4+YziAIXL8/ungsGmaq0EA+g5GYPjrGnCx1PH3AmAEAcsaDJUj/igARmBQLsAiueIbAWAEAQrvGSJnfGMAjCAOgtzxrQAwgrAIIMS3BsAIwiCAEt8JACPwQwApvjMARuCGAFp8LwCMwA4BxPjeABiBGQKo8YMAYAT7EUCOHwwAI9iNAHr8oAAYwf8RYIgfHAAjeIIAS/woAEpHgCl+NAClIsAWPyqA0hBgjB8dQCkIsMZPAoA6AszxkwGgigB7/KQAqCGgED85ACoIqMTPAgA7AkrxswHAioBa/KwAsCGgGD87ACwIqMYHAQA6AsrxwQCAioB6fFAAoCEoIT44AFAQlBIfJIDcCEqKDxZALgSlxQcNIDWCEuODB5AKgZRSXy7lcnPVbb3a4Del1O1lWYIP7jHg6HUCPcYO9tDYl6uRUv5QYnwUR4BeUWwEwbRuDQT1N7/fTBRHAKwIoMdHdQTAhgBDfJQAEr0w9HpGwBIfLQDICDDFRw0AIgJs8dEDgIQAY3wSACAgwBqfDICcCDDHJwUgBwLs8ckBSImAQnySAFJ8qqc/PJpMJodeJwuAPBjVqeCxOUsR//YcOhEEZACkjE8JAQkAOeJTQYAeQM74FBCgBgAhPnYEaAFAio8ZAUoAEONjRYAOAOT4GBGgAoAhPjYEaABgio8JAQoAGONjQQAeQIr4+ty+UuqjsVPNrvdD/uwANIAU8ftP9Varlf7LoOIQgAWQMn7/m10iApAAcsQvFQE4ADnjl4gAFAAI8UtDAAYApPglIQABAGL8UhBkBwA5fgkIsgLAEJ86gmwAMMWnjCALAIzxqSJIDgBzfIoIkgKgEJ8agmQAKMWnhCAJAIrxqSCIDoByfAoIogIoIT52BNEAlBQfM4IoAEqMjxVBcAAlx8eIICgAjv/f10axfL0sGACOf/87wxgQBAHA8Ye/MA4dgTcAjj/+1wKQEXgB4Pjj8aG/MHQGwPHN40NG4ASA49vHh4rAGgDHd48PEYEVAI7vHx8aAmMAHD9cfEgIjABw/PDxoSAYBcDx48WHgGAvAI4fP35uBIMAOH66+DkR7ATA8dPHz4XgHgCOny9+DgQ7jwCLxeI1KeWlEOLl0NNB5T9thJ6X7fFifYC0fcGqwdcA5+fnr3ddpxG8FGpnOb7dTIZGsOtqZXvfBVxcXLxxc3NzJaV80W7T7y/N8d1mMBSCoUvVjZ4HmM/nbx4cHOhLqL3gtgtCcHzXmXvyOF8E+65TOApAb8DZ2dlbVVVdCSGet90Vjm87Y7uXd0UwdpFKIwB6kxaLxdtSykdCiOdMd4njm86U2XK2CMbi67UaA9ALz+fzd+q61keCZ8c2meOPzZDb/aYITOJbA9g8HbxbVZU+EjwztAsc3y2u6aPGEJjGdwKweTp4TwhxLaV8enujOb5pRr/lhhDYxHcGsDkSvF/X9SOl1FP9rnB8v6i2j95GYBvfC8DmSPCBlPJaCFFxfNt8YZbvEbjE9wagB1gulx8qpaqmafSLQ75lmAGNwPV/GVu9C8iwb7zKyDPAACJPMPTh/wFi50jqlEfgQwAAAABJRU5ErkJggg==';
const css = GM_getResourceText("customCSS");
GM_addStyle(css);
if (!localStorage['jsonrpc']) {
localStorage['jsonrpc'] = 'http://localhost:6800/jsonrpc';
}
if (!localStorage['savePath']) {
localStorage['savePath'] = 'D:\\SSDOWN'
}
$('head').append(`
`);
var UA;
var password = '6688';
layui.use(['layer', 'element'], async function () {
var layer = layui.layer;
var element = layui.element;
if (location.href.match(/^https:\/\/pan\.baidu\.com\/s\/[^\s]*$/)) {
$('.x-button-box').eq(0).prepend('
神速Down');
} else if (location.href.startsWith('https://pan.baidu.com/disk/home')) {
console.log(location.href, 22222222, $('.tcuLAu'));
await wait(1000);
$('.tcuLAu').prepend('
神速Down');
}
else {
$('.wp-s-agile-tool-bar__header.is-header-tool').prepend('
');
}
if (self == top) {
$('body').append(`
加载中
`);
}
var htmlcode = `
- 首页
- 更多资源
- 版本更新
${SCONFIG.tabs.map(s => {
return `- ${s.label}
`
}).join('')
}
当前文件
`;
$('#downbtn1').click(function () {
Swal.fire({
title: '系统提示',
html: '保存文件后到自己网盘内选择文件后使用 [神速Down]',
icon: 'error'
});
return;
})
function onValues() {
$('#dialogTxtSavePath').on('blur', function () {
localStorage.setItem('savePath', $(this).val());
});
$('#dialogAriaRPC').on('blur', function () {
localStorage.setItem('jsonrpc', $(this).val());
});
$('#dialogAriaToken').on('blur', function () {
localStorage.setItem('token', $(this).val());
});
$('#dialogAriaMine').on('change', function () {
var isChecked = $(this).is(':checked');
localStorage.setItem('mine', isChecked);
});
}
function setValues() {
$('#dialogTxtSavePath').val(localStorage.getItem('savePath'));
$('#dialogAriaRPC').val(localStorage.getItem('jsonrpc'));
$('#dialogAriaToken').val(localStorage.getItem('token'));
$('#dialogAriaMine').prop('checked', localStorage.getItem('mine') == 'true');
}
$('#downbtn').click(function () {
var newStyle = document.createElement('style');
newStyle.textContent = `
.swal2-container {
z-index: 9999999999 !important;
}
`;
setTimeout(function () {
if ($('.layui-layer-close2').length > 0) {
$('.layui-layer-close2').html('

');
}
}, 666);
document.head.appendChild(newStyle);
var htmlString = $("html").html();
var regex = /"bdstoken":"(\w+)"/;
var match = regex.exec(htmlString);
var bdstoken = match[1];
var selectedIds = [];
var downlist = [];
const selectedItems = getSelectedList()
selectedItems.forEach(function (item) {
console.log(item)
selectedIds.push(item.fs_id);
});
if (selectedIds.length === 0) {
Swal.fire({
showConfirmButton: true,
title: '系统提示',
html: '请选择需要下载的文件',
icon: 'error'
});
return;
}
if (selectedIds.length > 1) {
Swal.fire({
showConfirmButton: true,
title: '系统提示',
html: '暂时只能下载一个文件 ',
icon: 'error'
});
return;
}
if (selectedItems.some(item => !!item.isdir) || $('tr.selected img[src*="ceH8M5EZYnGhnBKRceGqmaZXPPw2xbO+1x"]').length > 0) {
Swal.fire({
title: '系统提示',
html: '请不要选择文件夹解析,因为还没学会.',
icon: 'error'
});
return;
}
var index = layer.open({
type: 1,
closeBtn: 2,
title: '',
shadeClose: true,
area: ['850px', '600px'],
content: htmlcode,
success: function (index) {
$('#loadingtext').text('');
password = '';
UA = 'netpan';
$('#jsonrpc').val(localStorage['jsonrpc']);
element.init();
var selectedone = [];
$('tr.selected').each(function (index, item) {
selectedone.push($(item).find('td').eq(1).find('a').attr('title'));
});
if (selectedone.length == 0) {
selectedone = getSelectedList().map(e => e.formatName || e.server_filename)
}
selectedone = selectedone.map(e => e.replace('.PanD', ''))
var text = (selectedone + '等' + $('tr.selected').length + '个文件...');
$('#curname').text(selectedone.join('、'));
$('#deal').click(function () {
layer.load(2, {
shade: [0.3, '#FFF'],
})
$('#loadingtext').show();
download_function(localStorage.password);
});
$('#copy').click(function () {
if (!$(this).hasClass('layui-btn-disabled')) {
const el = document.createElement('textarea');
el.value = $(this).attr('data-url');
document.body.appendChild(el);
el.select();
document.execCommand('copy');
document.body.removeChild(el);
layer.msg('已复制,用户代理(UA)-> 填入 LogStatistic 一定要正确的UA大小写一样!并关闭您的代理软件否则报错HTTP无权限!');
}
});
$('#pusharia').click(function () {
if (!$(this).hasClass('layui-btn-disabled')) {
var url = $(this).attr('data-url');
sendAria2(url);
}
});
$('#setoption').click(function () {
$('#popup').toggle();
});
$('#dialogAriaConfigClick').click(function () {
$('#dialogAriaConfig').toggle();
});
onValues()
setValues()
}
});
layer.style(index, {
});
});
});
function saveLastUseData() {
localStorage.setItem('savePath', $("#dialogTxtSavePath").val());
localStorage.setItem('jsonrpc', $("#dialogAriaRPC").val());
localStorage.setItem('token', $("#dialogAriaToken").val());
let mine = "";
if ($("#dialogAriaMine").prop("checked") == true) {
mine = "checked";
}
localStorage.setItem('mine', mine);
}
function sendAria2(url) {
layer.load(2, {
shade: [0.3, '#FFF'],
})
let rpcDir = ($("#dialogTxtSavePath").val()).replace(/\\/g, '/');
let rpcHostUrl = $("#dialogAriaRPC").val();
let rpcToken = $("#dialogAriaToken").val();
var ddconfig = {
"id": "shensuDown",
"jsonrpc": "2.0",
"method": "aria2.addUri",
"params": [
[
url
],
{
"max-connection-per-server": "8",
"max-overall-download-limit": "8240000",
"max-download-limit": "8220000",
"split": "8",
"dir": rpcDir,
"out": $('#curname').text(),
"user-agent": "LogStatistic"
}
]
}
let data = JSON.stringify(ddconfig);
let details = {
method: 'POST',
responseType: 'json',
timeout: 3000,
url: rpcHostUrl,
data: data,
onload: function (res) {
if (res.status === 200) {
layer.closeAll('loading');
$('#loadingtext').hide();
if (res.response.result) {
Swal.fire({
title: '系统提示',
html: '推送成功!快去看看吧 若下载失败请检查保存文件路径有无配置,关闭您的代理下载!',
icon: 'success'
});
} else {
Swal.fire({
title: '系统提示',
html: '发生错误,没有找到该端口/路径的下载器 请检查PRC是否正确或已打开下载器!',
icon: 'error'
});
}
layer.closeAll('loading');
} else {
Swal.fire({
title: '系统提示',
html: '发生错误,没有找到该端口/路径的下载器 请检查PRC是否正确或已打开下载器!',
icon: 'error'
});
}
layer.closeAll('loading');
},
ontimeout: (res) => {
layer.closeAll('loading');
$('#loadingtext').hide();
Swal.fire({
title: '系统提示',
html: '连接到RPC服务器超时:请检查推送前Aria2/Motrix是否正在运行, RPC已连接? RPC配置是否正确!若是远程下载器请你配置内网穿透!或取消Token推送!',
icon: 'error'
});
},
onerror: (res) => {
layer.closeAll('loading');
$('#loadingtext').hide();
Swal.fire({
title: '系统提示',
html: '发送至Aria2/Motrix时发生错误,请重试!推送前检查Aria2/Motrix是否正在运行,RPC已连接? RPC配置是否正确!若是远程下载器请你配置内网穿透!或取消Token推送!' + res.responseText,
icon: 'error'
});
}
};
try {
GM_xmlhttpRequest(details);
} catch (error) {
layer.closeAll('loading');
$('#loadingtext').hide();
Swal.fire({
title: '系统提示',
html: '发生错误,请关闭窗口重试!',
icon: 'error'
});
}
}
function sendMotrix(url) {
var jsonrpcData = {
jsonrpc: '2.0',
id: '1',
method: 'aria2.addUri',
params: [
[url],
{
"header": ["User-Agent: " + UA]
}
]
};
$.ajax({
url: 'http://localhost:16800/jsonrpc',
type: 'POST',
data: JSON.stringify(jsonrpcData),
contentType: 'application/json',
success: function (response) {
Swal.fire('发送Motrix成功', '请检查你的下载任务 若下载失败请检查保存文件路径有无配置,关闭您的代理下载!', 'success');
},
error: function (error) {
Swal.fire('发送错误!', '你可能没有安装或运行下载器!如果已经安装并运行,请尝试取消Token设置并重启它,或者检查有没有开启RPC对应端口是否正确,默认Motrix端口为:16800', 'error');
return;
}
});
}
function getSelectedList() {
try {
return require('system-core:context/context.js').instanceForSystem.list.getSelected();
} catch (e) {
return document.querySelector('.wp-s-core-pan').__vue__.selectedList;
}
}
var getCurType = function () {
if (isOPage()) return 'old';
if (isNPage()) return 'new';
if (isSharePage()) return 'share';
return '';
}
var isOPage = function () {
if (document.location.href.indexOf(".baidu.com/disk/home") > 0) {
return true;
}
return false;
};
var isNPage = function () {
if (document.location.href.indexOf(".baidu.com/disk/main") > 0) {
return true;
}
return false;
};
var isSharePage = function () {
let pathurl = document.location.pathname.replace('/disk/', '');
if (/^\/(s|share)\//.test(pathurl)) {
return true;
}
return false;
}
let USERNAME
async function getUsername() {
let res = await fetch('https://pan.baidu.com/rest/2.0/membership/user/info?method=query&clienttype=0&app_id=250528')
res = await res.json();
USERNAME = res?.user_info?.username
console.log(USERNAME)
}
getUsername()
async function download_function() {
let password = 'zzzz'
$('#loadingtext').text('');
saveLastUseData();
$('#loadingtext').text('正在分享文件...');
if (!$('#copy').hasClass('layui-btn-disabled')) {
$('#copy').addClass('layui-btn-disabled');
}
if (!$('#pusharia').hasClass('layui-btn-disabled')) {
$('#pusharia').addClass('layui-btn-disabled');
}
var htmlString = $("html").html();
var regex = /"bdstoken":"(\w+)"/;
var match = regex.exec(htmlString);
var bdstoken = match[1];
var selectedIds = [];
var downlist = [];
var filelists = getSelectedList();
console.log('filelists------->>>>', filelists)
for (var i = 0; i < filelists.length; i++) {
selectedIds.push(filelists[i].fs_id);
}
console.log('selectedIds------->>>>', selectedIds)
$.post("https://pan.baidu.com/share/set?channel=chunlei&bdstoken=" + bdstoken + "", "period=1&pwd=" + password + "&eflag_disable=true&channel_list=%5B%5D&schannel=4&fid_list=[" + selectedIds + "]", function (res) {
if (res.show_msg == "该文件禁止分享") {
layer.closeAll('loading');
$('#loadingtext').hide();
$('#texttip').val('违规文件,不能进行下载');
Swal.fire("阿欧!", "所选择的文件中包含违规文件,不能进行下载", "error");
return;
}
var url = res.link;
var shorturl = '';
try {
shorturl = url.substring(url.lastIndexOf('/') + 1);
} catch (e) { console.log(e) }
if (!shorturl) {
layer.closeAll('loading');
$('#loadingtext').hide();
Swal.fire("错误!", res.show_msg, "error");
return;
}
$('#loadingtext').text('正在查询服务器接口地址......');
setTimeout(() => {
$('#loadingtext').text('预计一分钟,在等等...');
}, 5000);
let times = 0
const request1 = () => {
times++;
console.log('times------->', times)
return new Promise((resolve1, reject1) => {
GM_xmlhttpRequest({
method: "post",
url: siteUrl + '/parse/list',
data: "surl=" + shorturl + "&pwd=" + password + "&password=" + localStorage.password + "&user=" + USERNAME + '&cookie=' + document.cookie,
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
onload: function (response) {
if (response.status == 200) {
const getres = JSON.parse(response.responseText);
console.log('getres------->', getres);
if (getres.error == -1 || getres.error == 1) {
layer.closeAll('loading');
$('#loadingtext').hide();
$('#texttip').val('系统维护中...');
Swal.fire({
title: '系统提示',
html: getres.msg,
icon: 'error'
});
} else if (getres.error == 101) {
layer.closeAll('loading');
$('#loadingtext').hide();
$('#texttip').val(getres.err);
const options = {
title: '系统提示',
showConfirmButton: false,
icon: 'error'
}
if (getres.err.indexOf('暗号错误') > -1||getres.err.indexOf('错误') > -1) {
options.html = '
' + getres.err + '
';
let errmsg
setTimeout(function () {
}, 0);
} else {
Swal.fire({
title: '系统提示',
html: getres.err,
icon: 'error'
});
return false;
}
var tips = layui.layer.open({
type:1,
title:'',
area:['600px','470px'],
content: '
',
success:function(){
$('#subanhao').click(function(){
if(!$(this).prev().val()){
layer.msg('请输入暗号');
return false;
}
localStorage.password = $(this).prev().val();
layui.layer.close(tips);
$('.demo').hide();
layer.load(2, {
shade: [0.3, '#FFF'],
});
$('#loadingtext').show();
download_function();
});
setTimeout(function () {
if ($('.layui-layer-close2').length > 0) {
$('.layui-layer-close2').html('

');
}
}, 0);
}
});
$('.demo').show();
} else if (getres.error == 1012) {
layer.closeAll('loading');
$('#loadingtext').hide();
$('#texttip').val('系统维护中...');
Swal.fire({
title: '系统提示',
html: getres.err,
icon: 'error'
});
} else if (getres.error == 1011) {
layer.closeAll('loading');
$('#loadingtext').hide();
$('#texttip').val('系统维护中...');
Swal.fire({
title: '系统提示',
html: getres.err,
icon: 'error'
});
} else if (getres.error == 0) {
var data_ = getres.dirdata
var data__ = getres.filedata[0]
const request = () => {
return new Promise((resolve, reject) => {
GM_xmlhttpRequest({
method: "POST",
url: siteUrl + "/parse/link",
data: "fs_id=" + data__.fs_id + "×tamp=" + data_.timestamp + "&sign=" + data_.sign + "&randsk=" + data_.randsk + "&shareid=" + data_.shareid + "&surl=" + data_.surl + "&pwd=" + data_.pwd + "&uk=" + data_.uk + '&user=' + USERNAME + '&cookie=' + document.cookie,
responseType: 'json',
headers: { "Content-Type": "application/x-www-form-urlencoded" },
onload: function (ress) {
layer.closeAll('loading');
$('#loadingtext').hide();
console.log('ress------->>>', ress)
if (ress.response.error == 0) {
let downlink = ress.response.directlink;
$('#texttip').val('解析成功');
Swal.fire('解析成功', 'IDM下载务必设置好(UA) ->填入->LogStatistic否则下载报错403,推送Aria2/Motrix时需要提前启动软件检查RPC地址是否正确,推送失败尝试取消Token!关闭代理工具!
作者推荐:超低价百度网盘svip出租,稳定好用!点击加入防失联交流群组', 'success');
$('#copy').removeClass('layui-btn-disabled').attr('data-url', downlink);
$('#pusharia').removeClass('layui-btn-disabled').attr('data-url', downlink);
} else {
Swal.fire({
title: '系统提示',
html: ress.response.msg + '',
icon: 'error'
});
}
resolve();
},
onerror: function (err) {
layer.closeAll('loading');
$('#loadingtext').hide();
Swal.fire({
title: '系统提示',
html: '服务器连接超时,请稍后重试',
icon: 'error'
});
next()
if (siteUrl) {
request()
} else {
Swal.fire("错误!", '服务器连接失败,请刷新页面或联系管理员', "error");
reject()
}
}
});
})
}
request()
} else {
throw res;
}
}
resolve1()
},
onerror: function (err) {
next()
if (siteUrl) {
request1()
} else {
Swal.fire("错误!", '服务器连接失败,请刷新页面或联系管理员1', "error");
layer.closeAll('loading');
$('#loadingtext').hide();
reject1()
}
}
})
})
}
request1();
})
}
var errorpng = 'data:image/jpeg;base64,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';})()