Spaces:
Running
Running
Update index.html
Browse files- index.html +64 -62
index.html
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
<head>
|
| 4 |
<meta charset="UTF-8">
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
-
<title>Prenma - Générateur de noms</title>
|
| 7 |
<style>
|
| 8 |
body {
|
| 9 |
font-family: Arial, sans-serif;
|
|
@@ -91,7 +91,7 @@
|
|
| 91 |
border-radius: 5px;
|
| 92 |
font-size: 24px;
|
| 93 |
color: #fff;
|
| 94 |
-
word-wrap: break-word;
|
| 95 |
}
|
| 96 |
</style>
|
| 97 |
</head>
|
|
@@ -119,79 +119,81 @@
|
|
| 119 |
<label for="includeNumbers">Inclure des chiffres</label>
|
| 120 |
</div>
|
| 121 |
|
| 122 |
-
<button
|
| 123 |
|
| 124 |
<div id="result">
|
| 125 |
Nom généré :
|
| 126 |
</div>
|
| 127 |
</div>
|
| 128 |
|
| 129 |
-
<script>
|
| 130 |
-
|
| 131 |
-
const
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 150 |
}
|
| 151 |
-
return name.charAt(0).toUpperCase() + name.slice(1);
|
| 152 |
-
}
|
| 153 |
-
|
| 154 |
-
function generateRealName() {
|
| 155 |
-
// Liste de prénoms et noms de familles
|
| 156 |
-
const firstNames = ['Alex', 'Léa', 'Lucas', 'Emma', 'Hugo', 'Chloé', 'Théo', 'Manon', 'Louise', 'Clementine', 'charlotte', 'Nicole', 'Rose', 'Françoise', 'Elsa', 'Julie', 'Karine', 'Emylie', 'Sylvie', 'Antoine', 'Mïa', "Elena", 'Mathieu', 'Clemence', 'Xavier', 'Laura', 'Veronique', 'Gloria', 'Louna', 'Oceanne', 'Violetine', 'Nora', 'Leo', 'Valentina', 'Nina', 'Lora', 'Dania', 'Sandra', 'Anaselia', 'Anastasia', 'Vincent', 'Olga', 'Maya', 'Lucie', 'Sindy', 'Sandy', 'Wendy', 'Julien', 'Clementine', 'Xavier', 'Georgia'];
|
| 157 |
-
const lastNames = ['Martin', 'Dubois', 'Thomas', 'Robert', 'Petit', 'Durand', 'Leroy', 'Moreau', 'Garcia', 'Bonnet', 'Castorina', 'Baril', 'Geneviere', 'Jonia', 'Mazoo', 'Noca', 'Cary', 'Astro', 'Grosiel', 'Lebois', 'Marte', 'Reno', 'Luminis', 'Zexir', 'Norza', 'Zilda', 'Kachallit', 'Vanilla', 'Durand', 'Bonnard', 'Le marseille', 'Nicotouche', 'Montaise', 'Dubeure', 'Carco', 'Tary'];
|
| 158 |
-
|
| 159 |
-
const randomFirstName = firstNames[Math.floor(Math.random() * firstNames.length)];
|
| 160 |
-
const randomLastName = lastNames[Math.floor(Math.random() * lastNames.length)];
|
| 161 |
-
|
| 162 |
-
return randomFirstName + ' ' + randomLastName;
|
| 163 |
}
|
| 164 |
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 170 |
}
|
| 171 |
-
return name + numbersPart;
|
| 172 |
}
|
|
|
|
|
|
|
|
|
|
| 173 |
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
const style = document.getElementById('nameStyle').value;
|
| 177 |
-
const includeNumbers = document.getElementById('includeNumbers').checked;
|
| 178 |
-
const resultDiv = document.getElementById('result');
|
| 179 |
-
|
| 180 |
-
let generatedName;
|
| 181 |
-
|
| 182 |
-
if (style === 'fantasy') {
|
| 183 |
-
generatedName = generateFantasyName(length);
|
| 184 |
-
} else {
|
| 185 |
-
generatedName = generateRealName();
|
| 186 |
-
}
|
| 187 |
-
|
| 188 |
-
if (includeNumbers) {
|
| 189 |
-
generatedName = addNumbers(generatedName);
|
| 190 |
-
}
|
| 191 |
-
|
| 192 |
-
resultDiv.textContent = 'Nom généré : ' + generatedName;
|
| 193 |
-
}
|
| 194 |
</script>
|
| 195 |
|
| 196 |
</body>
|
| 197 |
-
</html>
|
|
|
|
| 3 |
<head>
|
| 4 |
<meta charset="UTF-8">
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>Prenma - Générateur de noms (modèle)</title>
|
| 7 |
<style>
|
| 8 |
body {
|
| 9 |
font-family: Arial, sans-serif;
|
|
|
|
| 91 |
border-radius: 5px;
|
| 92 |
font-size: 24px;
|
| 93 |
color: #fff;
|
| 94 |
+
word-wrap: break-word;
|
| 95 |
}
|
| 96 |
</style>
|
| 97 |
</head>
|
|
|
|
| 119 |
<label for="includeNumbers">Inclure des chiffres</label>
|
| 120 |
</div>
|
| 121 |
|
| 122 |
+
<button id="generateBtn">Générer</button>
|
| 123 |
|
| 124 |
<div id="result">
|
| 125 |
Nom généré :
|
| 126 |
</div>
|
| 127 |
</div>
|
| 128 |
|
| 129 |
+
<script type="module">
|
| 130 |
+
// Remplacez 'Clemylia/Prenma-model' par le nom de votre modèle s'il est différent
|
| 131 |
+
const modelName = 'Clemylia/Prenma-model';
|
| 132 |
+
let prenmaModel = null;
|
| 133 |
+
let isModelReady = false;
|
| 134 |
+
|
| 135 |
+
// Récupération des éléments HTML
|
| 136 |
+
const resultDiv = document.getElementById('result');
|
| 137 |
+
const nameLengthInput = document.getElementById('nameLength');
|
| 138 |
+
const nameStyleSelect = document.getElementById('nameStyle');
|
| 139 |
+
const includeNumbersCheckbox = document.getElementById('includeNumbers');
|
| 140 |
+
const generateBtn = document.getElementById('generateBtn');
|
| 141 |
+
|
| 142 |
+
// Fonction pour charger le modèle
|
| 143 |
+
async function initializeModel() {
|
| 144 |
+
resultDiv.textContent = 'Chargement du modèle...';
|
| 145 |
+
try {
|
| 146 |
+
const response = await fetch(`https://huggingface.co/${modelName}/raw/main/prenma-model.js`);
|
| 147 |
+
if (!response.ok) {
|
| 148 |
+
throw new Error(`Erreur de téléchargement : ${response.statusText}`);
|
| 149 |
}
|
| 150 |
+
const scriptText = await response.text();
|
| 151 |
+
|
| 152 |
+
const scriptBlob = new Blob([scriptText], { type: 'application/javascript' });
|
| 153 |
+
const scriptUrl = URL.createObjectURL(scriptBlob);
|
| 154 |
+
|
| 155 |
+
const module = await import(scriptUrl);
|
| 156 |
+
|
| 157 |
+
prenmaModel = new module.default();
|
| 158 |
+
isModelReady = true;
|
| 159 |
+
resultDiv.textContent = 'Modèle Prenma prêt !';
|
| 160 |
+
} catch (error) {
|
| 161 |
+
resultDiv.textContent = `Erreur de chargement : ${error.message}`;
|
| 162 |
+
console.error(error);
|
| 163 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 164 |
}
|
| 165 |
|
| 166 |
+
// Fonction pour obtenir les options de l'interface et appeler le modèle
|
| 167 |
+
async function getModelResponse() {
|
| 168 |
+
if (!isModelReady) {
|
| 169 |
+
resultDiv.textContent = "Le modèle n'est pas encore prêt. Veuillez patienter.";
|
| 170 |
+
return;
|
| 171 |
+
}
|
| 172 |
+
|
| 173 |
+
resultDiv.textContent = 'Génération en cours...';
|
| 174 |
+
|
| 175 |
+
// Création de l'objet d'options
|
| 176 |
+
const options = {
|
| 177 |
+
length: parseInt(nameLengthInput.value),
|
| 178 |
+
style: nameStyleSelect.value,
|
| 179 |
+
includeNumbers: includeNumbersCheckbox.checked,
|
| 180 |
+
};
|
| 181 |
+
|
| 182 |
+
try {
|
| 183 |
+
const result = await prenmaModel.generate(options);
|
| 184 |
+
resultDiv.textContent = 'Nom généré : ' + result[0].generated_text;
|
| 185 |
+
} catch (error) {
|
| 186 |
+
resultDiv.textContent = `Erreur de génération : ${error.message}`;
|
| 187 |
+
console.error(error);
|
| 188 |
}
|
|
|
|
| 189 |
}
|
| 190 |
+
|
| 191 |
+
// Attacher l'écouteur d'événement au bouton
|
| 192 |
+
generateBtn.addEventListener('click', getModelResponse);
|
| 193 |
|
| 194 |
+
// Lancer le chargement du modèle au début
|
| 195 |
+
initializeModel();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 196 |
</script>
|
| 197 |
|
| 198 |
</body>
|
| 199 |
+
</html>
|