Hanaz Writers

Free AI Book Cover Creator

Romantic Drama Comedy Educational Historical
(function(){ // Prevent duplicate loading if(window.freeCoverLoaded) return; window.freeCoverLoaded = true; // API const API = "https://ai.hanazwriters.org/free/cover-creator"; // Storage key const STORAGE_KEY = "hanaz_cover_creator_used"; // Browser fingerprint function getFingerprint(){ return btoa( navigator.userAgent + screen.width + screen.height + navigator.language + Intl.DateTimeFormat() .resolvedOptions() .timeZone ); } const browserFingerprint = getFingerprint(); // One-time use let usedOnce = localStorage.getItem(STORAGE_KEY) === "used"; // Premium popup HTML function showPremiumBox(){ document .getElementById("resultBox") .innerHTML = `

Unlock Premium Version

The free version allows only one cover generation.

Go Premium
`; document .getElementById("generateBtn") .disabled = true; } // Show immediately after refresh if(usedOnce){ showPremiumBox(); } document .getElementById("generateBtn") .addEventListener("click", generateCover); async function generateCover(){ const box = document.getElementById("resultBox"); // Block second use if(usedOnce){ showPremiumBox(); return; } const title = document.getElementById("titleInput").value.trim(); const author = document.getElementById("authorInput").value.trim(); const synopsis = document.getElementById("synopsisInput").value.trim(); const genre = document.getElementById("genreInput").value; // Validation if(!title || !author || !synopsis){ box.innerHTML = "

Please complete all fields.

"; return; } box.innerHTML = "

Generating printable covers...

"; try{ const res = await fetch(API,{ method:"POST", headers:{ "Content-Type":"application/json" }, body:JSON.stringify({ title, author, synopsis, genre, fingerprint: browserFingerprint }) }); // Handle limit reached if(res.status === 403){ usedOnce = true; localStorage.setItem( STORAGE_KEY, "used" ); showPremiumBox(); return; } // Other errors if(!res.ok){ throw new Error("Server error"); } const data = await res.json(); box.innerHTML = ` `; usedOnce = true; localStorage.setItem( STORAGE_KEY, "used" ); }catch(err){ box.innerHTML = `

${err.message}

`; } } })();