File size: 4,970 Bytes
753e5f6
195ffb7
753e5f6
195ffb7
c438cdb
 
753e5f6
 
195ffb7
 
c6f24f8
 
753e5f6
f66af7a
195ffb7
 
 
753e5f6
f66af7a
1ae4512
753e5f6
 
195ffb7
f66af7a
753e5f6
195ffb7
753e5f6
 
 
 
1ae4512
195ffb7
1ae4512
195ffb7
753e5f6
1ae4512
753e5f6
 
42e93b3
 
8d3409d
42e93b3
195ffb7
42e93b3
 
 
 
195ffb7
42e93b3
8d3409d
42e93b3
 
195ffb7
42e93b3
 
f66af7a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3630a7f
f66af7a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1ae4512
 
195ffb7
f66af7a
 
 
 
 
 
195ffb7
c55f324
 
 
 
 
 
daf848f
c55f324
daf848f
 
 
 
 
 
 
c55f324
 
 
46e3f65
c438cdb
 
4196d7f
ec93fba
 
4196d7f
cc56263
c438cdb
cc56263
c438cdb
cc56263
 
 
 
 
09d8509
cc56263
 
 
c438cdb
cc56263
 
c438cdb
195ffb7
1aa1480
c438cdb
 
 
 
 
26efb3b
c438cdb
 
 
c55f324
dc56d68
 
 
 
c438cdb
 
 
 
195ffb7
 
 
c438cdb
 
 
63eb876
 
c438cdb
 
1bfe075
195ffb7
 
 
a967c6e
195ffb7
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
import gradio as gr
import requests, base64, io
from dotenv import load_dotenv
import os, datetime, mimetypes
from gradio import Request

load_dotenv()
API_URL = os.environ.get("API_URL", "http://0.0.0.0:8021")
APP_ENV = os.environ.get("APP_ENV", None)



# Assuming the API returns an image URL in the response
def generate_image(campaign_details):


    # Define your payload/data to send to the image generation API
    data = {
        "request_string": campaign_details,
        "is_single_image": False
    }

    # Make the API call
    response = requests.post(API_URL + "/generate_graphic", json=data)

    # Ensure the API call was successful
    if response.status_code != 200:
        print(f"Error {response.status_code}: {response.text}")
        return "Error: Unable to fetch image from the external API."

    image_data = response.json()

    data_url = image_data['image_url']
    image_desc = image_data['image_description']

    return data_url


content_html = """
<div style="text-align: center; margin-top: 30px;">
    <h2>Slidegen Examples</h2>
    <div style="display: flex; justify-content: space-around; align-items: center;">
        <!-- Displaying one video -->
        <video controls width="30%">
            <source src="https://cdn-uploads.huggingface.co/production/uploads/644252f59a5bbb07ab7a987a/IxuuqPhmIX3Jggqkeiseb.mp4" type="video/mp4">
            Your browser does not support the video tag.
        </video>
        <!-- Displaying two images -->
        <img src="https://cdn-uploads.huggingface.co/production/uploads/644252f59a5bbb07ab7a987a/f4xH6ZNx1rVbKzr8jAHmt.png" alt="Image Description 1" style="width: 30%; margin: 0 10px;">
        <img src="https://cdn-uploads.huggingface.co/production/uploads/644252f59a5bbb07ab7a987a/A9BoWW2ulZycv0OQaihKO.png" alt="Image Description 2" style="width: 30%; margin: 0 10px;">
    </div>
</div>

"""

default_value = """
# Brand Name
Enter your brand name here

## Description
Enter your description here.

---

## Branding

### Colors
Primary Color: i.e #000000
Secondary Color: i.e #FFFFFF

### Font
Enter Google font here i.e Arial

### Logo
Enter your logo url here.

---

## Audience
Enter your target audience here.

---

## Headings
### Main Heading
Your main heading text here.

### Sub-heading
Your sub-heading text here.

---

## Image Layout
Selected Layout: Mobile Portrait (750x1334)

**Examples of layouts: Mobile Portrait (750x1334), Mobile Landscape (940x470), Square (2048x2048)


---

## Custom Graphics
Enter your custom graphic prompt here.
"""


# Escape default_value for JavaScript
escaped_default_value = default_value.replace('\n', '\\n').replace('\'', '\\\'')
js = f'''

function js() {{

   // let default_value = '{escaped_default_value}';
    window.set_cookie = function(key, value) {{
     //   if (!key || !value || value.length < 20) {{
     //       console.log("Cannot set cookie, key or value is undefined or null", key, value);
    //        console.log("default value set to: ", default_value);
    //        return [default_value];
    //    }}
    //    document.cookie = key + '=' + value + '; Path=/; SameSite=Strict';
    //    return [value];
    }}
}}
'''


def get_config(request: Request):

    if not request or not hasattr(request, 'cookies'):
        return default_value

    # Initialize with default value
    config = {"campaign_details": default_value}
    # Check if 'campaign_details' is in cookies
    if 'campaign_details' in request.cookies:
        # Assign cookie value to config if exists
        config_value = request.cookies.get('campaign_details', None)
        if config_value:
            if len(config_value) > 20:
                config['campaign_details'] = config_value
        else:
            print("Cookie 'campaign_details' is found but empty, using default_value")
    else:
        print("Cookie 'campaign_details' not found, using default_value")

    print(f"Config returned: {config['campaign_details']}")  # Debugging log
    return config['campaign_details']


with gr.Blocks(analytics_enabled=False) as iface:

    campaign_details_input = gr.Textbox(
        lines=10,
        placeholder="Enter your Brand and campaign details here",
        label="Campaign Details",
        value=default_value
    )

    campaign_details_input.change(
        fn=None,
        inputs=campaign_details_input,
        outputs=[],
        js="(value) => { console.log('Setting cookie:', value); set_cookie('campaign_details', value); }"
    )

    gr.Interface(
        fn=generate_image,
        inputs=campaign_details_input,
        outputs=[
            gr.components.Image(label="Generated Image")
        ],
        title="Slidegen AI - Image generator",
        article=content_html,
        description="Generate social media creatives from a few prompts",
        live=False,
        js=js
    )

    #iface.load(fn=get_config, outputs=campaign_details_input, js=js)



iface.launch(show_error=True)