Corrige subscribe 500 et trending 500

- subscribe: passe undefined à createPodcastFromRss pour qu'il parse vraiment le flux RSS (bug: on passait feedData avec episodes:[] vide)
- trending/discover: retournent [] au lieu de 500 si l'API iTunes échoue
- trending: utilise l'iTunes RSS officiel (itunes.apple.com/fr/rss/toppodcasts) au lieu de l'API Marketing Tools instable

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
MichaelandClaude Sonnet 4.6 committed 2026-04-16 11:24:44 +02:00
1 parent 59144e9ce6
commit 3914f28e19
2 files changed
+26 -33

No files matched your search

+7 -20
View File
@@ -50,14 +50,8 @@ export const subscribe = async (req: Request, res: Response) => {
if (!podcast) {
try {
const result = await rssParserService.createPodcastFromRss(rssUrl, {
title: 'Unknown Podcast',
description: '',
author: '',
imageUrl: undefined,
episodes: [],
});
podcast = result.podcast;
const result = await rssParserService.createPodcastFromRss(rssUrl);
podcast = await Podcast.findById(result.podcast._id);
} catch (error: any) {
if (error.message.includes('already in database')) {
podcast = await Podcast.findOne({ rssUrl });
@@ -70,7 +64,7 @@ export const subscribe = async (req: Request, res: Response) => {
}
if (!podcast) {
return res.status(400).json({ message: 'Impossible d\'ajouter le podcast' });
return res.status(400).json({ message: "Impossible d'ajouter le podcast" });
}
// Check if already subscribed
@@ -184,9 +178,7 @@ export const discoverPodcasts = async (req: Request, res: Response) => {
});
} catch (error: any) {
console.error('Discover podcasts error:', error.message);
res.status(error.status || 500).json({
message: error.message || 'Recherche échouée',
});
res.json({ source: 'itunes', podcasts: [], count: 0 });
}
};
@@ -263,16 +255,11 @@ export const subscribeFromDiscovery = async (req: Request, res: Response) => {
export const getTrendingPodcasts = async (req: Request, res: Response) => {
try {
const limit = Number(req.query.limit) || 20;
const trending = await podcastIndexService.getTrendingPodcasts(limit);
res.json({
source: 'itunes',
podcasts: trending,
count: trending.length,
});
res.json({ source: 'itunes', podcasts: trending, count: trending.length });
} catch (error: any) {
console.error('Trending podcasts error:', error.message);
res.status(500).json({ message: 'Impossible de récupérer les tendances' });
// Return empty rather than crashing the page
res.json({ source: 'itunes', podcasts: [], count: 0 });
}
};