File size: 1,698 Bytes
ab9f5d8
 
 
 
 
ca17086
ab9f5d8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13a93cb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b7abf3f
ab9f5d8
13a93cb
9c16909
13a93cb
 
 
 
 
 
 
ab9f5d8
13a93cb
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import re
from PIL import Image
import io
from dotenv import load_dotenv
import os
import requests

load_dotenv()


def generate_image_prompts(script):
    # Split the script into sentences
    sentences = re.split(r'(?<=[.!?]) +', script)
    
    # Generate prompts for each sentence
    prompts = []
    for sentence in sentences:
        if sentence.strip():  # Ensure the sentence is not empty
            prompts.append(sentence.strip())
    
    return prompts

def hf_pipeline(prompt, max_retries=5, delay=30):
    retries = 0
    while retries < max_retries:
        response = requests.post(f"https://api-inference.huggingface.co/models/Shakker-Labs/AWPortrait-FL", 
                                 json={"inputs": prompt})
        if response.status_code == 503:
            print(f"Model is loading, retrying in {delay} seconds...")
            retries += 1
            time.sleep(delay)
        elif response.status_code == 200:
            return response.json()
        else:
            raise Exception(f"Failed to generate image. Status code: {response.status_code}, {response.text}")
    
    raise Exception(f"Failed to generate image after {max_retries} retries.")

def generate_images(prompts):
    try:
        image_files = []
        for idx, prompt in enumerate(prompts):
            print(f"Generating image for prompt: {prompt}")
            # Ensure the prompt is processed on the correct device
            image = hf_pipeline(prompt).images[0]
            filename = f"generated_image_{idx}.png"
            image.save(filename)
            image_files.append(filename)
    
        return image_files
    except Exception as e:
        print(e)