feat: add v2 patch info to update fetch logic

This commit is contained in:
daydreamer-json
2026-04-17 12:08:38 +09:00
parent a4cff99c38
commit 5e1d81de2b
2 changed files with 43 additions and 21 deletions

View File

@@ -321,6 +321,25 @@ async function fetchAndSaveLatestGamePatches(gameTargets: GameTarget[]) {
await Bun.write(patchAllPath, JSON.stringify(patchAll, null, 2)); await Bun.write(patchAllPath, JSON.stringify(patchAll, null, 2));
} }
} }
for (const target of gameTargets) {
const patchAllPath = path.join(
argvUtils.getArgv()['outputDir'],
'akEndfield',
'launcher',
'game',
target.dirName,
'all_patch.json',
);
const patchAll: StoredData<LatestGameResponse>[] = (await Bun.file(patchAllPath).exists())
? await Bun.file(patchAllPath).json()
: [];
for (const e of patchAll) {
if (!e.rsp.patch) continue;
const v2PatchInfoUrl = e.rsp.patch.v2_patch_info_url;
if (!v2PatchInfoUrl) continue;
await downloadRawFile(v2PatchInfoUrl);
}
}
} }
async function fetchAndSaveLatestGameResources(gameTargets: GameTarget[]) { async function fetchAndSaveLatestGameResources(gameTargets: GameTarget[]) {
@@ -409,7 +428,7 @@ async function downloadRawFile(url: string) {
try { try {
const data = await ky const data = await ky
.get(urlObj.href, { .get(url, {
headers: { 'User-Agent': appConfig.network.userAgent.minimum }, headers: { 'User-Agent': appConfig.network.userAgent.minimum },
timeout: appConfig.network.timeout, timeout: appConfig.network.timeout,
retry: { limit: appConfig.network.retryCount }, retry: { limit: appConfig.network.retryCount },
@@ -587,7 +606,7 @@ async function fetchAndSaveLatestWebApis(gameTargets: GameTarget[]) {
{ name: 'mainBgImage', method: apiUtils.akEndfield.launcherWeb.mainBgImage, dir: 'main_bg_image' }, { name: 'mainBgImage', method: apiUtils.akEndfield.launcherWeb.mainBgImage, dir: 'main_bg_image' },
{ name: 'banner', method: apiUtils.akEndfield.launcherWeb.banner, dir: 'banner' }, { name: 'banner', method: apiUtils.akEndfield.launcherWeb.banner, dir: 'banner' },
{ name: 'announcement', method: apiUtils.akEndfield.launcherWeb.announcement, dir: 'announcement' }, { name: 'announcement', method: apiUtils.akEndfield.launcherWeb.announcement, dir: 'announcement' },
{ name: 'urlConfig', method: apiUtils.akEndfield.launcherWeb.urlConfig, dir: 'url_config' } { name: 'urlConfig', method: apiUtils.akEndfield.launcherWeb.urlConfig, dir: 'url_config' },
] as const; ] as const;
for (const target of gameTargets) { for (const target of gameTargets) {

View File

@@ -34,6 +34,9 @@ type LauncherLatestGame = {
md5: string; md5: string;
package_size: string; package_size: string;
}[]; }[];
v2_patch_info_url: string;
v2_patch_info_size: string;
v2_patch_info_md5: string;
} | null; } | null;
state: number; state: number;
launcher_action: number; launcher_action: number;
@@ -559,37 +562,37 @@ type GameHubGiftCodeRedeem = {
}; };
export type { export type {
LauncherProtocol,
LauncherLatestGame,
LauncherLatestGameResources,
LauncherLatestLauncher,
LauncherLatestLauncherExe,
LauncherWebSidebar,
LauncherWebSingleEnt,
LauncherWebMainBgImage,
LauncherWebBanner,
LauncherWebAnnouncement,
LauncherWebUrlConfig,
AccSrvUserAuthV1TokenByEmail, AccSrvUserAuthV1TokenByEmail,
AccSrvUserInfoV1Basic, AccSrvUserInfoV1Basic,
AccSrvUserInfoV1ThirdParty, AccSrvUserInfoV1ThirdParty,
AccSrvUserOAuth2V2Grant, AccSrvUserOAuth2V2Grant,
AccSrvUserOAuth2V2GrantType1, AccSrvUserOAuth2V2GrantType1,
U8UserAuthV2ChToken,
U8UserAuthV2Grant,
U8GameServerV1ServerList,
U8GameRoleV1ConfirmServer,
BindApiAccBindV1BindList, BindApiAccBindV1BindList,
BindApiAccBindV1U8TokenByUid, BindApiAccBindV1U8TokenByUid,
BindApiGeneralV1AuthAppList, BindApiGeneralV1AuthAppList,
GameHubGiftCodeRedeem,
LauncherLatestGame,
LauncherLatestGameResources,
LauncherLatestLauncher,
LauncherLatestLauncherExe,
LauncherProtocol,
LauncherWebAnnouncement,
LauncherWebBanner,
LauncherWebMainBgImage,
LauncherWebSidebar,
LauncherWebSingleEnt,
LauncherWebUrlConfig,
U8GameRoleV1ConfirmServer,
U8GameServerV1ServerList,
U8UserAuthV2ChToken,
U8UserAuthV2Grant,
WebViewRecordChar, WebViewRecordChar,
WebViewRecordContent, WebViewRecordContent,
ZonaiApiV1GamePlayerBinding,
ZonaiWebV1GameEndfieldAttendance,
ZonaiWebV1GameEndfieldAttendanceRecord,
ZonaiWebV1UserAuthGenCredByCode, ZonaiWebV1UserAuthGenCredByCode,
ZonaiWebV1UserCheck, ZonaiWebV1UserCheck,
ZonaiWebV1WikiMe, ZonaiWebV1WikiMe,
ZonaiWebV2User, ZonaiWebV2User,
ZonaiApiV1GamePlayerBinding,
ZonaiWebV1GameEndfieldAttendance,
ZonaiWebV1GameEndfieldAttendanceRecord,
GameHubGiftCodeRedeem,
}; };