From 2eb30e2e6373a1f374d00a20ef100bd3557f0962 Mon Sep 17 00:00:00 2001 From: MistEO Date: Mon, 9 Oct 2023 22:41:39 +0800 Subject: [PATCH] feat: Add a mirror for resource OTA Thanks for annangela --- src/MaaWpfGui/Constants/MaaUrls.cs | 1 + src/MaaWpfGui/Models/ResourceUpdater.cs | 32 +++++++++++++++---------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/MaaWpfGui/Constants/MaaUrls.cs b/src/MaaWpfGui/Constants/MaaUrls.cs index 87151fcc4c..754ee8ae67 100644 --- a/src/MaaWpfGui/Constants/MaaUrls.cs +++ b/src/MaaWpfGui/Constants/MaaUrls.cs @@ -43,6 +43,7 @@ namespace MaaWpfGui.Constants public const string MaaApi = "https://ota.maa.plus/MaaAssistantArknights/api/"; public const string MaaResourceApi = "https://ota.maa.plus/MaaAssistantArknights/MaaAssistantArknights/"; + public const string AnnMirrorResourceApi = "https://maa-ota.annangela.cn/MaaAssistantArknights/MaaAssistantArknights/"; public const string QqGroups = "https://ota.maa.plus/MaaAssistantArknights/api/qqgroup/index.html"; diff --git a/src/MaaWpfGui/Models/ResourceUpdater.cs b/src/MaaWpfGui/Models/ResourceUpdater.cs index 018dd379c4..3e7ce59647 100644 --- a/src/MaaWpfGui/Models/ResourceUpdater.cs +++ b/src/MaaWpfGui/Models/ResourceUpdater.cs @@ -11,7 +11,7 @@ namespace MaaWpfGui.Models { public static class ResourceUpdater { - private static readonly List _maaSingleFiles = new List + private static readonly List _MaaSingleFiles = new List { "resource/Arknights-Tile-Pos/overview.json", "resource/battle_data.json", @@ -34,7 +34,7 @@ namespace MaaWpfGui.Models "resource/global/YoStarKR/resource/version.json", }; - private const string MaaDynamicFilesIndex = "resource/dynamic_list.txt"; + private static readonly string _MaaDynamicFilesIndex = "resource/dynamic_list.txt"; public enum UpdateResult { @@ -63,8 +63,9 @@ namespace MaaWpfGui.Models { _updating = false; - var ret2 = await UpdateFilesWithIndex(); - var ret1 = await UpdateSingleFiles(); + var baseUrl = new Random().Next(5) == 0 ? MaaUrls.MaaResourceApi : MaaUrls.AnnMirrorResourceApi; + var ret2 = await UpdateFilesWithIndex(baseUrl); + var ret1 = await UpdateSingleFiles(baseUrl); ETagCache.Save(); if (ret1 == UpdateResult.Failed || ret2 == UpdateResult.Failed) @@ -80,24 +81,27 @@ namespace MaaWpfGui.Models return UpdateResult.NotModified; } - private static async Task UpdateSingleFiles() + private static async Task UpdateSingleFiles(string baseUrl) { UpdateResult ret = UpdateResult.NotModified; - foreach (var file in _maaSingleFiles) + foreach (var file in _MaaSingleFiles) { - var sRet = await UpdateFileWithETag(MaaUrls.MaaResourceApi, file, file); + var sRet = await UpdateFileWithETag(baseUrl, file, file); switch (sRet) { case UpdateResult.Failed: ret = UpdateResult.Failed; break; + case UpdateResult.Success: ETagCache.Save(); break; + case UpdateResult.NotModified: break; + default: throw new ArgumentOutOfRangeException(); } @@ -113,24 +117,28 @@ namespace MaaWpfGui.Models // 地图文件、掉落材料的图片、基建技能图片 // 这些文件数量不固定,需要先获取索引文件,再根据索引文件下载 - private static async Task UpdateFilesWithIndex() + private static async Task UpdateFilesWithIndex(string baseUrl) { - var indexSRet = await UpdateFileWithETag(MaaUrls.MaaResourceApi, MaaDynamicFilesIndex, MaaDynamicFilesIndex); + var indexSRet = await UpdateFileWithETag(baseUrl, _MaaDynamicFilesIndex, _MaaDynamicFilesIndex); switch (indexSRet) { case UpdateResult.Failed: return UpdateResult.Failed; + case UpdateResult.Success: ETagCache.Save(); break; + case UpdateResult.NotModified: break; + default: throw new ArgumentOutOfRangeException(); } - var indexPath = Path.Combine(Environment.CurrentDirectory, MaaDynamicFilesIndex); - if (!File.Exists(indexPath)) { + var indexPath = Path.Combine(Environment.CurrentDirectory, _MaaDynamicFilesIndex); + if (!File.Exists(indexPath)) + { return UpdateResult.Failed; } @@ -154,7 +162,7 @@ namespace MaaWpfGui.Models return; } - var sRet = await UpdateFileWithETag(MaaUrls.MaaResourceApi, file, file); + var sRet = await UpdateFileWithETag(baseUrl, file, file); if (sRet == UpdateResult.Failed) { ret = UpdateResult.Failed;