feat: 更新换源及优化

This commit is contained in:
shanmite 2025-05-23 09:33:20 +08:00
parent e543c63404
commit d007d8bab9
2 changed files with 17 additions and 10 deletions

View File

@ -62,21 +62,24 @@ async function update(isDdownload) {
try { try {
const { tag_name, assets, body: text } = await getLatestRelease('shanmiteko', 'LotteryAutoScript'); const { tag_name, assets, body: text } = await getLatestRelease('shanmiteko', 'LotteryAutoScript');
if (checkVersion(version) < checkVersion(tag_name)) { if (checkVersion(version) < checkVersion(tag_name)) {
const download_url = assets /**
* @type {{browser_download_url:string, size:number}[]}
*/
const download_item = assets
.filter(({ name }) => checkPlatform(name)) .filter(({ name }) => checkPlatform(name))
.map(({ browser_download_url }) => browser_download_url); .map(({ browser_download_url, size }) => { return { browser_download_url, size }; });
if (download_url.length) { if (download_item.length) {
if (isDdownload) { if (isDdownload) {
await try_for_each(download_url.entries(), async ([i, url]) => { await try_for_each(download_item.entries(), async ([i, { browser_download_url, size }]) => {
let proxy_url = 'https://mirror.ghproxy.com/'; let proxy_url = 'https://ghfast.top/';
proxy_url += url; proxy_url += browser_download_url;
log.warn('自动下载', `切换代理${proxy_url}`); log.warn('自动下载', `切换代理${proxy_url}`);
await download(proxy_url, `latest_version${i}.zip`) await download(proxy_url, `latest_version${i}.zip`, size)
.catch(async err => { .catch(async err => {
log.error('自动下载', err); log.error('自动下载', err);
proxy_url = url; proxy_url = browser_download_url;
log.warn('自动下载', `使用原始链接${proxy_url}`); log.warn('自动下载', `使用原始链接${proxy_url}`);
await download(proxy_url, `latest_version${i}.zip`); await download(proxy_url, `latest_version${i}.zip`, size);
}); });
return false; return false;
}); });

View File

@ -318,9 +318,10 @@ const utils = {
* 下载文件 * 下载文件
* @param {string} url * @param {string} url
* @param {string} file_name * @param {string} file_name
* @param {number} size
* @returns {Promise<void | string>} * @returns {Promise<void | string>}
*/ */
download(url, file_name) { download(url, file_name, size) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
send({ send({
url, url,
@ -340,6 +341,9 @@ const utils = {
resStream.pipe(wtbs); resStream.pipe(wtbs);
wtbs.on('finish', () => { wtbs.on('finish', () => {
utils.log.proPrint('下载完成'); utils.log.proPrint('下载完成');
if (recv_length < size) {
reject(`未正确下载文件: ${recv_length}B < ${size}B`);
}
resolve(); resolve();
}).on('error', error => { }).on('error', error => {
wtbs.destroy(); wtbs.destroy();