update
This commit is contained in:
1 parent
49e3c26c31
commit
5b359d61bb
1 file changed
+269
-101
+269
-101
@@ -2,8 +2,6 @@ game.import("extension", function (lib, game, ui, get, ai, _status) {
|
|||||||
//重置删除扩展的选择
|
//重置删除扩展的选择
|
||||||
lib.config.extension_喵喵配件_extensionDeleter1 = "1";
|
lib.config.extension_喵喵配件_extensionDeleter1 = "1";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//改自拓展:《在线更新》
|
//改自拓展:《在线更新》
|
||||||
function miaoFetch(url, options = { timeout: 3000 }) {
|
function miaoFetch(url, options = { timeout: 3000 }) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
@@ -34,109 +32,136 @@ game.import("extension", function (lib, game, ui, get, ai, _status) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 检测最快连接到的更新源 */
|
// 更新拓展
|
||||||
// @ts-ignore
|
async function miao_update_extension_js(url, extName){
|
||||||
function getFastestUpdateURLMiao4(
|
// var url = "https://raw.githubusercontent.com/Zioywishing/Noname_Miaoxtension/main/extension.js";
|
||||||
updateURLS = {
|
var text_download = "";
|
||||||
github: "https://raw.githubusercontent.com/Zioywishing/Noname_Miaoxtension/main/extension.js"
|
// var extName = "喵喵喵喵";
|
||||||
},
|
var path = "\\extension\\" + extName + "\\extension.js";
|
||||||
translate = {
|
var time = new Date();
|
||||||
coding: "Coding",
|
var path_bak = path + "." + time.valueOf() + ".bak";
|
||||||
github: "GitHub",
|
var fileName = "extension.js";
|
||||||
// fastgit: 'GitHub镜像',
|
var fileName_bak = fileName + "." + time.valueOf() + ".bak";
|
||||||
// xuanwu: '玄武镜像',
|
try {
|
||||||
URC: "URC"
|
var fec = miaoFetch(url);
|
||||||
}
|
fec.catch(err => reject(err));
|
||||||
) {
|
await fec
|
||||||
// if (typeof updateURLS != "object") throw new TypeError("updateURLS must be an object type");
|
.then(data => {
|
||||||
if (typeof translate != "object") throw new TypeError("translate must be an object type");
|
return data.text();
|
||||||
const promises = [];
|
|
||||||
const keys = Object.keys(updateURLS);
|
|
||||||
keys.forEach(key => {
|
|
||||||
const url = updateURLS[key];
|
|
||||||
const start = new Date().getTime();
|
|
||||||
promises.push(
|
|
||||||
miaoFetch(`${url}?date=${new Date().getTime()}`).then(async response => {
|
|
||||||
try {
|
|
||||||
await response.text();
|
|
||||||
const finish = new Date().getTime() - start;
|
|
||||||
return { key, finish };
|
|
||||||
} catch (e) {
|
|
||||||
return {
|
|
||||||
key,
|
|
||||||
err: new Error(e.message)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
);
|
.then(res => {
|
||||||
});
|
text_download = res;
|
||||||
|
});
|
||||||
/* Promise.allSettled */
|
} catch (e) {
|
||||||
function allSettled(array) {
|
return alert("连接出了问题喵:" + e);
|
||||||
return new Promise(resolve => {
|
|
||||||
let args = Array.prototype.slice.call(array);
|
|
||||||
if (args.length === 0) return resolve([]);
|
|
||||||
let arrCount = args.length;
|
|
||||||
|
|
||||||
function resolvePromise(index, value) {
|
|
||||||
if (typeof value === "object") {
|
|
||||||
let then = value.then;
|
|
||||||
if (typeof then === "function") {
|
|
||||||
then.call(
|
|
||||||
value,
|
|
||||||
function (val) {
|
|
||||||
args[index] = { status: "fulfilled", value: val };
|
|
||||||
if (--arrCount === 0) {
|
|
||||||
resolve(args);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
function (e) {
|
|
||||||
args[index] = { status: "rejected", reason: e };
|
|
||||||
if (--arrCount === 0) {
|
|
||||||
resolve(args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < args.length; i++) {
|
|
||||||
resolvePromise(i, args[i]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
alert("下载成功");
|
||||||
|
//电脑端node.js环境下
|
||||||
|
if (lib.node && lib.node.fs) {
|
||||||
|
path = __dirname + path;
|
||||||
|
path_bak = __dirname + path_bak;
|
||||||
|
// return alert(path)
|
||||||
|
const fs = lib.node.fs;
|
||||||
|
//创建备份文件
|
||||||
|
try {
|
||||||
|
fs.readFile(path, function read(err, data) {
|
||||||
|
if (err) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
if(text_download == data){
|
||||||
|
alert('本地和下载的一模一样喵')
|
||||||
|
}else{
|
||||||
|
fs.appendFile(path_bak, data, function (err) {
|
||||||
|
if (err) throw err;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
return alert("备份时:" + e);
|
||||||
|
}
|
||||||
|
//更新文件
|
||||||
|
try {
|
||||||
|
fs.writeFileSync(path, text_download);
|
||||||
|
} catch (e) {
|
||||||
|
return alert("更新extension.js时:" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//移动端
|
||||||
|
else {
|
||||||
|
|
||||||
return allSettled(promises).then(values => {
|
//将内容数据写入到文件中
|
||||||
const array = values.filter(i => i && !i.reason && !i.value.err);
|
function writeFile(fileEntry, dataObj) {
|
||||||
const errArray = values.filter(i => i && (i.reason || i.value.err));
|
//创建一个写入对象
|
||||||
if (array.length == 0) {
|
fileEntry.createWriter(function (fileWriter) {
|
||||||
alert("更新源连接全部出错");
|
//文件写入成功
|
||||||
return {
|
fileWriter.onwriteend = function () {
|
||||||
success: [],
|
// alert("Successful file read...");
|
||||||
failed: errArray.map(_ => _.value || _.reason)
|
};
|
||||||
};
|
|
||||||
|
//文件写入失败
|
||||||
|
fileWriter.onerror = function (e) {
|
||||||
|
alert("Failed file read: " + e.toString());
|
||||||
|
};
|
||||||
|
|
||||||
|
//写入文件
|
||||||
|
fileWriter.write(dataObj);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
const fastest = array.reduce((previous, next) => {
|
|
||||||
const a = previous.value.finish;
|
|
||||||
const b = next.value.finish;
|
//备份文件
|
||||||
return a > b ? next : previous;
|
game.readFileAsText(
|
||||||
});
|
"extension/" + extName + "/extension.js",
|
||||||
function getTranslate(_) {
|
e => {
|
||||||
const index = values.findIndex(item => item == _);
|
var oldt = e;
|
||||||
return translate[keys[index]];
|
if(text_download == data){
|
||||||
}
|
alert('本地和下载的一模一样喵')
|
||||||
alert(
|
}else{
|
||||||
`最快连接到的更新源是:${getTranslate(fastest) || fastest.value.key}, 用时${fastest.value.finish / 1000}秒${
|
window.resolveLocalFileSystemURL(
|
||||||
errArray.length > 0 ? "\n连接不上的更新源有:" + errArray.map(getTranslate) : ""
|
lib.assetURL + "extension/" + extName,
|
||||||
}`
|
function (root) {
|
||||||
|
root.getFile(
|
||||||
|
fileName_bak,
|
||||||
|
{ create: true },
|
||||||
|
function (fileEntry) {
|
||||||
|
var dataObj = new Blob([oldt], { type: "text/plain" });
|
||||||
|
//写入文件
|
||||||
|
// alert(oldt);
|
||||||
|
writeFile(fileEntry, dataObj);
|
||||||
|
},
|
||||||
|
function (err) {
|
||||||
|
alert("创建失败!");
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
function (err) {}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
() => {}
|
||||||
);
|
);
|
||||||
return {
|
|
||||||
fastest: fastest.value,
|
//更新extension.js
|
||||||
success: array.map(_ => _.value),
|
window.resolveLocalFileSystemURL(
|
||||||
failed: errArray.map(_ => _.value || _.reason)
|
lib.assetURL + "extension/" + extName,
|
||||||
};
|
function (root) {
|
||||||
});
|
root.getFile(
|
||||||
|
"extension.js",
|
||||||
|
{ create: true },
|
||||||
|
function (fileEntry) {
|
||||||
|
var dataObj = new Blob([text_download], { type: "text/plain" });
|
||||||
|
//写入文件
|
||||||
|
writeFile(fileEntry, dataObj);
|
||||||
|
},
|
||||||
|
function (err) {
|
||||||
|
alert("创建失败!");
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
function (err) {}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// function miaoFetch(url) {
|
// function miaoFetch(url) {
|
||||||
// var p1 = new Promise((resolve, reject)=>{
|
// var p1 = new Promise((resolve, reject)=>{
|
||||||
@@ -1653,7 +1678,150 @@ game.import("extension", function (lib, game, ui, get, ai, _status) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
alert("更新完成");
|
alert("更新完成");
|
||||||
this.innerHTML = "<button>更新完成</button>";
|
this.innerHTML = "<span><button>更新喵喵喵喵</button></span>";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
updateSelf: {
|
||||||
|
name: "<button>更新喵喵配件</button>",
|
||||||
|
intro: "这还用说????",
|
||||||
|
clear: true,
|
||||||
|
onclick: async function () {
|
||||||
|
if (this.innerHTML != "<span><button>更新喵喵配件</button></span>") {
|
||||||
|
return alert("已经在更新了");
|
||||||
|
}
|
||||||
|
this.innerHTML = "<button>更新中</button>";
|
||||||
|
var url = "https://raw.githubusercontent.com/Zioywishing/Noname_Miaoxtension/main/extension.js";
|
||||||
|
var text_download = "";
|
||||||
|
var extName = "喵喵喵喵";
|
||||||
|
var path = "\\extension\\" + extName + "\\extension.js";
|
||||||
|
var time = new Date();
|
||||||
|
var path_bak = path + "." + time.valueOf() + ".bak";
|
||||||
|
var fileName = "extension.js";
|
||||||
|
var fileName_bak = fileName + "." + time.valueOf() + ".bak";
|
||||||
|
try {
|
||||||
|
var fec = miaoFetch(url);
|
||||||
|
fec.catch(err => reject(err));
|
||||||
|
await fec
|
||||||
|
.then(data => {
|
||||||
|
return data.text();
|
||||||
|
})
|
||||||
|
.then(res => {
|
||||||
|
text_download = res;
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
return alert("连接出了问题喵:" + e);
|
||||||
|
}
|
||||||
|
alert("下载成功");
|
||||||
|
//电脑端node.js环境下
|
||||||
|
if (lib.node && lib.node.fs) {
|
||||||
|
path = __dirname + path;
|
||||||
|
path_bak = __dirname + path_bak;
|
||||||
|
// return alert(path)
|
||||||
|
const fs = lib.node.fs;
|
||||||
|
//创建备份文件
|
||||||
|
try {
|
||||||
|
fs.readFile(path, function read(err, data) {
|
||||||
|
if (err) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
if(text_download == data){
|
||||||
|
alert('本地和下载的一模一样喵')
|
||||||
|
}else{
|
||||||
|
fs.appendFile(path_bak, data, function (err) {
|
||||||
|
if (err) throw err;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
return alert("备份时:" + e);
|
||||||
|
}
|
||||||
|
//更新文件
|
||||||
|
try {
|
||||||
|
fs.writeFileSync(path, text_download);
|
||||||
|
} catch (e) {
|
||||||
|
return alert("更新extension.js时:" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//移动端
|
||||||
|
else {
|
||||||
|
|
||||||
|
//将内容数据写入到文件中
|
||||||
|
function writeFile(fileEntry, dataObj) {
|
||||||
|
//创建一个写入对象
|
||||||
|
fileEntry.createWriter(function (fileWriter) {
|
||||||
|
//文件写入成功
|
||||||
|
fileWriter.onwriteend = function () {
|
||||||
|
// alert("Successful file read...");
|
||||||
|
};
|
||||||
|
|
||||||
|
//文件写入失败
|
||||||
|
fileWriter.onerror = function (e) {
|
||||||
|
alert("Failed file read: " + e.toString());
|
||||||
|
};
|
||||||
|
|
||||||
|
//写入文件
|
||||||
|
fileWriter.write(dataObj);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//备份文件
|
||||||
|
game.readFileAsText(
|
||||||
|
"extension/" + extName + "/extension.js",
|
||||||
|
e => {
|
||||||
|
var oldt = e;
|
||||||
|
if(text_download == data){
|
||||||
|
alert('本地和下载的一模一样喵')
|
||||||
|
}else{
|
||||||
|
window.resolveLocalFileSystemURL(
|
||||||
|
lib.assetURL + "extension/" + extName,
|
||||||
|
function (root) {
|
||||||
|
root.getFile(
|
||||||
|
fileName_bak,
|
||||||
|
{ create: true },
|
||||||
|
function (fileEntry) {
|
||||||
|
var dataObj = new Blob([oldt], { type: "text/plain" });
|
||||||
|
//写入文件
|
||||||
|
// alert(oldt);
|
||||||
|
writeFile(fileEntry, dataObj);
|
||||||
|
},
|
||||||
|
function (err) {
|
||||||
|
alert("创建失败!");
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
function (err) {}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
|
||||||
|
//更新extension.js
|
||||||
|
window.resolveLocalFileSystemURL(
|
||||||
|
lib.assetURL + "extension/" + extName,
|
||||||
|
function (root) {
|
||||||
|
root.getFile(
|
||||||
|
"extension.js",
|
||||||
|
{ create: true },
|
||||||
|
function (fileEntry) {
|
||||||
|
var dataObj = new Blob([text_download], { type: "text/plain" });
|
||||||
|
//写入文件
|
||||||
|
writeFile(fileEntry, dataObj);
|
||||||
|
},
|
||||||
|
function (err) {
|
||||||
|
alert("创建失败!");
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
function (err) {}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
alert("更新完成");
|
||||||
|
this.innerHTML = "<span><button>更新喵喵配件</button></span>";
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// getFastestUpdateURLMiao4:{
|
// getFastestUpdateURLMiao4:{
|
||||||
|
|||||||
Reference in new issue
Block a user