From 53a408d074266ddafd4ad9591b09b809ef4a8811 Mon Sep 17 00:00:00 2001 From: Satsuki Akiba Date: Sat, 7 Jun 2025 14:08:42 +0900 Subject: [PATCH] Fix episode list --- admin-server.ts | 1 + frontend/src/components/EpisodeList.tsx | 16 ++++++++++++++-- scripts/fetch_and_generate.ts | 3 ++- services/database.ts | 21 +++++++++++++++++++++ 4 files changed, 38 insertions(+), 3 deletions(-) diff --git a/admin-server.ts b/admin-server.ts index 175a86b..bf7deac 100644 --- a/admin-server.ts +++ b/admin-server.ts @@ -8,6 +8,7 @@ import { deleteFeed, toggleFeedActive, getFeedByUrl, + getFeedById, fetchAllEpisodes, fetchEpisodesWithArticles, getFeedRequests, diff --git a/frontend/src/components/EpisodeList.tsx b/frontend/src/components/EpisodeList.tsx index c07015d..29ae41c 100644 --- a/frontend/src/components/EpisodeList.tsx +++ b/frontend/src/components/EpisodeList.tsx @@ -27,10 +27,15 @@ function EpisodeList() { try { setLoading(true) const response = await fetch('/api/episodes') - if (!response.ok) throw new Error('エピソードの取得に失敗しました') + if (!response.ok) { + const errorData = await response.json() + throw new Error(errorData.error || 'エピソードの取得に失敗しました') + } const data = await response.json() + console.log('Fetched episodes:', data) setEpisodes(data) } catch (err) { + console.error('Episode fetch error:', err) setError(err instanceof Error ? err.message : 'エラーが発生しました') } finally { setLoading(false) @@ -64,7 +69,14 @@ function EpisodeList() { return (

エピソードがありません

-

フィード管理でRSSフィードを追加してください

+

フィードリクエストでRSSフィードをリクエストするか、管理者にバッチ処理の実行を依頼してください

+
) } diff --git a/scripts/fetch_and_generate.ts b/scripts/fetch_and_generate.ts index 7471058..0775272 100644 --- a/scripts/fetch_and_generate.ts +++ b/scripts/fetch_and_generate.ts @@ -7,6 +7,7 @@ import { generateTTS } from "../services/tts.js"; import { saveFeed, getFeedByUrl, + getFeedById, saveArticle, getUnprocessedArticles, markArticleAsProcessed, @@ -294,7 +295,7 @@ async function generatePodcastForArticle(article: any): Promise { try { // Get feed information for context - const feed = await getFeedByUrl(article.feedId); + const feed = await getFeedById(article.feedId); const feedTitle = feed?.title || "Unknown Feed"; // Classify the article/feed diff --git a/services/database.ts b/services/database.ts index f292a5e..1597326 100644 --- a/services/database.ts +++ b/services/database.ts @@ -193,6 +193,27 @@ export async function getFeedByUrl(url: string): Promise { } } +export async function getFeedById(id: string): Promise { + try { + const stmt = db.prepare("SELECT * FROM feeds WHERE id = ?"); + const row = stmt.get(id) as any; + if (!row) return null; + + return { + id: row.id, + url: row.url, + title: row.title, + description: row.description, + lastUpdated: row.last_updated, + createdAt: row.created_at, + active: Boolean(row.active), + }; + } catch (error) { + console.error("Error getting feed by ID:", error); + throw error; + } +} + export async function getAllFeeds(): Promise { try { const stmt = db.prepare(