import base64 import re def insert_description(sentence, character, description): """ Integrates the character, its type, and its description within the sentence right after the character's name is mentioned. Parameters: - sentence (str): The original sentence where the description is to be inserted. - character (str): The character whose description is to be added. - description (dict): The dictionary containing the character's type and descriptive words. Returns: str: The modified sentence with the character's description if the character is present; otherwise, returns the original sentence. """ character_lower = character.lower() # Use regex to find and replace the character's name with the name plus the description modified_sentence = re.sub( fr"\b{character}\b", fr"{character.capitalize()}{description}", sentence, flags=re.IGNORECASE ) return modified_sentence def process_text(sentence, character_dict): """ Enhances the given sentence by incorporating descriptions for each mentioned character. Falls back to the original sentence if `character_dict` is empty. Parameters: - sentence (str): The original sentence to be processed. - character_dict (dict): A dictionary mapping characters to their respective descriptions. Returns: str: The sentence modified to include character descriptions where applicable, or the original sentence. """ try: # If character_dict is empty, return the original sentence if not character_dict: print("Character descriptions are empty, returning the original sentence.") return sentence # Start with the original sentence modified_sentence = sentence for character, description in character_dict.items(): # Insert description into the sentence where the character is mentioned modified_sentence = insert_description(modified_sentence, character, description) print(f'modified_sentence: {modified_sentence}') return modified_sentence except Exception as e: print(f"Error processing text: {e}. Returning original sentence.") return sentence def generate_prompt(sentence, character_dict, selected_style): """ Generates a prompt for image generation based on the selected style and input text. Parameters: - style (str): The chosen illustration style. - text (str): The input text for the illustration. Returns: tuple: A prompt string. """ # Retrieve the enhanced sentence associated with the original text image_descriptions = process_text(sentence, character_dict) # Define prompts and other parameters prompt = f"Create a whimsical {selected_style} illustration ideal for a children's book page, from: {image_descriptions}." return prompt