burtenshaw HF Staff commited on
Commit
2522610
Β·
1 Parent(s): cf99266

feat: first commit

Browse files
Files changed (3) hide show
  1. app.py +101 -0
  2. emojis.py +103 -0
  3. requirements.txt +3 -0
app.py ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+
3
+ import streamlit as st
4
+ from openai import OpenAI
5
+ from dotenv import load_dotenv
6
+
7
+ from emojis import emojis
8
+
9
+ load_dotenv()
10
+
11
+ api_key = os.getenv("OPENAI_API_KEY")
12
+
13
+ client = OpenAI(api_key=api_key)
14
+
15
+ # set streamlit wide mode
16
+ st.set_page_config(layout="wide")
17
+
18
+ PROMPT = """A line drawing for a 4 year old childe to color in of these emojis: {emoji}
19
+ no internal lines, no background, no color, outside lines only
20
+ no writing, no numbers, no letters, no symbols, no words
21
+ do not combine images or add additional elements
22
+ do not crop the image, leave good margins around the image
23
+ do not make the lines too thin, they should be easy to color in
24
+ all of the images should be white or outline
25
+ make separate images for each emoji, same number of images as emojis
26
+ based on these emojis: {emoji}
27
+ """
28
+
29
+
30
+ # Function to simulate generating an image based on emoji and audio input
31
+ def generate_image(emoji):
32
+ response = client.images.generate(
33
+ model="dall-e-3",
34
+ prompt=PROMPT.format(emoji=emoji),
35
+ n=1,
36
+ size="1024x1024",
37
+ quality="standard",
38
+ )
39
+ image_url = response.data[0].url
40
+ return image_url
41
+
42
+
43
+ # Set page title
44
+ # st.title("Emoji and Audio Image Generator")
45
+
46
+ # emojis = random.sample(emojis, 10)
47
+ n_columns = 4
48
+ # make a grid shape using st.container and st.columns
49
+
50
+ left, right = st.columns([1, 2])
51
+ st.markdown(
52
+ """
53
+ <style>
54
+ button {
55
+ height: auto;
56
+ padding-top: 10px !important;
57
+ padding-bottom: 10px !important;
58
+ }
59
+ button p {
60
+ font-size: 80px;
61
+ margin: 0;
62
+ padding: 0;
63
+ }
64
+ </style>
65
+ """,
66
+ unsafe_allow_html=True,
67
+ )
68
+
69
+
70
+ @st.experimental_dialog("image generation")
71
+ def dialog():
72
+ emojis = st.session_state.selected_emoji
73
+ st.text("+".join(emojis))
74
+ with st.spinner("Generating..."):
75
+ image = generate_image(emojis)
76
+ st.markdown(f"<img src='{image}'/>", unsafe_allow_html=True)
77
+ st.session_state.selected_emoji = ""
78
+
79
+
80
+ # st.write("Choose an emoji")
81
+ # Create a container for the emojis
82
+ container = st.container()
83
+ # Create a row of columns
84
+ columns = [container.columns(n_columns) for _ in range(len(emojis) // n_columns + 1)]
85
+ # Fill the columns with emojis
86
+
87
+ selected_emoji = st.session_state.get("selected_emoji", "")
88
+
89
+ st.session_state.selected_emoji = "".join(selected_emoji)
90
+
91
+ for i, emoji in enumerate(emojis):
92
+ row = i // n_columns
93
+ col = i % n_columns
94
+ with columns[row][col]:
95
+ if st.button(emoji, key=i):
96
+ if emoji not in st.session_state.selected_emoji:
97
+ st.session_state.selected_emoji = (
98
+ st.session_state.selected_emoji + emoji
99
+ )
100
+ if len(st.session_state.selected_emoji) >= 3:
101
+ dialog()
emojis.py ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ emojis = [
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
+ ]
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ openai
2
+ python-dotenv
3
+ streamlit