From 265e604c00f6dd5de6f358e69b33c14eb9a7f317 Mon Sep 17 00:00:00 2001 From: Satsuki Akiba Date: Sun, 8 Jun 2025 22:37:17 +0900 Subject: [PATCH] Update --- admin-server.ts | 10 +++++++++- server.ts | 9 +++++++++ services/podcast.ts | 22 ++++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/admin-server.ts b/admin-server.ts index 32239b1..c0f9ece 100644 --- a/admin-server.ts +++ b/admin-server.ts @@ -14,7 +14,6 @@ import { fetchEpisodesWithArticles, getAllCategories, getAllFeedsIncludingInactive, - getAllSettings, getFeedByUrl, getFeedRequests, getFeedsByCategory, @@ -35,6 +34,15 @@ try { process.exit(1); } +// Regenerate static files on startup +try { + const { regenerateStartupFiles } = await import("./services/podcast.js"); + await regenerateStartupFiles(); +} catch (error) { + console.error("Failed to regenerate startup files on admin server:", error); + // Don't exit - the admin server can still work without the regenerated files +} + const app = new Hono(); // Basic Authentication middleware (if credentials are provided) diff --git a/server.ts b/server.ts index d6de888..7216707 100644 --- a/server.ts +++ b/server.ts @@ -14,6 +14,15 @@ try { process.exit(1); } +// Regenerate static files on startup +try { + const { regenerateStartupFiles } = await import("./services/podcast.js"); + await regenerateStartupFiles(); +} catch (error) { + console.error("Failed to regenerate startup files:", error); + // Don't exit - the server can still work without the regenerated files +} + const app = new Hono(); // 静的ファイルの処理 diff --git a/services/podcast.ts b/services/podcast.ts index 934df25..1ad5b43 100644 --- a/services/podcast.ts +++ b/services/podcast.ts @@ -139,6 +139,28 @@ export async function updatePodcastRSS(): Promise { } } +/** + * Regenerate all static files on startup + * This ensures that podcast.xml and other generated files are up-to-date + */ +export async function regenerateStartupFiles(): Promise { + try { + console.log("🔄 Regenerating static files on startup..."); + + // Regenerate main podcast.xml + await updatePodcastRSS(); + console.log("✅ podcast.xml regenerated successfully"); + + // Note: Category and feed-specific RSS files are generated dynamically on request + // This is more efficient and ensures they're always up-to-date with current data + + console.log("✅ All startup files regenerated successfully"); + } catch (error) { + console.error("❌ Error regenerating startup files:", error); + throw error; + } +} + export async function generateCategoryRSS(category: string): Promise { try { // Get episodes for the specific category