From 3974e428aa74e04cca1e74796c6b86bb1ac86a8a Mon Sep 17 00:00:00 2001 From: cdricms <36056008+cdricms@users.noreply.github.com> Date: Thu, 13 Feb 2025 12:27:13 +0100 Subject: [PATCH] Changed channel to playlist --- frontend/app/(main)/page.tsx | 11 +++++++++-- frontend/components/youtube-embed.tsx | 13 ++++++++++--- frontend/interfaces/youtube.ts | 3 ++- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/frontend/app/(main)/page.tsx b/frontend/app/(main)/page.tsx index dcc5b3b..4f9e88c 100644 --- a/frontend/app/(main)/page.tsx +++ b/frontend/app/(main)/page.tsx @@ -9,13 +9,16 @@ import YouTubeEmbed from "@/components/youtube-embed"; import { IYoutube } from "@/interfaces/youtube"; import getShortcode from "@/lib/getShortcode"; +const PLAYLIST_ID = "PLh8PxbpRguvNlmarfGkCTAd-UVAG4QpE9"; + export default async function Home() { let videos: IYoutube | null = null; if (process.env.YOUTUBE_API_KEY) { - const query = `https://www.googleapis.com/youtube/v3/search?key=${process.env.YOUTUBE_API_KEY}&channelId=UCzuFLl5I0WxSMqbeMaiq_FQ&part=snippet,id&order=date&maxResults=50`; + const query = `https://www.googleapis.com/youtube/v3/playlistItems?key=${process.env.YOUTUBE_API_KEY}&playlistId=${PLAYLIST_ID}&part=snippet,id&maxResults=50`; const res = await fetch(query); videos = await res.json(); } + console.log(videos); const hero = await getShortcode("hero_image"); const systemEvolution = await getShortcode("evolution_systeme"); const fondations = await getShortcode("fondements"); @@ -165,9 +168,13 @@ export default async function Home() { title="Vidéos YouTube" > {videos.items.map((video) => { + const id = + typeof video.id !== "string" + ? video.id.videoId + : video.snippet.resourceId.videoId; return ( diff --git a/frontend/components/youtube-embed.tsx b/frontend/components/youtube-embed.tsx index 5ad0121..b1fc463 100644 --- a/frontend/components/youtube-embed.tsx +++ b/frontend/components/youtube-embed.tsx @@ -18,6 +18,13 @@ export default function YouTubeEmbed({ }) { const [isIframeLoaded, setIframeLoaded] = useState(loadIframe); + const id = + typeof video === "string" + ? video + : typeof video.id === "string" + ? video.snippet.resourceId.videoId + : video.id.videoId; + const isString = typeof video === "string"; const _loadIframe = () => setIframeLoaded(true); @@ -36,7 +43,7 @@ export default function YouTubeEmbed({ className="rounded-md shadow-current aspect-video" width={width === "full" ? "100%" : width} height={height === "full" ? "100%" : height} - src={`https://www.youtube-nocookie.com/embed/${isString ? video : video.id.videoId}?rel=0&modestbranding=1&autoplay=${autoPlay ? 1 : 0}`} + src={`https://www.youtube-nocookie.com/embed/${id}?rel=0&modestbranding=1&autoplay=${autoPlay ? 1 : 0}`} title={ isString ? "YouTube video player" : video.snippet.title } @@ -50,7 +57,7 @@ export default function YouTubeEmbed({ width="100%" height="100%" className="w-full h-full object-cover rounded-md shadow-current" - src={`https://img.youtube.com/vi/${isString ? video : video.id.videoId}/hqdefault.jpg`} + src={`https://img.youtube.com/vi/${id}/hqdefault.jpg`} alt={ isString ? "YouTube video player" @@ -62,7 +69,7 @@ export default function YouTubeEmbed({ width={width} height={height} className="w-full h-full object-cover rounded-md shadow-current" - src={`https://img.youtube.com/vi/${isString ? video : video.id.videoId}/hqdefault.jpg`} + src={`https://img.youtube.com/vi/${id}/hqdefault.jpg`} alt={ isString ? "YouTube video player" diff --git a/frontend/interfaces/youtube.ts b/frontend/interfaces/youtube.ts index 410e001..d8e6b22 100644 --- a/frontend/interfaces/youtube.ts +++ b/frontend/interfaces/youtube.ts @@ -10,7 +10,7 @@ export interface IYoutube { export interface IYoutubeItem { kind: string; etag: string; - id: IYoutubeID; + id: IYoutubeID | string; snippet: IYoutubeSnippet; } @@ -28,6 +28,7 @@ export interface IYoutubeSnippet { channelTitle: string; liveBroadcastContent: string; publishTime: Date; + resourceId: IYoutubeID; } export interface IYoutubeThumbnails {