From 6487df776a3ede23ea2ba40dde1c459da02e9621 Mon Sep 17 00:00:00 2001
From: Natrium <1583803226@qq.com>
Date: Tue, 23 Apr 2024 00:57:34 +0800
Subject: [PATCH] Fix Announcement time display
---
.../Resource/Localization/SH.en.resx | 12 ++++++--
.../Resource/Localization/SH.id.resx | 12 ++++++--
.../Resource/Localization/SH.ja.resx | 14 ++++++---
.../Resource/Localization/SH.ko.resx | 12 ++++++--
.../Resource/Localization/SH.pt.resx | 12 ++++++--
.../Snap.Hutao/Resource/Localization/SH.resx | 12 ++++++--
.../Resource/Localization/SH.ru.resx | 12 ++++++--
.../Resource/Localization/SH.zh-Hant.resx | 12 ++++++--
.../Announcement/AnnouncementService.cs | 29 ++++++++++++++-----
.../Common/Announcement/AnnouncementRegex.cs | 6 ++++
10 files changed, 101 insertions(+), 32 deletions(-)
diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.en.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.en.resx
index 1f7ec92f..5a42562f 100644
--- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.en.resx
+++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.en.resx
@@ -2922,13 +2922,19 @@
Weapon WIKI
- (?:〓Event Duration〓|〓Quest Start Time〓).*?\d\.\dthe Version update(?:after|)Permanently available
+ (?:〓Event Duration〓|〓Quest Start Time〓).*?Permanently.*?Version.*?(\d\.\d).*?update
- 〓Event Duration〓.*?\d\.\d Available throughout the entirety of Version
+ 〓Event Duration〓.*?Available throughout the entirety of Version (\d\.\d)
- (?:〓Event Duration〓|Event Wish Duration|【Availability Duration】|〓Discount Period〓).*?(\d\.\dAfter the Version update).*?~.*?<t class="t_(?:gl|lc)".*?>(.*?)</t>
+ (?:〓Event Duration〓|Event Wish Duration|【Availability Duration】|〓Discount Period〓).*?After.*?(\d\.\d).*?<t class="t_(?:gl|lc)".*?>(.*?)</t>
+
+
+ Dear.*?<t class=\"t_(?:gl|lc)\".*?>(.*?)</t>
+
+
+ Version \d\.\d Update Maintenance Preview
〓Update Maintenance Duration〓.+?<t class=\"t_(?:gl|lc)\".*?>(.*?)</t>
diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.id.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.id.resx
index e80e0912..1602838c 100644
--- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.id.resx
+++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.id.resx
@@ -2922,13 +2922,19 @@
Senjata WIKI
- (?:〓Durasi Event〓|〓Waktu Mulai Misi〓).*?\d\.\dthe Version update(?:after|)Selamanya Tersedia
+ (?:〓Durasi Event〓|〓Waktu Mulai Misi〓).*?(\d\.\d)the Version update(?:after|)Selamanya Tersedia
- 〓Durasi Event〓.*?\d\.\d Tersedia selama versi ini
+ 〓Durasi Event〓.*?(\d\.\d) Tersedia selama versi ini
- (?:〓Waktu Acara〓|Waktu Menginginkan|【Waktu Peluncuran】|〓Waktu Diskon〓).*?(\d\.\d Setelah Pembaruan Versi).*?~.*?<t class="t_(?:gl|lc)".*?>(.*?)</t>
+ (?:〓Waktu Acara〓|Waktu Menginginkan|【Waktu Peluncuran】|〓Waktu Diskon〓).*?(\d\.\d) Setelah Pembaruan Versi.*?~.*?<t class="t_(?:gl|lc)".*?>(.*?)</t>
+
+
+ 将于<t class=\"t_(?:gl|lc)\".*?>(.*?)</t>进行版本更新维护
+
+
+ \d\.\d版本更新维护预告
〓Durasi Pemeliharaan Pembaruan.+?<t class=\"t_(?:gl|lc)\".*?>(.*?)</t>
diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.ja.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.ja.resx
index 75a9737e..ac931807 100644
--- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.ja.resx
+++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.ja.resx
@@ -2922,19 +2922,25 @@
武器一覧
- (?:〓イベント期間〓|〓任務開始時間〓).*?\d\.\dバージョンアップ(?:完了|)後常設オープン
+ (?:〓イベント期間〓|〓任務開(?:始|放)時間〓).*?(\d\.\d).*?開放
- 〓イベント期間〓.*?\d\.\d当バージョン期間オープン
+ 〓イベント期間〓.*?(\d\.\d)バージョン
- (?:〓イベント期間〓|祈願期間|【開始日時】).*?(\d\.\dバージョンアップ完了後).*?~.*?<t class="t_(?:gl|lc)".*?>(.*?)</t>
+ (?:〓イベント期間〓|祈願期間|【開始日時】).*?(\d\.\d)バージョンアップ.*?~.*?<t class="t_(?:gl|lc)".*?>(.*?)</t>
+
+
+ 親愛.*?<t class=\"t_(?:gl|lc)\".*?>(.*?)</t>
+
+
+ Ver\.\d\.\dバージョンアップのお知らせ
〓メンテナンス時間〓.+?<t class=\"t_(?:gl|lc)\".*?>(.*?)</t>
- Ver.\d\.\d.+正式リリース
+ Ver\.\d\.\d.*?正式リリース
{0} 日後に開始
diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.ko.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.ko.resx
index a902c876..b388c318 100644
--- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.ko.resx
+++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.ko.resx
@@ -2922,13 +2922,19 @@
무기 자료
- (?:〓活动时间〓|〓任务开放时间〓).*?\d\.\d版本更新(?:完成|)后永久开放
+ (?:〓活动时间〓|〓任务开放时间〓).*?(\d\.\d)版本更新(?:完成|)后永久开放
- 〓活动时间〓.*?\d\.\d版本期间持续开放
+ 〓活动时间〓.*?(\d\.\d)版本期间持续开放
- (?:〓活动时间〓|祈愿时间|【上架时间】).*?(\d\.\d版本更新后).*?~.*?<t class="t_(?:gl|lc)".*?>(.*?)</t>
+ (?:〓活动时间〓|祈愿时间|【上架时间】|〓折扣时间〓).*?(\d\.\d)版本更新后.*?~.*?<t class="t_(?:gl|lc)".*?>(.*?)</t>
+
+
+ 将于<t class=\"t_(?:gl|lc)\".*?>(.*?)</t>进行版本更新维护
+
+
+ \d\.\d版本更新维护预告
〓更新时间〓.+?<t class=\"t_(?:gl|lc)\".*?>(.*?)</t>
diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.pt.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.pt.resx
index 8ea53d63..b3d00aca 100644
--- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.pt.resx
+++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.pt.resx
@@ -2922,13 +2922,19 @@
Wiki de armas
- (?:〓Duração do evento〓|〓Hora de início da missão〓).*?\d\.\da atualização da versão(?:after|)Disponível permanentemente
+ (?:〓Duração do evento〓|〓Hora de início da missão〓).*?(\d\.\d)a atualização da versão(?:after|)Disponível permanentemente
- 〓Duração do evento〓.*?\d\.\d Disponível em toda as versões
+ 〓Duração do evento〓.*?(\d\.\d) Disponível em toda as versões
- (?:〓Duração do evento〓|Duração da oração do evento|【Duração da disponibilidade】).*?(\d\.\dApós a atualização da versão).*?~.*?<t class="t_(?:gl|lc)".*?>(.*?)</t>
+ (?:〓Duração do evento〓|Duração da oração do evento|【Duração da disponibilidade】).*?(\d\.\d)Após a atualização da versão.*?~.*?<t class="t_(?:gl|lc)".*?>(.*?)</t>
+
+
+ 将于<t class=\"t_(?:gl|lc)\".*?>(.*?)</t>进行版本更新维护
+
+
+ \d\.\d版本更新维护预告
〓Duração da manutenção da atualização.+?<t class=\"t_(?:gl|lc)\".*?>(.*?)</t>
diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx
index 6bec3145..49fdaf68 100644
--- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx
+++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx
@@ -2991,13 +2991,19 @@
武器资料
- (?:〓活动时间〓|〓任务开放时间〓).*?\d\.\d版本更新(?:完成|)后永久开放
+ (?:〓活动时间〓|〓任务开放时间〓).*?(\d\.\d)版本更新(?:完成|)后永久开放
- 〓活动时间〓.*?\d\.\d版本期间持续开放
+ 〓活动时间〓.*?(\d\.\d)版本期间持续开放
- (?:〓活动时间〓|祈愿时间|【上架时间】|〓折扣时间〓).*?(\d\.\d版本更新后).*?~.*?<t class="t_(?:gl|lc)".*?>(.*?)</t>
+ (?:〓活动时间〓|祈愿时间|【上架时间】|〓折扣时间〓).*?(\d\.\d)版本更新后.*?~.*?<t class="t_(?:gl|lc)".*?>(.*?)</t>
+
+
+ 将于<t class=\"t_(?:gl|lc)\".*?>(.*?)</t>进行版本更新维护
+
+
+ \d\.\d版本更新维护预告
〓更新时间〓.+?<t class=\"t_(?:gl|lc)\".*?>(.*?)</t>
diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.ru.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.ru.resx
index a28ab4ff..394ac05f 100644
--- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.ru.resx
+++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.ru.resx
@@ -2922,13 +2922,19 @@
武器资料
- (?:〓活动时间〓|〓任务开放时间〓).*?\d\.\d版本更新(?:完成|)后永久开放
+ (?:〓活动时间〓|〓任务开放时间〓).*?(\d\.\d)版本更新(?:完成|)后永久开放
- 〓活动时间〓.*?\d\.\d版本期间持续开放
+ 〓活动时间〓.*?(\d\.\d)版本期间持续开放
- (?:〓活动时间〓|祈愿时间|【上架时间】).*?(\d\.\d版本更新后).*?~.*?<t class="t_(?:gl|lc)".*?>(.*?)</t>
+ (?:〓活动时间〓|祈愿时间|【上架时间】|〓折扣时间〓).*?(\d\.\d)版本更新后.*?~.*?<t class="t_(?:gl|lc)".*?>(.*?)</t>
+
+
+ 将于<t class=\"t_(?:gl|lc)\".*?>(.*?)</t>进行版本更新维护
+
+
+ \d\.\d版本更新维护预告
〓更新时间〓.+?<t class=\"t_(?:gl|lc)\".*?>(.*?)</t>
diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.zh-Hant.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.zh-Hant.resx
index b4a9a3fb..26b503f8 100644
--- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.zh-Hant.resx
+++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.zh-Hant.resx
@@ -2922,13 +2922,19 @@
武器資料
- (?:〓活動時間〓|〓任務開放時間〓).*?\d\.\d版本更新(?:完成|)後永久開放
+ (?:〓活動時間〓|〓任務開放時間〓).*?(\d\.\d)版本更新(?:完成|)後永久開放
- 〓活動時間〓.*?\d\.\d版本期間持續開放
+ 〓活動時間〓.*?(\d\.\d)版本期間持續開放
- (?:〓活動時間〓|祈願時間|【上架時間】|〓折扣時間〓).*?(\d\.\d版本更新後).*?~.*?<t class="t_(?:gl|lc)".*?>(.*?)</t>
+ (?:〓活動時間〓|祈願時間|【上架時間】|〓折扣時間〓).*?(\d\.\d).*?版本更新後.*?<t class="t_(?:gl|lc)".*?>(.*?)</t>
+
+
+ 親愛.*?<t class=\"t_(?:gl|lc)\".*?>(.*?)</t>
+
+
+ \d\.\d版本更新維護預告
〓更新時間〓.+?<t class=\"t_(?:gl|lc)\".*?>(.*?)</t>
diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Announcement/AnnouncementService.cs b/src/Snap.Hutao/Snap.Hutao/Service/Announcement/AnnouncementService.cs
index b2d79bb1..eef346f9 100644
--- a/src/Snap.Hutao/Snap.Hutao/Service/Announcement/AnnouncementService.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Service/Announcement/AnnouncementService.cs
@@ -110,37 +110,52 @@ internal sealed partial class AnnouncementService : IAnnouncementService
.Single(wrapper => wrapper.TypeId == 1)
.List;
- // 更新公告
+ // x.x版本更新说明
WebAnnouncement versionUpdate = announcementListWrappers
.Single(wrapper => wrapper.TypeId == 2)
.List
.Single(ann => AnnouncementRegex.VersionUpdateTitleRegex.IsMatch(ann.Title));
- if (AnnouncementRegex.VersionUpdateTimeRegex.Match(versionUpdate.Content) is not { Success: true } versionMatch)
+ if (AnnouncementRegex.VersionUpdateTimeRegex.Match(versionUpdate.Content) is not { Success: true } versionUpdateMatch)
{
return;
}
- DateTimeOffset versionUpdateTime = UnsafeDateTimeOffset.ParseDateTime(versionMatch.Groups[1].ValueSpan, offset);
+ // x.x版本更新维护预告
+ WebAnnouncement versionUpdatePreview = announcementListWrappers
+ .Single(wrapper => wrapper.TypeId == 2)
+ .List
+ .Single(ann => AnnouncementRegex.VersionUpdatePreviewTitleRegex.IsMatch(ann.Title));
+
+ if (AnnouncementRegex.VersionUpdatePreviewTimeRegex.Match(versionUpdatePreview.Content) is not { Success: true } versionUpdatePreviewMatch)
+ {
+ return;
+ }
+
+ Dictionary versionStartTimeDict = new Dictionary();
+ DateTimeOffset versionUpdateTime = UnsafeDateTimeOffset.ParseDateTime(versionUpdateMatch.Groups[1].ValueSpan, offset);
+ DateTimeOffset versionUpdatePreviewTime = UnsafeDateTimeOffset.ParseDateTime(versionUpdatePreviewMatch.Groups[1].ValueSpan, offset);
+ versionStartTimeDict.Add(new Regex("(\\d\\.\\d)").Match(versionUpdate.Title).Groups[1].Value, versionUpdateTime);
+ versionStartTimeDict.TryAdd(new Regex("(\\d\\.\\d)").Match(versionUpdatePreview.Title).Groups[1].Value, versionUpdatePreviewTime);
foreach (ref readonly WebAnnouncement announcement in CollectionsMarshal.AsSpan(activities))
{
if (AnnouncementRegex.PermanentActivityAfterUpdateTimeRegex.Match(announcement.Content) is { Success: true } permanent)
{
- announcement.StartTime = versionUpdateTime;
+ announcement.StartTime = versionStartTimeDict[permanent.Groups[1].Value];
continue;
}
if (AnnouncementRegex.PersistentActivityAfterUpdateTimeRegex.Match(announcement.Content) is { Success: true } persistent)
{
- announcement.StartTime = versionUpdateTime;
- announcement.EndTime = versionUpdateTime + TimeSpan.FromDays(42);
+ announcement.StartTime = versionStartTimeDict[persistent.Groups[1].Value];
+ announcement.EndTime = versionStartTimeDict[persistent.Groups[1].Value] + TimeSpan.FromDays(42);
continue;
}
if (AnnouncementRegex.TransientActivityAfterUpdateTimeRegex.Match(announcement.Content) is { Success: true } transient)
{
- announcement.StartTime = versionUpdateTime;
+ announcement.StartTime = versionStartTimeDict[transient.Groups[1].Value];
announcement.EndTime = UnsafeDateTimeOffset.ParseDateTime(transient.Groups[2].ValueSpan, offset);
continue;
}
diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Hk4e/Common/Announcement/AnnouncementRegex.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Hk4e/Common/Announcement/AnnouncementRegex.cs
index eb73d9aa..8ead9877 100644
--- a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Hk4e/Common/Announcement/AnnouncementRegex.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Hk4e/Common/Announcement/AnnouncementRegex.cs
@@ -13,6 +13,12 @@ internal static partial class AnnouncementRegex
///
public static readonly Regex VersionUpdateTimeRegex = new(SH.WebAnnouncementMatchVersionUpdateTime, RegexOptions.Compiled);
+ ///
+ public static readonly Regex VersionUpdatePreviewTitleRegex = new(SH.WebAnnouncementMatchVersionUpdatePreviewTitle, RegexOptions.Compiled);
+
+ ///
+ public static readonly Regex VersionUpdatePreviewTimeRegex = new(SH.WebAnnouncementMatchVersionUpdatePreviewTime, RegexOptions.Compiled);
+
///
public static readonly Regex TransientActivityAfterUpdateTimeRegex = new(SH.WebAnnouncementMatchTransientActivityTime, RegexOptions.Compiled);