face-ai / script.js
aheedsajid's picture
Upload 3 files
cb83d91 verified
const API_KEY_STORAGE_KEY = 'rapidapi_key';
document.addEventListener('DOMContentLoaded', () => {
const savedApiKey = localStorage.getItem(API_KEY_STORAGE_KEY);
if (savedApiKey) {
document.getElementById('apiKey').value = savedApiKey;
}
});
function saveApiKey() {
const apiKey = document.getElementById('apiKey').value.trim();
if (apiKey) {
localStorage.setItem(API_KEY_STORAGE_KEY, apiKey);
showNotification('API key saved successfully!');
} else {
showNotification('Please enter a valid API key', true);
}
}
function showNotification(message, isError = false) {
const notification = document.createElement('div');
notification.className = `fixed top-4 right-4 px-6 py-3 rounded-lg text-white ${
isError ? 'bg-red-500' : 'bg-green-500'
} shadow-lg transform transition-transform duration-300 ease-in-out`;
notification.textContent = message;
document.body.appendChild(notification);
setTimeout(() => {
notification.style.transform = 'translateY(-100%)';
setTimeout(() => notification.remove(), 300);
}, 3000);
}
async function generateImage() {
const apiKey = document.getElementById('apiKey').value.trim();
const referenceImageUrl = document.getElementById('referenceImageUrl').value.trim();
const prompt = document.getElementById('prompt').value.trim();
const imageSize = document.getElementById('imageSize').value;
if (!apiKey) {
showNotification('Please enter your RapidAPI key', true);
return;
}
if (!referenceImageUrl) {
showNotification('Please enter a reference image URL', true);
return;
}
if (!prompt) {
showNotification('Please enter a prompt', true);
return;
}
const generateBtn = document.getElementById('generateBtn');
const loadingSpinner = document.getElementById('loadingSpinner');
const resultImage = document.getElementById('resultImage');
generateBtn.disabled = true;
loadingSpinner.classList.remove('hidden');
resultImage.classList.add('hidden');
try {
const response = await fetch('https://text-to-image-api-with-face.p.rapidapi.com/face-ai.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-rapidapi-host': 'text-to-image-api-with-face.p.rapidapi.com',
'x-rapidapi-key': apiKey
},
body: JSON.stringify({
reference_images: [{
image_url: referenceImageUrl
}],
prompt: prompt,
image_size: imageSize
})
});
const data = await response.json();
if (data.url) {
resultImage.src = data.url;
resultImage.classList.remove('hidden');
} else {
throw new Error('No image URL in response');
}
} catch (error) {
showNotification('Error generating image: ' + error.message, true);
} finally {
generateBtn.disabled = false;
loadingSpinner.classList.add('hidden');
}
}
document.querySelectorAll('input').forEach(input => {
input.addEventListener('keypress', (e) => {
if (e.key === 'Enter') {
if (input.id === 'apiKey') {
saveApiKey();
} else {
generateImage();
}
}
});
});