import { useState } from "react"; import { useQuery } from "@tanstack/react-query"; import { Link, useRoute } from "wouter"; import { ArrowLeft, Play, Clock, Youtube } from "lucide-react"; import Header from "@/components/header"; import Footer from "@/components/footer"; import { PageSideAds, TopBannerAd, MultiplexAd } from "@/components/adsense"; import { Skeleton } from "@/components/ui/skeleton"; import { format } from "date-fns"; import { de } from "date-fns/locale"; export interface YtVideo { ytId: string; slug: string; title: string; shortTitle: string; rubrik: string; publishedAt: string; durationS: number; teaser: string; description: string; descriptionClean?: string; articleUrl?: string | null; chapters: { t: string; label: string }[]; tags: string[]; previewUrl: string | null; previewS: number; embedUrl?: string; posterUrl: string; youtubeUrl: string; } export function chapSecs(t: string) { const p = String(t).split(":").map((x) => parseInt(x, 10) || 0); return p.length === 3 ? p[0] * 3600 + p[1] * 60 + p[2] : p[0] * 60 + p[1]; } export function dauer(s: number) { const m = Math.floor(s / 60); const r = s % 60; return `${m}:${String(r).padStart(2, "0")}`; } function RelatedCard({ v }: { v: YtVideo }) { return (
{v.shortTitle} {dauer(v.durationS)}

{v.shortTitle}

); } export default function VideoDetailPage() { const [, params] = useRoute("/video/:slug"); // ?t= odpre predvajalnik na tem mestu; enak parameter uporablja // tudi Clip oznacba, iz katere Google naredi "Wichtige Momente". const [startAt, setStartAt] = useState(() => { const n = parseInt(new URLSearchParams(window.location.search).get("t") || "", 10); return Number.isFinite(n) && n > 0 ? n : 0; }); const slug = params?.slug || ""; const { data, isLoading } = useQuery<{ item: YtVideo; related: YtVideo[] }>({ queryKey: [`/api/yt-videos/${slug}`], enabled: !!slug, }); const v = data?.item; return (
{isLoading || !v ? (
) : ( <> {/* Pravi YouTube predvajalnik: Google zahteva predvajljiv video na strani, oglasi pa tecejo enako kot na youtube.com. Navadna vdelava s klikom na play — brez samodejnega predvajanja, ker YouTube v tem primeru oglasov ne servira. */}