Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Problema con un codice HTML/JS per YouTube

    Salve ho scritto questo codice
    codice:
    <!DOCTYPE html>
    <html lang="it">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Barza TV - Breaking News</title>
    </head>
    <body>
    
    <h1>Barza TV Breaking News</h1>
    
    <h2>Ultima Live:</h2>
    <div id="liveSection">
    </div>
    
    <h2>Ultimo Video Pubblicato:</h2>
    <div id="videoSection">
    </div>
    
    <script>
    // ID del canale YouTube
    const channelId = "UC5lq4z_x_22UuH-b7rLmYBw"; // Sostituisci con il tuo ID canale
    
    // URL del feed RSS
    const rssFeedUrl = `https://www.youtube.com/feeds/videos.xml?channel_id=${channelId}&t=${new Date().getTime()}`;
    
    async function loadYouTubeContent() {
        try {
            // Recupera i dati del feed RSS
            const response = await fetch(rssFeedUrl);
            if (!response.ok) throw new Error("Errore nel caricamento del feed RSS.");
    
            const text = await response.text();
            const parser = new DOMParser();
            const xml = parser.parseFromString(text, "application/xml");
            const entries = xml.querySelectorAll("entry");
    
            if (entries.length === 0) throw new Error("Nessun video trovato.");
    
            let liveVideo = null;
            let latestVideo = null;
    
            // Ordiniamo i video in base alla data (dal più recente)
            const sortedEntries = Array.from(entries).sort((a, b) => {
                const dateA = new Date(a.querySelector("published").textContent);
                const dateB = new Date(b.querySelector("published").textContent);
                return dateB - dateA; // Ordine decrescente
            });
    
            // Analizziamo il feed
            for (const entry of sortedEntries) {
                const videoUrl = entry.querySelector("link")?.getAttribute("href");
                const videoId = new URL(videoUrl).searchParams.get("v");
                const liveStatus = entry.querySelector("yt\\:liveBroadcastContent")?.textContent || "none";
                const publishedDate = new Date(entry.querySelector("published").textContent);
    
                // Se è una live attiva o imminente
                if (liveStatus === "live" || liveStatus === "upcoming") {
                    // Memorizziamo la live più recente
                    if (!liveVideo || publishedDate > liveVideo.date) {
                        liveVideo = { url: videoUrl, id: videoId, date: publishedDate };
                    }
                }
                // Video pubblicato, escludiamo le live concluse
                else if (liveStatus === "none" && !videoUrl.includes("/live/")) {
                    // Aggiorna l'ultimo video pubblicato se non è live
                    if (!latestVideo || publishedDate > latestVideo.date) {
                        latestVideo = { url: videoUrl, id: videoId, date: publishedDate };
                    }
                }
            }
    
            // Mostra la live più recente
            const liveSection = document.getElementById("liveSection");
            if (liveVideo) {
                liveSection.innerHTML = `
                    <a href="${liveVideo.url}" target="_blank">
                        <iframe width="300" height="170" 
                                src="https://www.youtube.com/embed/${liveVideo.id}" 
                                frameborder="0" 
                                allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
                                allowfullscreen>
                        </iframe>
                    </a>
                `;
            } else {
                liveSection.innerHTML = "<p>Nessuna live presente.</p>";
            }
    
            // Mostra l'ultimo video pubblicato (che non è live)
            const videoSection = document.getElementById("videoSection");
            if (latestVideo) {
                videoSection.innerHTML = `
                    <a href="${latestVideo.url}" target="_blank">
                        <iframe width="300" height="170" 
                                src="https://www.youtube.com/embed/${latestVideo.id}" 
                                frameborder="0" 
                                allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
                                allowfullscreen>
                        </iframe>
                    </a>
                `;
            } else {
                videoSection.innerHTML = "<p>Nessun video trovato.</p>";
            }
        } catch (error) {
            console.error(error);
        }
    }
    
    loadYouTubeContent();
    </script>
    
    </body>
    </html>
    Quando al mattino esce il nuovo video va correttamente in ultimo video pubblicato e la sezione ultima live dice nessuna live presente ma quando al pomeriggio c'è la live la sezione ultima live resta vuota e il ultimo video pubblicato viene sostituito dalla live dive sbaglio? Grazie mille

  2. #2
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,730
    trattasi di codice JS, quindi sposto nella sezione idonea

    ricorda di usare il tag CODE del forum per postare codice html/js/css sul forum, grazie
    buon lavoro

  3. #3
    Quote Originariamente inviata da Vincent.Zeno Visualizza il messaggio
    trattasi di codice JS, quindi sposto nella sezione idonea

    ricorda di usare il tag CODE del forum per postare codice html/js/css sul forum, grazie
    buon lavoro
    Grazie mille è riuscito a capire se e dove ho sbagliato qualcosa? O per gestire questo genere di richieste è preferibile utilizzare le api Key v3 di YouTube? Grazie mille

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,730
    Quote Originariamente inviata da giusmega
    è riuscito a capire se e dove ho sbagliato qualcosa?
    non ne ho la minima idea.. ma se ci sono strumenti appositi dati dal fornitore del servizio è certamente indicato sfruttarli

  5. #5
    Quote Originariamente inviata da Vincent.Zeno Visualizza il messaggio
    non ne ho la minima idea.. ma se ci sono strumenti appositi dati dal fornitore del servizio è certamente indicato sfruttarli
    Parla delle api key V3?

  6. #6
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,730
    Quote Originariamente inviata da giusmega
    Parla delle api key V3?
    le hai citate tu, quindi di quello parlavo.
    non ho idea del loro funzionamento.

    anche se non ci si conosce di persona, è usanza sui forum usare il pronome singolare in seconda persona: diamoci tranquillamente del "tu"

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.