google.com, pub-1485419071735462, DIRECT, f08c47fec0942fa0 Fuva HD Tools

Saturday, March 8, 2025

SCREEN RECORDER TOOL

Screen Recorder Tool

Screen Recorder Tool

body { font-family: 'Arial', sans-serif; background: linear-gradient(135deg, #ff9a9e, #fad0c4); text-align: center; padding: 20px; } .container { max-width: 600px; margin: auto; background: white; padding: 20px; border-radius: 10px; box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2); } h1 { color: #333; } video { width: 100%; border-radius: 10px; margin-top: 10px; background: black; } .buttons { margin-top: 20px; } button { padding: 10px 15px; margin: 5px; border: none; border-radius: 5px; cursor: pointer; font-size: 16px; } #start { background-color: #4CAF50; color: white; } #start:hover { background-color: #45a049; } #stop { background-color: #f44336; color: white; } #stop:hover { background-color: #d32f2f; } a#download { display: inline-block; padding: 10px 15px; background: #2196F3; color: white; text-decoration: none; border-radius: 5px; font-size: 16px; } a#download:hover { background: #1976D2; } let recorder; let stream; let recordedChunks = []; const startButton = document.getElementById("start"); const stopButton = document.getElementById("stop"); const downloadLink = document.getElementById("download"); const videoPreview = document.getElementById("preview"); startButton.addEventListener("click", async () => { try { stream = await navigator.mediaDevices.getDisplayMedia({ video: { mediaSource: "screen" }, audio: true }); videoPreview.srcObject = stream; recorder = new RecordRTC(stream, { type: 'video', mimeType: 'video/webm', disableLogs: true }); recorder.startRecording(); startButton.disabled = true; stopButton.disabled = false; } catch (error) { console.error("Error accessing screen: ", error); } }); stopButton.addEventListener("click", () => { recorder.stopRecording(() => { let blob = recorder.getBlob(); let url = URL.createObjectURL(blob); downloadLink.href = url; downloadLink.download = "screen-recording.webm"; downloadLink.style.display = "inline-block"; stopButton.disabled = true; startButton.disabled = false; videoPreview.srcObject = null; stream.getTracks().forEach(track => track.stop()); }); });

Friday, March 15, 2024

BMI Calculator Tool

BMI Calculator

BMI Calculator

/* styles.css */ body { font-family: Arial, sans-serif; background-color: #f4f4f4; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; padding: 0; } .container { text-align: center; } h1 { color: #333; } #calculator { padding: 20px; background-color: #fff; border-radius: 5px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } label { font-size: 16px; margin-right: 10px; } input[type="number"] { padding: 10px; font-size: 16px; border-radius: 5px; border: 1px solid #ccc; margin-right: 10px; } button { background-color: #3498db; color: #fff; border: none; padding: 10px 20px; font-size: 16px; cursor: pointer; border-radius: 5px; margin-top: 10px; } #result { font-size: 24px; margin-top: 10px; } // scripts.js function calculateBMI() { const height = parseFloat(document.getElementById('height').value); const weight = parseFloat(document.getElementById('weight').value); if (isNaN(height) || isNaN(weight)) { alert('Please enter valid values for height and weight.'); return; } const bmi = (weight / ((height / 100) ** 2)).toFixed(2); let category; if (bmi < 18.5) { category = 'Underweight'; } else if (bmi < 24.9) { category = 'Normal weight'; } else if (bmi < 29.9) { category = 'Overweight'; } else { category = 'Obese'; } document.getElementById('result').textContent = `Your BMI is ${bmi}. You are ${category}.`; }

Thursday, March 14, 2024

Currency Converter Tool

Currency Converter

Currency Converter

/* styles.css */ body { font-family: Arial, sans-serif; background-color: #f4f4f4; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; padding: 0; } .container { text-align: center; } h1 { color: #333; } #converter { padding: 20px; background-color: #fff; border-radius: 5px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } label { font-size: 16px; margin-right: 10px; } input[type="number"] { padding: 10px; font-size: 16px; border-radius: 5px; border: 1px solid #ccc; margin-right: 10px; } select { padding: 10px; font-size: 16px; border-radius: 5px; border: 1px solid #ccc; } button { background-color: #3498db; color: #fff; border: none; padding: 10px 20px; font-size: 16px; cursor: pointer; border-radius: 5px; margin-top: 10px; } #converted-amount { font-size: 24px; margin-top: 10px; } // scripts.js async function fetchCurrencies() { const response = await fetch('https://api.exchangerate-api.com/v4/latest/USD'); const data = await response.json(); const currencies = Object.keys(data.rates); const fromCurrencySelect = document.getElementById('from-currency'); const toCurrencySelect = document.getElementById('to-currency'); currencies.forEach(currency => { const option = document.createElement('option'); option.value = currency; option.textContent = currency; fromCurrencySelect.appendChild(option); const option2 = document.createElement('option'); option2.value = currency; option2.textContent = currency; toCurrencySelect.appendChild(option2); }); } fetchCurrencies(); async function convert() { const fromCurrency = document.getElementById('from-currency').value; const toCurrency = document.getElementById('to-currency').value; const amount = parseFloat(document.getElementById('amount').value); if (isNaN(amount)) { alert('Please enter a valid amount.'); return; } const response = await fetch(`https://api.exchangerate-api.com/v4/latest/${fromCurrency}`); const data = await response.json(); const rate = data.rates[toCurrency]; const convertedAmount = (amount * rate).toFixed(2); document.getElementById('converted-amount').textContent = `${amount} ${fromCurrency} = ${convertedAmount} ${toCurrency}`; }

Wednesday, March 13, 2024

Weather Forecast Widget

Weather Forecast Widget

Weather Forecast Widget

/* styles.css */ body { font-family: Arial, sans-serif; background-color: #f4f4f4; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; padding: 0; } .container { text-align: center; } h1 { color: #333; } #weather-widget { padding: 20px; background-color: #fff; border-radius: 5px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } #location { margin-bottom: 20px; } input[type="text"] { padding: 10px; font-size: 16px; border-radius: 5px; border: 1px solid #ccc; } button { background-color: #3498db; color: #fff; border: none; padding: 10px 20px; font-size: 16px; cursor: pointer; border-radius: 5px; margin-left: 10px; } #weather-info p { font-size: 18px; margin: 5px 0; } // scripts.js async function getWeather() { const cityInput = document.getElementById('city-input').value.trim(); if (cityInput === '') { alert('Please enter a city.'); return; } const API_KEY = 'YOUR_API_KEY'; // Replace with your OpenWeatherMap API key const API_URL = `https://api.openweathermap.org/data/2.5/weather?q=${cityInput}&appid=${API_KEY}&units=metric`; try { const response = await fetch(API_URL); const data = await response.json(); if (data.cod === '404') { alert('City not found. Please enter a valid city.'); return; } displayWeather(data); } catch (error) { console.error('Error fetching weather data:', error); alert('An error occurred while fetching weather data. Please try again later.'); } } function displayWeather(data) { const description = data.weather[0].description; const temperature = `${data.main.temp}°C`; const humidity = `Humidity: ${data.main.humidity}%`; const windSpeed = `Wind Speed: ${data.wind.speed} m/s`; document.getElementById('weather-description').textContent = `Weather: ${description}`; document.getElementById('temperature').textContent = `Temperature: ${temperature}`; document.getElementById('humidity').textContent = humidity; document.getElementById('wind-speed').textContent = windSpeed; }

Tuesday, March 12, 2024

Random Quote Generator Tool

Random Quote Generator

Random Quote Generator

Loading...

/* styles.css */ body { font-family: Arial, sans-serif; background-color: #f4f4f4; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; padding: 0; } .container { text-align: center; } h1 { color: #333; } #quote-container { padding: 20px; background-color: #fff; border-radius: 5px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } #quote-text { font-size: 24px; margin-bottom: 20px; } #new-quote-btn { background-color: #3498db; color: #fff; border: none; padding: 10px 20px; font-size: 16px; cursor: pointer; border-radius: 5px; } // scripts.js async function getRandomQuote() { const response = await fetch('https://zenquotes.io/api/random'); const data = await response.json(); const quote = data[0].q; document.getElementById('quote-text').textContent = `"${quote}"`; } getRandomQuote();

Monday, March 11, 2024

Todo List Application



Todo List

Todo List

    /* styles.css */ body { font-family: Arial, sans-serif; background-color: #f4f4f4; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; padding: 0; } .container { text-align: center; } h1 { color: #333; } #todo-form { margin-bottom: 20px; } input[type="text"] { padding: 10px; font-size: 16px; border-radius: 5px; border: 1px solid #ccc; } button { background-color: #3498db; color: #fff; border: none; padding: 10px 20px; font-size: 16px; cursor: pointer; border-radius: 5px; margin-left: 10px; } ul { list-style-type: none; padding: 0; } li { display: flex; align-items: center; margin-bottom: 10px; } .delete-btn { background-color: #e74c3c; color: #fff; border: none; padding: 5px 10px; font-size: 14px; cursor: pointer; border-radius: 5px; margin-left: 10px; } .completed { text-decoration: line-through; } // scripts.js const todoInput = document.getElementById('todo-input'); const todoList = document.getElementById('todo-list'); function addTodo() { const todoText = todoInput.value.trim(); if (todoText === '') { alert('Please enter a task.'); return; } const todoItem = createTodoItem(todoText); todoList.appendChild(todoItem); todoInput.value = ''; } function createTodoItem(todoText) { const todoItem = document.createElement('li'); todoItem.textContent = todoText; const deleteBtn = document.createElement('button'); deleteBtn.textContent = 'Delete'; deleteBtn.classList.add('delete-btn'); deleteBtn.onclick = function() { todoItem.remove(); }; const completeCheckbox = document.createElement('input'); completeCheckbox.type = 'checkbox'; completeCheckbox.onchange = function() { if (completeCheckbox.checked) { todoItem.classList.add('completed'); } else { todoItem.classList.remove('completed'); } }; todoItem.appendChild(completeCheckbox); todoItem.appendChild(deleteBtn); return todoItem; }

    Saturday, March 9, 2024

    Pomodoro Timer Tool

    Pomodoro Timer

    Pomodoro Timer

    25:00
    /* styles.css */ body { font-family: Arial, sans-serif; background-color: #f4f4f4; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; padding: 0; } .container { text-align: center; } h1 { color: #333; } #timer { margin-bottom: 20px; } #timer-display { font-size: 48px; margin-bottom: 10px; } button { background-color: #3498db; color: #fff; border: none; padding: 10px 20px; font-size: 16px; cursor: pointer; border-radius: 5px; margin: 0 10px; } button:disabled { background-color: #ccc; cursor: not-allowed; } // scripts.js let countdownInterval; let totalTime = 25 * 60; // 25 minutes in seconds let timeLeft = totalTime; let isBreakTime = false; function startTimer() { if (!countdownInterval) { countdownInterval = setInterval(updateTimer, 1000); document.getElementById('startBtn').disabled = true; } } function updateTimer() { const minutes = Math.floor(timeLeft / 60); const seconds = timeLeft % 60; const displayMinutes = String(minutes).padStart(2, '0'); const displaySeconds = String(seconds).padStart(2, '0'); document.getElementById('timer-display').textContent = `${displayMinutes}:${displaySeconds}`; if (timeLeft === 0) { clearInterval(countdownInterval); if (isBreakTime) { isBreakTime = false; totalTime = 25 * 60; // Reset to work time } else { isBreakTime = true; totalTime = 5 * 60; // Set break time to 5 minutes } timeLeft = totalTime; countdownInterval = null; document.getElementById('startBtn').disabled = false; } else { timeLeft--; } } function resetTimer() { clearInterval(countdownInterval); countdownInterval = null; timeLeft = totalTime; document.getElementById('timer-display').textContent = '25:00'; document.getElementById('startBtn').disabled = false; }

    SCREEN RECORDER TOOL

    Screen Recorder Tool Screen Recorder Tool Start Recording ...