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(