feat: read feed URLs from file
This commit is contained in:
		@@ -16,3 +16,6 @@ PODCAST_LANGUAGE=ja
 | 
			
		||||
PODCAST_AUTHOR=管理者
 | 
			
		||||
PODCAST_CATEGORIES=Technology
 | 
			
		||||
PODCAST_TTL=60
 | 
			
		||||
 | 
			
		||||
# フィードURL一覧ファイルの設定
 | 
			
		||||
FEED_URLS_FILE=feed_urls.txt
 | 
			
		||||
 
 | 
			
		||||
@@ -12,9 +12,28 @@ interface FeedItem {
 | 
			
		||||
  contentSnippet?: string;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
import fs from "fs/promises";
 | 
			
		||||
import path from "path";
 | 
			
		||||
import { fileURLToPath } from "url";
 | 
			
		||||
 | 
			
		||||
const __filename = fileURLToPath(import.meta.url);
 | 
			
		||||
const __dirname = path.dirname(__filename);
 | 
			
		||||
 | 
			
		||||
async function main() {
 | 
			
		||||
  const parser = new Parser<FeedItem>();
 | 
			
		||||
  const feedUrls = ["https://example.com/feed1.rss"];
 | 
			
		||||
  const feedUrlsFile = process.env.FEED_URLS_FILE ?? "feed_urls.txt";
 | 
			
		||||
  const feedUrlsPath = path.resolve(__dirname, "..", feedUrlsFile);
 | 
			
		||||
  let feedUrls: string[];
 | 
			
		||||
  try {
 | 
			
		||||
    const data = await fs.readFile(feedUrlsPath, "utf-8");
 | 
			
		||||
    feedUrls = data
 | 
			
		||||
      .split("\n")
 | 
			
		||||
      .map((url) => url.trim())
 | 
			
		||||
      .filter((url) => url.length > 0);
 | 
			
		||||
  } catch (err) {
 | 
			
		||||
    console.warn(`フィードURLファイルの読み込みに失敗: ${feedUrlsFile}`);
 | 
			
		||||
    feedUrls = [];
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  for (const url of feedUrls) {
 | 
			
		||||
    const feed = await parser.parseURL(url);
 | 
			
		||||
@@ -29,7 +48,7 @@ async function main() {
 | 
			
		||||
        pub.getMonth() === yesterday.getMonth() &&
 | 
			
		||||
        pub.getDate() === yesterday.getDate()
 | 
			
		||||
      ) {
 | 
			
		||||
        const already = await markAsProcessed(url, item['id'] as string);
 | 
			
		||||
        const already = await markAsProcessed(url, item["id"] as string);
 | 
			
		||||
        if (already) continue;
 | 
			
		||||
 | 
			
		||||
        const scriptText = await openAI_GenerateScript({
 | 
			
		||||
@@ -37,10 +56,13 @@ async function main() {
 | 
			
		||||
          link: item.link ?? "",
 | 
			
		||||
          contentSnippet: item.contentSnippet ?? "",
 | 
			
		||||
        });
 | 
			
		||||
        const audioFilePath = await generateTTS(item['id'] as string, scriptText);
 | 
			
		||||
        const audioFilePath = await generateTTS(
 | 
			
		||||
          item["id"] as string,
 | 
			
		||||
          scriptText,
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        await saveEpisode({
 | 
			
		||||
          id: item['id'] as string,
 | 
			
		||||
          id: item["id"] as string,
 | 
			
		||||
          title: item.title ?? "",
 | 
			
		||||
          pubDate: pub.toISOString(),
 | 
			
		||||
          audioPath: audioFilePath,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user