Journey to llm

Un outil pas intégré ne sera pas utilisé.

Allons plus loin dans l’analyse de vidĂ©o YouTube Ă  l’aide d’un #LLM …

Dans la continuité de ce post : https://redteams.fr/post/james_youtube/

James doit être disponible à portée de click !

👉 Ajoutons un bouton aux pages Youtube Ă  l’aide de Grease Monkey qui nous permet de patcher les pages Ă  la volĂ©e

// ==UserScript==
// @name         Bouton Fixe pour https://xxx.xxx avec URL Vidéo sur YouTube à 100px du Bord Gauche
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Ajoute un bouton fixe à 100px du bord gauche en haut sur YouTube qui ouvre https://xxx.xxx avec l'URL de la vidéo en cours comme paramètre
// @author       redteamsfr
// @match        https://www.youtube.com/watch?*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Fonction pour obtenir l'URL de la vidéo en cours
    function getCurrentVideoUrl() {
        // Vérifie si l'utilisateur est sur une page de vidéo
        if (window.location.href.includes('/watch')) {
            return window.location.href;
        }
        return null;
    }

    // Crée le bouton avec un emoji de robot et le texte "James"
    const btn = document.createElement('button');
    btn.textContent = `🤖 James`;
    btn.style.position = 'fixed';
    btn.style.top = '10px'; // Positionne le bouton en haut
    btn.style.left = '200px'; // Positionne le bouton Ă  100px du bord gauche
    btn.style.padding = '10px 20px';
    btn.style.backgroundColor = '#ff0000';
    btn.style.color = 'white';
    btn.style.border = 'none';
    btn.style.borderRadius = '5px';
    btn.style.cursor = 'pointer';
    btn.style.zIndex = '10000'; // Assure que le bouton est bien visible par-dessus les autres éléments

    // Ajoute l'évènement pour ouvrir https://xxx.xxx avec l'URL de la vidéo en cours
    btn.addEventListener('click', () => {
        const currentVideoUrl = getCurrentVideoUrl();
        if (currentVideoUrl) {
            const destinationUrl = `https://xxx.xxx?url=${encodeURIComponent(currentVideoUrl)}`;
            window.open(destinationUrl, '_blank');
        } else {
            alert('Aucune vidéo en cours de lecture détectée.');
        }
    });

    // Ajoute le bouton Ă  la page
    document.body.appendChild(btn);
})();
// ==UserScript==
// @name         Ouvrir https://xxx.xxx avec l'URL de la vidéo YouTube et Bouton Personnalisé avec Emoji
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Ajoute un bouton personnalisé sous chaque vidéo YouTube pour ouvrir https://xxx.xxx avec l'URL de la vidéo comme paramètre
// @author       redteamsfr
// @match        https://www.youtube.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    
    function ajouterBoutons() {
        // Sélectionne tous les conteneurs de vidéos
        const videos = document.querySelectorAll('ytd-rich-item-renderer, ytd-video-renderer');

        videos.forEach(video => {
            // Vérifie si le bouton a déjà été ajouté
            if (video.querySelector('.james-btn')) return;

            // Crée le bouton 
            const btn = document.createElement('button');
            btn.className = 'james-btn';
            btn.style.marginTop = '5px';
            btn.style.display = 'flex';
            btn.style.alignItems = 'center';
            btn.style.justifyContent = 'center';
            btn.style.padding = '5px 10px';
            btn.style.border = '3px solid #ccc';
            btn.style.backgroundColor = '#f9f9f9';
            btn.style.cursor = 'pointer';
          
            const robotEmoji = '🤖';
            const text = document.createTextNode(` ${robotEmoji} James`);

            btn.appendChild(text);

            // Ajoute l'évènement pour ouvrir https://xxx.xxx avec l'URL de la vidéo dans un nouvel onglet
            btn.addEventListener('click', () => {
                // Récupère l'URL de la vidéo
                const videoUrl = video.querySelector('a#thumbnail').href;
                const destinationUrl = `https://xxx.xxx?url=${encodeURIComponent(videoUrl)}`;

                window.open(destinationUrl, '_blank');
            });

            // Ajoute le bouton sous la vidéo
            const metadata = video.querySelector('#meta');
            if (metadata) {
                metadata.parentNode.insertBefore(btn, metadata.nextSibling);
            }
        });
    }

    // Ajoute les boutons lorsque la page est chargée
    window.addEventListener('load', ajouterBoutons);

    // Ajoute également les boutons lors du scroll pour gérer le chargement dynamique des vidéos
    let timeout;
    window.addEventListener('scroll', () => {
        clearTimeout(timeout);
        timeout = setTimeout(ajouterBoutons, 500);
    });
})();

👉 Et avec Streamlit, concevons vite fait une interface graphique conviviale.

Tout ceci assemblé :

Eric
Eric
🛡️ Cybersecurity enthusiast driven by curiosity and the desire to share.