Skip to content
This repository was archived by the owner on Mar 16, 2023. It is now read-only.

Commit 92624e5

Browse files
committed
v3.8.1
*优化转存方案 *下线遍历文件夹
1 parent dd0c9f3 commit 92624e5

1 file changed

Lines changed: 174 additions & 24 deletions

File tree

115转存助手ui优化版.user.js

Lines changed: 174 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// ==UserScript==
22
// @name 115转存助手ui优化版
33
// @name:zh 115转存助手ui优化版
4-
// @description 2022.08.16 更新,115转存助手ui优化版 v3.7 (143.2022.0816.1)(based on Fake115Upload 1.4.3 @T3rry)
4+
// @description 2022.08.18 更新,115转存助手ui优化版 v3.8.1 (143.2022.0818.2)(based on Fake115Upload 1.4.3 @T3rry)
55
// @author Never4Ever
66
// @namespace Fake115Upload@Never4Ever
7-
// @version 143.2022.0816.1
7+
// @version 143.2022.0818.2
88
// @match https://115.com/*
99
// @exclude https://115.com/s/*
1010

@@ -1782,11 +1782,58 @@ function waitForKeyElements(
17821782
(function () {
17831783
'use strict';
17841784

1785+
//types to change
1786+
//类型匹配:
1787+
//'c':['a','b'] 代表file.a, file.b中变成file.a.c, file.b.c
1788+
const FileTypes={
1789+
'tiff':['jpg','jpeg','png','gif','bmp','webp','tiff','tif','ico','svg','svgz','raw','cr2','crw','dcr','dng','erf','fff','gpr','iiq','k25','kdc','mdc','mef','mos','mrw','nef','nrw','orf','pef','ptx','pxn','r3d','raf','raw','rw2','rwl','rwz','sr2','srf','srw','x3f','xbm','xif','xpm','xwd'],
1790+
'iso':['mp4','webm','ogg','ogv','avi','mov','wmv','flv','mkv','mpeg','mpg','m4v','3gp','3g2','ts','m2v','m2ts','rmvb'],
1791+
'txt':['txt']
1792+
}
1793+
1794+
1795+
function changeType(originType){
1796+
let extension=originType.toLowerCase();
1797+
let changedType='';
1798+
for(let type in FileTypes){
1799+
if(FileTypes[type].includes(extension)){
1800+
changedType=type;
1801+
break;
1802+
}
1803+
}
1804+
//if(changedType==''){
1805+
// changedType=`${originType}`;
1806+
//}
1807+
1808+
return changedType;
1809+
}
1810+
1811+
function changeNameBack(fileName){
1812+
let name=fileName.toLowerCase();
1813+
let originName=fileName;
1814+
console.log(`Name: ${fileName}`)
1815+
for(let type in FileTypes){
1816+
for(let ext of FileTypes[type]){
1817+
if(name.endsWith(`.${ext}.${type}`)){
1818+
console.log(`addedType:${type}`)
1819+
console.log(type.length)
1820+
originName=originName.slice(0,-(type.length+1));
1821+
console.log(`originName: ${originName}`)
1822+
return originName;
1823+
}
1824+
}
1825+
}
1826+
console.log(`originName: ${originName}`)
1827+
return originName;
1828+
}
1829+
1830+
1831+
17851832
//版本信息
17861833
const TIPS = {
1787-
CurrentVersion: "143.2022.0816.1",
1788-
LastUpdateDate: "2022.08.16",
1789-
VersionTips: "115转存助手ui优化版 v3.7",
1834+
CurrentVersion: "143.2022.0818.2",
1835+
LastUpdateDate: "2022.08.18",
1836+
VersionTips: "115转存助手ui优化版 v3.8.1",
17901837
UpdateUrl: "https://github.com/Nerver4Ever/SevenSha1UIAdvancedHelper",
17911838
Sha1FileInputDetails: "",
17921839
};
@@ -1963,12 +2010,12 @@ function waitForKeyElements(
19632010
type: 'checkbox',
19642011
default: true,
19652012
},
1966-
advancedRename: {
1967-
label: '在目录的悬浮工具条处显示“遍历文件夹”选项',
1968-
labelPos: 'right',
1969-
type: 'checkbox',
1970-
default: false,
1971-
},
2013+
//advancedRename: {
2014+
// label: '在目录的悬浮工具条处显示“遍历文件夹”选项',
2015+
// labelPos: 'right',
2016+
// type: 'checkbox',
2017+
// default: false,
2018+
//},
19722019
autoUseSeparator: {
19732020
label: '自动给文件名添加分隔符进行上传,以防文件名违规',
19742021
labelPos: 'right',
@@ -2106,6 +2153,16 @@ function waitForKeyElements(
21062153
console.log("set uiddiv");
21072154
}
21082155

2156+
waitForKeyElements('.list-contents > ul > li[ico="tiff"]', changeImageExtensionInHtml);
2157+
2158+
function changeImageExtensionInHtml(node){
2159+
let title=$(node).attr("title");
2160+
//$(node).attr("title",`${title}.pic`);
2161+
let $a= $(node).find(`a[title="${title}"]`)
2162+
$a.attr("title",`${title}.pic`);
2163+
//(function(){ $(".list-contents > ul > li").each(function(i, item) {if($(this).attr('title').substr(-1) == '.'){$(this).attr('iv',1);}});})
2164+
}
2165+
21092166
//#region 20201230新的提取api相关
21102167
var pub_key = '-----BEGIN PUBLIC KEY-----\
21112168
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDR3rWmeYnRClwLBB0Rq0dlm8Mr\
@@ -2350,7 +2407,7 @@ function waitForKeyElements(
23502407
FILEDOWNLOAD: 12,
23512408
MSGERROR: 13,
23522409
JSINFO: 14,
2353-
FATALERRORUPLOAD:15
2410+
FATALERRORUPLOAD: 15
23542411
};
23552412

23562413
function createMessage(messageType, msg, id) {
@@ -2524,7 +2581,7 @@ function waitForKeyElements(
25242581

25252582
}
25262583
});
2527-
} else if(message.messageType == MessageType.FATALERRORUPLOAD){
2584+
} else if (message.messageType == MessageType.FATALERRORUPLOAD) {
25282585
$itemContent.html(message.msg);
25292586
Swal.getTitle().textContent = "上传遇到致命错误,已主动停止!";
25302587
Swal.getCancelButton().style.display = "none";
@@ -2873,6 +2930,28 @@ function waitForKeyElements(
28732930

28742931
}
28752932

2933+
async function renameFile(id, name) {
2934+
let data = {
2935+
fid: id,
2936+
file_name: name
2937+
};
2938+
let renameUrl = "https://webapi.115.com/files/edit";
2939+
const result = await $.ajax({
2940+
type: 'POST',
2941+
url: renameUrl,
2942+
headers: {
2943+
'Content-Type': 'application/x-www-form-urlencoded',
2944+
//'Origin': 'https://115.com'
2945+
},
2946+
dataType: "json",
2947+
xhrFields: {
2948+
withCredentials: true
2949+
},
2950+
data: data
2951+
});
2952+
return result;
2953+
}
2954+
28762955
//批量重命名 fileArray [{id:id,name:ddd}]
28772956
//{"state":true,"error":"","errno":0,"data":{"2187365717527997108":"14214.mp4"}}
28782957
async function renameFiles(fileArray) {
@@ -3238,10 +3317,11 @@ function waitForKeyElements(
32383317

32393318
function replaceDot(name) {
32403319
return name.replace(/\./g, "_");
3320+
return name;
32413321
}
32423322
//windows平台上限制的字符:/\|":*?<> 其他平台比windows宽泛一些
32433323
function repalceValidatedName(name) {
3244-
return name.replace(/</g, '[')
3324+
let newName= name.replace(/</g, '[')
32453325
.replace(/>/g, ']')
32463326
.replace(/\|/g, '_')
32473327
.replace(/:/g, '_')
@@ -3250,6 +3330,11 @@ function waitForKeyElements(
32503330
.replace(/\*/g, '_')
32513331
.replace(/"/g, '\'')
32523332
.replace(/\?/g, '_');
3333+
3334+
if(newName.startsWith(".")){
3335+
newName=newName.slice(1);
3336+
}
3337+
return newName;
32533338
}
32543339
//格式化sha1 链接
32553340
//return type: {state:succeed,msg:""}
@@ -3258,6 +3343,8 @@ function waitForKeyElements(
32583343
function convertToSha1Link(fileItem, isSimpleFormat) {
32593344
var succeed = false;
32603345
var msg = "格式生成失败!";
3346+
//3.8
3347+
fileItem.name=changeNameBack(fileItem.name);
32613348
if (fileItem.name && fileItem.size && fileItem.sha1 && fileItem.preid) {
32623349
var sha1Link = "115://" + repalceValidatedName(fileItem.name) + "|" + fileItem.size + "|" + fileItem.sha1 + "|" + fileItem.preid;
32633350
if (!isSimpleFormat) {
@@ -3541,7 +3628,17 @@ function waitForKeyElements(
35413628
if (!fLine) continue;
35423629
let r = convertFromSha1Link(fLine);
35433630
if (r.state) {
3544-
//let nameStrings = r.fileItem.name.split(".");
3631+
let nameStrings = r.fileItem.name.split(".");
3632+
let name= r.fileItem.name;
3633+
if(nameStrings.length>1){
3634+
let extension = nameStrings.pop();
3635+
r.fileItem.extension = extension;
3636+
r.fileItem.formatedExtension=changeType(extension);
3637+
console.log(`formatedExtension:${r.fileItem.formatedExtension}`)
3638+
}
3639+
else{
3640+
name = r.fileItem.name;
3641+
}
35453642
//let extension = nameStrings.pop();
35463643
//r.fileItem.extension = extension;
35473644
//let formatedExtension=reverseString(extension);
@@ -3550,7 +3647,15 @@ function waitForKeyElements(
35503647
//使用emoutils.js库来分割,带有emoji的文件名
35513648
//let fileName = emojiUtils.toArray(nameStrings.join('.')).map(c => c + nameSeparator).join("").slice(0, -1);
35523649
//r.fileItem.formatedName = fileName + "." + formatedExtension;
3553-
r.fileItem.formatedName = emojiUtils.toArray(replaceDot(r.fileItem.name)).map(c => c + nameSeparator).join("").slice(0, -1);
3650+
if(r.fileItem.formatedExtension&&r.fileItem.formatedExtension!=""){
3651+
r.fileItem.formatedName=emojiUtils.toArray(r.fileItem.name).map(c => c+nameSeparator).join("").slice(0, -1)+"."+r.fileItem.formatedExtension;
3652+
}else if(r.fileItem.extension){
3653+
r.fileItem.formatedName=emojiUtils.toArray(name).map(c => c+nameSeparator).join("").slice(0, -1)+"."+r.fileItem.extension;
3654+
}
3655+
else{
3656+
r.fileItem.formatedName=emojiUtils.toArray(name).map(c => c+nameSeparator).join("").slice(0, -1);
3657+
}
3658+
console.log(`formatedName:${r.fileItem.formatedName}`)
35543659
} else {
35553660
r.fileItem.formatedName = r.fileItem.name;
35563661
}
@@ -3682,7 +3787,7 @@ function waitForKeyElements(
36823787
promisArray.push(r);
36833788

36843789
if (index % workingNumber == 0) {
3685-
await delay(sleepTime*1.5);
3790+
await delay(sleepTime * 1.5);
36863791
}
36873792

36883793
if (index % 128 == 0) {
@@ -3750,10 +3855,53 @@ function waitForKeyElements(
37503855
//name: name.split(separator).join("")+"."+reverseString(ext)
37513856
name: f.name
37523857
};
3858+
3859+
if(f.formatedExtension){
3860+
fo.name=`${f.name}.${f.formatedExtension}`;
3861+
}
3862+
37533863
return fo;
37543864
});
37553865
console.log(selectedFiles)
3756-
let i, j, temporary, chunk = 115;
3866+
3867+
/*
3868+
let renameIndex=1;
3869+
let renameCount=selectedFiles.length;
3870+
for (const sendFile of selectedFiles) {
3871+
console.log(sendFile);
3872+
let t=await renameFile(sendFile.id,sendFile.name);
3873+
console.log(t);
3874+
if(t.state==true){
3875+
resultCallback && resultCallback({
3876+
state: true,
3877+
msg: `${renameIndex}|${renameCount}<br/>重命名${sendFile.name}成功!`
3878+
});
3879+
}
3880+
else{
3881+
resultCallback && resultCallback({
3882+
state: false,
3883+
msg: `${renameIndex}|${renameCount}<br/>重命名${sendFile.name}失败!`
3884+
});
3885+
}
3886+
await delay(300);
3887+
renameIndex++;
3888+
3889+
if (renameIndex % 128 == 0) {
3890+
let seconds = 3;
3891+
for (let i = 0; i < seconds; i++) {
3892+
resultCallback && resultCallback({
3893+
state: true,
3894+
msg: `防止115服务器限制,暂停发包。<br><br>${seconds - i}秒后继续....`
3895+
});
3896+
await delay(1000);
3897+
}
3898+
}
3899+
}
3900+
*/
3901+
3902+
3903+
3904+
let i, j, temporary, chunk = 115;
37573905
for (i = 0, j = selectedFiles.length; i < j; i += chunk) {
37583906
temporary = selectedFiles.slice(i, i + chunk);
37593907
resultCallback && resultCallback({
@@ -3778,6 +3926,8 @@ function waitForKeyElements(
37783926
}
37793927
await delay(sleepTime);
37803928
}
3929+
3930+
37813931

37823932
}
37833933

@@ -3947,23 +4097,23 @@ function waitForKeyElements(
39474097
postSha1Messgae(createMessage(MessageType.SHOWCANCEl));
39484098
console.log(files.length);
39494099
//文件上传
3950-
let hasFatalError= await processUpload(files, uploadConfig.upload.workingNumber, uploadConfig.upload.sleepTime, result => {
4100+
let hasFatalError = await processUpload(files, uploadConfig.upload.workingNumber, uploadConfig.upload.sleepTime, result => {
39514101
if (result.state === true) {
39524102
postSha1Messgae(createMessage(MessageType.PROCESSING, result.msg));
39534103
} else {
39544104
postSha1Messgae(createMessage(MessageType.ERROR, result.msg));
39554105
}
39564106
});
39574107

3958-
if(hasFatalError){
3959-
let msg=`频繁请求,被115限制 (尝试停止操作半小时或者重新登录)<br>\
4108+
if (hasFatalError) {
4109+
let msg = `频繁请求,被115限制 (尝试停止操作半小时或者重新登录)<br>\
39604110
获取最新版,或者遇到问题去此反馈,感谢 !点击-> <a href="${TIPS.UpdateUrl}" target="_blank">${TIPS.VersionTips}</a>`;
39614111
postSha1Messgae(createMessage(MessageType.FATALERRORUPLOAD, msg, newTargetCid));
39624112
return;
39634113
}
3964-
39654114

3966-
4115+
4116+
39674117

39684118
let isTaskCanceled = getTaskCancelFlag();
39694119

@@ -4729,7 +4879,7 @@ function waitForKeyElements(
47294879
jNode[0].style.left = "180px";
47304880
//目录,去除分隔符
47314881
if (pItem.isFolder && GM_config.get(currentConfig.advancedRename)) {
4732-
renameInToolTip(jNode[0], pItem);
4882+
// renameInToolTip(jNode[0], pItem);
47334883
}
47344884

47354885
//add: v3.4 增加设置是否显示 列表模式下获取sha1

0 commit comments

Comments
 (0)