end of tickets
This commit is contained in:
@@ -14,6 +14,13 @@ exports.generatePicturePrompt = (project = {}) => {
|
||||
.replace(/[<>]/g, "")
|
||||
.trim();
|
||||
};
|
||||
const normalizeForMatching = (value = "") => {
|
||||
if (typeof value !== "string") return "";
|
||||
return value
|
||||
.normalize("NFD")
|
||||
.replace(/[\u0300-\u036f]/g, "")
|
||||
.toLowerCase();
|
||||
};
|
||||
|
||||
const titleForPrompt = sanitizeInline(title) || "Sans titre";
|
||||
const artistName =
|
||||
@@ -63,11 +70,23 @@ exports.generatePicturePrompt = (project = {}) => {
|
||||
? "Palette vive et contrastée (magenta, cyan, jaune, bleu électrique)"
|
||||
: "Palette harmonieuse et douce (bleu nuit, violet, corail, or pâle)";
|
||||
|
||||
const coverStyle = String(coverStyleRaw || "").trim();
|
||||
const tagsLine = tags.join(" ; ") || "Non spécifié";
|
||||
const coverStyleInput = String(coverStyleRaw || "").trim();
|
||||
const coverStyle = sanitizeInline(coverStyleInput);
|
||||
const normalizedStyle = normalizeForMatching(coverStyle);
|
||||
let coverStyleGuidance = coverStyle;
|
||||
if (normalizedStyle.includes("realist")) {
|
||||
coverStyleGuidance =
|
||||
"Style réaliste photographique hyper détaillé, textures fidèles, lumière naturelle, profondeur de champ crédible, aucun effet cartoon, fantastique ou peint";
|
||||
}
|
||||
const hasTags = tags.length > 0;
|
||||
const tagsLine = hasTags
|
||||
? `${tags.join(
|
||||
" ; ",
|
||||
)}. Utilise ces indications pour guider uniquement la palette, l'énergie et l'émotion, sans représenter littéralement les instruments, objets ou mots cités.`
|
||||
: "Ambiance sonore non précisée : crée une atmosphère abstraite sans instrument ni objet musical apparent.";
|
||||
const lyricsLine = lyricsSample || "Pas d'extraits fournis";
|
||||
const styleLine = coverStyle
|
||||
? `${coverStyle}. ${paletteHint}`
|
||||
const styleLine = coverStyleGuidance
|
||||
? `${coverStyleGuidance}. ${paletteHint}`
|
||||
: `${paletteHint}. Style libre, artistique et lumineux.`;
|
||||
const typographyLine = hasArtistName
|
||||
? `Reproduis strictement le titre de la chanson ${titleForPrompt} sans modification, sans traduction et sans ajout ou suppression de caractères. Ajoute également le nom de l'artiste ${artistName} de manière artistique, parfaitement lisible et hiérarchisée, en harmonie avec le style abstrait et lumineux de la pochette.`
|
||||
@@ -83,7 +102,7 @@ ${artistLine} <STYLE_MUSICAL>${tagsLine}</STYLE_MUSICAL>
|
||||
<EXTRAITS_PAROLES>${lyricsLine}</EXTRAITS_PAROLES>
|
||||
</BRIEF>
|
||||
|
||||
<CONTEXTES_VISUELS>
|
||||
<CONTEXTES_VISUELS>
|
||||
<FORMAT>Image carrée 1024x1024 pixels, résolution haute.</FORMAT>
|
||||
<STYLE>${styleLine}</STYLE>
|
||||
<COMPOSITION>La composition doit être dynamique et remplir toute la surface, sans laisser de bordures ni de zones vides.</COMPOSITION>
|
||||
@@ -95,6 +114,7 @@ ${artistLine} <STYLE_MUSICAL>${tagsLine}</STYLE_MUSICAL>
|
||||
<INTERDIT>Personnes, visages ou silhouettes reconnaissables.</INTERDIT>
|
||||
<INTERDIT>Fonds blancs ou bordures délimitant l'image.</INTERDIT>
|
||||
<INTERDIT>Texte illisible ou trop petit.</INTERDIT>
|
||||
<INTERDIT>Représenter des instruments ou objets évoqués dans STYLE_MUSICAL : ces informations servent uniquement au contexte audio.</INTERDIT>
|
||||
</CONTRAINTES>
|
||||
`.trim();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user