From 5d365795846a4921b04c86746f3718b11eef7fd2 Mon Sep 17 00:00:00 2001 From: sebastjanartic <45803536-sebastjanartic@users.noreply.replit.com> Date: Thu, 28 Aug 2025 16:59:47 +0000 Subject: [PATCH] Update video platform for improved language and content display Translate user interface elements and fetch video descriptions from meta tags. Replit-Commit-Author: Agent Replit-Commit-Session-Id: d7424866-83d1-4486-a212-ac12b4c7becf Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/8cc42625-c1f5-4e43-99bd-77f2c4dedee2/d7424866-83d1-4486-a212-ac12b4c7becf/3kCbR9A --- client/src/pages/VideoPage.tsx | 8 ++++---- server/bunny.ts | 16 ++++++++++++++-- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/client/src/pages/VideoPage.tsx b/client/src/pages/VideoPage.tsx index 0273fdf..9179105 100644 --- a/client/src/pages/VideoPage.tsx +++ b/client/src/pages/VideoPage.tsx @@ -24,7 +24,7 @@ const formatDuration = (seconds: number): string => { const formatDate = (date: Date | string): string => { const d = typeof date === 'string' ? new Date(date) : date; - return d.toLocaleDateString('sl-SI', { + return d.toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' @@ -300,7 +300,7 @@ export default function VideoPage() { onClick={copyToClipboard} className="w-full px-4 py-2 text-left text-white hover:bg-gray-700" > - Copy link + Copy Link )} @@ -321,7 +321,7 @@ export default function VideoPage() { ) : (
-

Opis videa ni na voljo.

+

Video description not available.

)} @@ -329,7 +329,7 @@ export default function VideoPage() { {/* Recommended videos sidebar */}
-

Recommended videos

+

Recommended Videos

{recommendedVideos.slice(0, 10).map((video) => ( diff --git a/server/bunny.ts b/server/bunny.ts index 1b23d69..a1effdf 100644 --- a/server/bunny.ts +++ b/server/bunny.ts @@ -3,6 +3,7 @@ import { type Video, type InsertVideo } from "@shared/schema"; interface BunnyVideo { guid: string; title: string; + description?: string; length: number; status: number; dateUploaded: string; @@ -81,7 +82,18 @@ export class BunnyService { const iframeUrl = `https://iframe.mediadelivery.net/embed/${this.libraryId}/${bunnyVideo.guid}?preroll=false&postroll=false&ads=false`; // Extract description from BunnyVideoDetails if available - const description = 'description' in bunnyVideo ? bunnyVideo.description || "" : ""; + let description = 'description' in bunnyVideo ? bunnyVideo.description || "" : ""; + + // If no description, check metaTags for description + if (!description && bunnyVideo.metaTags && bunnyVideo.metaTags.length > 0) { + const descriptionTag = bunnyVideo.metaTags.find((tag: any) => + tag.property?.toLowerCase().includes('description') || + tag.property?.toLowerCase().includes('summary') + ); + if (descriptionTag) { + description = descriptionTag.value; + } + } return { id: bunnyVideo.guid, @@ -140,7 +152,7 @@ export class BunnyService { try { console.log(`Fetching video with description from Bunny: ${guid}`); const bunnyVideo: BunnyVideoDetails = await this.makeRequest(`videos/${guid}`); - console.log(`Video description length: ${bunnyVideo.description?.length || 0} characters`); + console.log(`Fetching video: ${bunnyVideo.title} - Description available: ${!!bunnyVideo.description}`); return this.bunnyVideoToVideo(bunnyVideo); } catch (error) { console.error(`Error fetching video ${guid} from Bunny:`, error);