diff --git a/backend/src/controllers/podcastController.ts b/backend/src/controllers/podcastController.ts index e0fb4e4..5d98c44 100644 --- a/backend/src/controllers/podcastController.ts +++ b/backend/src/controllers/podcastController.ts @@ -12,8 +12,8 @@ const subscribeSchema = z.object({ const searchSchema = z.object({ q: z.string().min(2, 'Query must be at least 2 characters'), - limit: z.number().int().min(1).max(50).optional().default(20), - offset: z.number().int().min(0).optional().default(0), + limit: z.coerce.number().int().min(1).max(50).optional().default(20), + offset: z.coerce.number().int().min(0).optional().default(0), }); export const getUserSubscriptions = async (req: Request, res: Response) => { @@ -49,11 +49,28 @@ export const subscribe = async (req: Request, res: Response) => { let podcast = await Podcast.findOne({ rssUrl }); if (!podcast) { - // For now, create a basic podcast entry - // In production, you'd fetch from PodcastIndex API or parse the RSS feed - return res.status(400).json({ - message: 'Podcast not found. Please use a valid RSS URL.', - }); + try { + const result = await rssParserService.createPodcastFromRss(rssUrl, { + title: 'Unknown Podcast', + description: '', + author: '', + imageUrl: undefined, + episodes: [], + }); + podcast = result.podcast; + } catch (error: any) { + if (error.message.includes('already in database')) { + podcast = await Podcast.findOne({ rssUrl }); + } else { + return res.status(400).json({ + message: `Impossible de récupérer le podcast : ${error.message}`, + }); + } + } + } + + if (!podcast) { + return res.status(400).json({ message: 'Impossible d\'ajouter le podcast' }); } // Check if already subscribed diff --git a/frontend/src/components/AudioPlayer.tsx b/frontend/src/components/AudioPlayer.tsx index 78d598e..7f16329 100644 --- a/frontend/src/components/AudioPlayer.tsx +++ b/frontend/src/components/AudioPlayer.tsx @@ -133,7 +133,7 @@ export default function AudioPlayer({ episode, onClose, userId }: AudioPlayerPro {/* Header */}
Loading your podcasts...
+Chargement de vos podcasts...
- {episodesData?.count || 0} new episodes from your subscriptions + {episodesData?.count || 0} nouveaux épisodes de vos abonnements
Loading episodes...
+Chargement des épisodes...
No episodes yet
+Aucun épisode pour l'instant
- Subscribe to podcasts to see episodes in your dashboard + Abonnez-vous à des podcasts pour voir les épisodes dans votre tableau de bord
Loading podcasts...
+Chargement des podcasts...
{selectedTab === 'search' && searchQuery.length < 2 - ? 'Type at least 2 characters to search' - : 'No podcasts found'} + ? 'Tapez au moins 2 caractères pour rechercher' + : 'Aucun podcast trouvé'}
{selectedTab === 'search' && (- Try searching for podcast titles, authors, or topics + Essayez de rechercher des titres, auteurs ou sujets
)}
- Powered by{' '}
+ Propulsé par{' '}
Your podcast streaming companion Votre compagnon de streaming de podcastsPodcastic
-
{isLogin - ? "Don't have an account? Click Create Account above" - : 'Already have an account? Click Sign In above'} + ? "Pas de compte ? Cliquez sur Créer un compte ci-dessus" + : 'Déjà un compte ? Cliquez sur Se connecter ci-dessus'}