Spaces:
Running
Running
| import { Client } from "https://cdn.jsdelivr.net/npm/@gradio/client/dist/index.min.js"; | |
| let currentRoast = ""; | |
| let currentUsername = ""; | |
| async function checkUser(username) { | |
| try { | |
| const response = await fetch( | |
| `https://huggingface.co/api/users/${username}/overview` | |
| ); | |
| return { valid: response.ok }; | |
| } catch { | |
| return { valid: false }; | |
| } | |
| } | |
| async function roastUser() { | |
| const username = document.getElementById("username-input").value.trim(); | |
| const language = document.getElementById("language-select").value; | |
| const errorBox = document.getElementById("error-box"); | |
| const roastBtn = document.getElementById("roast-btn"); | |
| const roastContainer = document.getElementById("roast-container"); | |
| const roastText = document.getElementById("roast-text"); | |
| errorBox.style.display = "none"; | |
| roastContainer.style.display = "none"; | |
| if (!username) { | |
| errorBox.textContent = "Please provide a username"; | |
| errorBox.style.display = "block"; | |
| return; | |
| } | |
| roastBtn.disabled = true; | |
| roastBtn.textContent = "Roasting in progress..."; | |
| roastBtn.classList.add("animate-pulse"); | |
| const userCheck = await checkUser(username); | |
| if (!userCheck.valid) { | |
| errorBox.textContent = `User '${username}' not found on Hugging Face`; | |
| errorBox.style.display = "block"; | |
| roastBtn.disabled = false; | |
| roastBtn.textContent = "Roast this Hugger 🔥"; | |
| roastBtn.classList.remove("animate-pulse"); | |
| return; | |
| } | |
| try { | |
| const client = await Client.connect("nroggendorff/hugger-roaster-gradio", { | |
| hf_token: "hf_token", | |
| }); | |
| const result = await client.predict("/roast_user", [username, language]); | |
| currentRoast = result.data[0]; | |
| currentUsername = username; | |
| if ( | |
| currentRoast.startsWith("Error") || | |
| currentRoast.startsWith("User") || | |
| currentRoast.startsWith("Please") | |
| ) { | |
| errorBox.textContent = "⚠️ " + currentRoast; | |
| errorBox.style.display = "block"; | |
| } else { | |
| roastText.textContent = currentRoast; | |
| roastContainer.style.display = "block"; | |
| document.getElementById("share-output").style.display = "none"; | |
| } | |
| } catch (error) { | |
| errorBox.textContent = "⚠️ Error generating roast: " + error.message; | |
| errorBox.style.display = "block"; | |
| } | |
| roastBtn.disabled = false; | |
| roastBtn.textContent = "Roast this Hugger 🔥"; | |
| roastBtn.classList.remove("animate-pulse"); | |
| } | |
| async function shareRoast() { | |
| const shareBtn = document.getElementById("share-btn"); | |
| const shareOutput = document.getElementById("share-output"); | |
| shareBtn.disabled = true; | |
| shareBtn.classList.add("animate-pulse"); | |
| try { | |
| const client = await Client.connect("nroggendorff/hugger-roaster-gradio", { | |
| hf_token: "hf_token", | |
| }); | |
| const result = { data: ["Not Implemented."] }; | |
| shareOutput.textContent = result.data[0]; | |
| shareOutput.style.display = "block"; | |
| } catch (error) { | |
| shareOutput.textContent = "Error sharing roast: " + error.message; | |
| shareOutput.style.display = "block"; | |
| } | |
| shareBtn.disabled = false; | |
| shareBtn.classList.remove("animate-pulse"); | |
| } | |
| document.getElementById("roast-btn").addEventListener("click", roastUser); | |
| document.getElementById("share-btn").addEventListener("click", shareRoast); | |