feat: use audio path for episode player and tts file name

This commit is contained in:
2025-06-04 13:52:40 +09:00
committed by Satsuki Akiba (aider)
parent 2df3f0a8eb
commit 9cc3e1f66b
3 changed files with 15 additions and 17 deletions

View File

@ -36,7 +36,7 @@ export default function EpisodePlayer() {
const handlePlay = (episode: Episode) => {
setSelectedEpisode(episode);
setAudioUrl(`/podcast_audio/${episode.id}.mp3`);
setAudioUrl(`/podcast_audio/${episode.audioPath}`);
};
if (loading) return <div>...</div>;
@ -68,11 +68,7 @@ export default function EpisodePlayer() {
: {selectedEpisode.title}
</h4>
{audioUrl ? (
<audio
src={audioUrl}
controls
className="w-full"
/>
<audio src={audioUrl} controls className="w-full" />
) : (
<div>...</div>
)}

View File

@ -44,7 +44,7 @@ export async function updatePodcastRSS() {
}
const outputPath = join(__dirname, "../public/podcast.xml");
// 既存のRSSファイルの読み込み
let existingXml = "";
try {
@ -56,26 +56,28 @@ export async function updatePodcastRSS() {
if (existingXml) {
// 既存のitem部分を抽出
const existingItemsMatch = existingXml.match(/<channel>([\s\S]*?)<\/channel>/);
const existingItemsMatch = existingXml.match(
/<channel>([\s\S]*?)<\/channel>/,
);
if (existingItemsMatch) {
const existingItems = existingItemsMatch[1];
const newItemStartIndex = existingItems.lastIndexOf("<item>");
const newItemStartIndex = existingItems!.lastIndexOf("<item>");
// 新しいitemを追加
const updatedItems = existingItems + itemsXml;
// lastBuildDateを更新
const updatedXml = existingXml.replace(
/<lastBuildDate>.*?<\/lastBuildDate>/,
`<lastBuildDate>${lastBuildDate}</lastBuildDate>`
`<lastBuildDate>${lastBuildDate}</lastBuildDate>`,
);
// items部分を置き換え
const finalXml = updatedXml.replace(
/<channel>[\s\S]*?<\/channel>/,
`<channel>${updatedItems}</channel>`
`<channel>${updatedItems}</channel>`,
);
// ファイルに書き込み
await fs.writeFile(outputPath, finalXml.trim());
} else {
@ -106,7 +108,7 @@ export async function updatePodcastRSS() {
</channel>
</rss>
`;
// Ensure directory exists
await fs.mkdir(dirname(outputPath), { recursive: true });
await fs.writeFile(outputPath, rssXml.trim());

View File

@ -66,5 +66,5 @@ export async function generateTTS(
fs.writeFileSync(filePath, audioBuffer);
console.log(`音声ファイル保存完了: ${filePath}`);
return filePath;
return path.basename(filePath);
}