Chan Meng commited on
Commit
d36439f
ยท
1 Parent(s): a2fa624
Files changed (2) hide show
  1. app.py +66 -54
  2. stories_data.json +3 -63
app.py CHANGED
@@ -88,27 +88,28 @@ def query_huggingface(payload):
88
  def generate_story_with_ai(emojis):
89
  """Generate story using AI"""
90
  emoji_text = ' '.join(emojis)
91
- prompt = f"""Create a short story using these emojis: {emoji_text}
92
 
93
  Instructions:
94
- 1. Create a story that naturally incorporates all the given emojis
95
- 2. The story should be fun and suitable for all ages
96
- 3. Keep the story between 100-150 words
97
- 4. The story must have a complete ending
98
- 5. Follow this structure:
99
- - Set up the scene and characters
100
- - Create a small event or conflict
101
- - Resolve the situation with a satisfying ending
102
- 6. Make sure the last sentence provides closure to the story
103
- 7. Do not use any section labels or markers in the story
104
- 8. Write the story as one continuous narrative without sections
105
- 9. Do not include phrases like 'Story continuation:' or 'Story ending:'
 
106
 
107
- Story beginning:
108
  Once upon a sunny day,"""
109
 
110
  try:
111
- with st.spinner('ๅˆ›ๅปบๆ•…ไบ‹ไธญ...'):
112
  response = query_huggingface({"inputs": prompt})
113
 
114
  if response and isinstance(response, list) and len(response) > 0:
@@ -116,47 +117,47 @@ Once upon a sunny day,"""
116
  story = story.replace(prompt, '').strip()
117
 
118
  if not story:
119
- st.error("ๆ•…ไบ‹็”Ÿๆˆๅคฑ่ดฅ๏ผŒ่ฏท้‡่ฏ•")
120
  return None
121
 
122
- # ๆธ…็†ๆ‰€ๆœ‰ๅฏ่ƒฝ็š„็ซ ่Š‚ๆ ‡่ฎฐ
123
  markers_to_remove = [
124
- 'Story middle:',
125
- 'Story end:',
126
- 'Story summary:',
127
- 'Story continuation:',
128
- 'Story ending:',
129
- 'Story begins:',
130
- 'Story continues:',
131
- 'Story concludes:',
132
- 'Beginning:',
133
- 'Middle:',
134
- 'End:',
135
- 'Continuation:',
136
- 'Ending:'
137
  ]
138
 
 
139
  for marker in markers_to_remove:
140
  story = story.replace(marker, '')
141
 
142
- # ๆธ…็†ๅคšไฝ™็š„็ฉบ่กŒ๏ผŒไฟๆŒๆฎต่ฝๆ ผๅผ
143
  story = '\n'.join(line for line in story.split('\n') if line.strip())
 
144
 
145
- # ๆฃ€ๆŸฅๆ•…ไบ‹ๆ˜ฏๅฆๅฎŒๆ•ด็ป“ๆŸ
146
- if story.endswith(('and the', 'and', 'but', 'or', '...')):
147
- story = story.rsplit(' ', 1)[0] + '.'
 
 
 
148
 
149
- # ๆธ…็†ๅคšไฝ™็š„็ฉบๆ ผ
150
- story = ' '.join(story.split())
 
151
 
152
- final_story = f"Once upon a sunny day, {story}\n\n(ไฝฟ็”จ็š„่กจๆƒ…: {emoji_text})"
153
  return final_story
154
 
155
- st.error("ๆ•…ไบ‹็”Ÿๆˆๅคฑ่ดฅ๏ผŒ่ฏท้‡่ฏ•")
156
  return None
157
 
158
  except Exception as e:
159
- st.error(f"็”Ÿๆˆๆ•…ไบ‹ๆ—ถๅ‡บ้”™: {str(e)}")
160
  return None
161
 
162
  def load_stories():
@@ -166,7 +167,7 @@ def load_stories():
166
  with open(DATA_FILE, 'r', encoding='utf-8') as f:
167
  return json.load(f)
168
  except Exception as e:
169
- st.error(f"ๅŠ ่ฝฝๆ•ฐๆฎๆ—ถๅ‡บ้”™: {str(e)}")
170
  return []
171
  return []
172
 
@@ -176,7 +177,7 @@ def save_stories_to_file(stories):
176
  with open(DATA_FILE, 'w', encoding='utf-8') as f:
177
  json.dump(stories, f, ensure_ascii=False, indent=2)
178
  except Exception as e:
179
- st.error(f"ไฟๅญ˜ๆ•ฐๆฎๆ—ถๅ‡บ้”™: {str(e)}")
180
 
181
  # ๅˆๅง‹ๅŒ–ๆˆ–ๅŠ ่ฝฝๆ•…ไบ‹ๆ•ฐๆฎ
182
  if 'stories' not in st.session_state:
@@ -200,12 +201,23 @@ def main():
200
  st.session_state.selected_emojis = []
201
 
202
  # ๅˆ›ๅปบ้€‰้กนๅกๅธƒๅฑ€
203
- tabs = st.tabs(list(EMOJI_CATEGORIES.keys()))
 
 
 
 
 
 
 
 
 
 
 
204
 
205
  # ๅœจๆฏไธช้€‰้กนๅกไธญๆ˜พ็คบๅฏนๅบ”็ฑปๅˆซ็š„emoji
206
- for tab, (category, emojis) in zip(tabs, EMOJI_CATEGORIES.items()):
207
  with tab:
208
- st.write(f"้€‰ๆ‹ฉ{category}:")
209
  # ๅฐ†emojiๅˆ—่กจๅˆ†ๆˆๅคšๅˆ—ๆ˜พ็คบ
210
  cols = st.columns(8) # ๆฏ่กŒ8ไธชemoji
211
  for i, emoji in enumerate(emojis):
@@ -214,36 +226,36 @@ def main():
214
  if len(st.session_state.selected_emojis) < 5: # ้™ๅˆถๆœ€ๅคš้€‰ๆ‹ฉ5ไธชemoji
215
  st.session_state.selected_emojis.append(emoji)
216
  else:
217
- st.warning("ๆœ€ๅคšๅช่ƒฝ้€‰ๆ‹ฉ5ไธช่กจๆƒ…็ฌฆๅท๏ผ")
218
 
219
  # ๆ˜พ็คบๅทฒ้€‰ๆ‹ฉ็š„emoji
220
  if st.session_state.selected_emojis:
221
  st.write("---")
222
- st.write("ๅทฒ้€‰ๆ‹ฉ็š„่กจๆƒ…็ฌฆๅท:", " ".join(st.session_state.selected_emojis))
223
 
224
  # ๆทปๅŠ ๆธ…้™ค้€‰ๆ‹ฉๆŒ‰้’ฎ
225
  col1, col2 = st.columns([1, 4])
226
  with col1:
227
- if st.button("ๆธ…้™ค้€‰ๆ‹ฉ"):
228
  st.session_state.selected_emojis = []
229
  st.experimental_rerun()
230
 
231
  # ็”Ÿๆˆๆ•…ไบ‹ๆŒ‰้’ฎ
232
  with col2:
233
- if st.button("็”Ÿๆˆๆ•…ไบ‹"):
234
  story = generate_story_with_ai(st.session_state.selected_emojis)
235
  if story:
236
  save_story(story)
237
- st.write("็”Ÿๆˆ็š„ๆ•…ไบ‹:")
238
  st.write(story)
239
- st.success("ๆ•…ไบ‹ๅทฒไฟๅญ˜๏ผ")
240
  else:
241
- st.write("่ฏท้€‰ๆ‹ฉ่‡ณๅฐ‘ไธ€ไธช่กจๆƒ…็ฌฆๅทใ€‚")
242
 
243
  # ๆ˜พ็คบๅทฒไฟๅญ˜็š„ๆ•…ไบ‹
244
  if st.session_state.stories:
245
  st.markdown("---")
246
- st.header("ๅทฒ็”Ÿๆˆ็š„ๆ•…ไบ‹")
247
 
248
  # ๆŒ‰็‚น่ตžๆ•ฐๆŽ’ๅบๆ•…ไบ‹
249
  sorted_stories = sorted(st.session_state.stories,
@@ -254,12 +266,12 @@ def main():
254
  for idx, story_data in enumerate(sorted_stories):
255
  col1, col2 = st.columns([4, 1])
256
  with col1:
257
- st.write(f"{idx + 1}. {story_data['story']} (็‚น่ตžๆ•ฐ: {story_data['votes']})")
258
  with col2:
259
  if st.button(f"๐Ÿ‘", key=f"vote_{idx}"):
260
  story_data['votes'] += 1
261
  update_votes()
262
- st.success(f"็‚น่ตžๆˆๅŠŸ๏ผ")
263
  st.experimental_rerun()
264
 
265
  if __name__ == "__main__":
 
88
  def generate_story_with_ai(emojis):
89
  """Generate story using AI"""
90
  emoji_text = ' '.join(emojis)
91
+ prompt = f"""Create a short story (100-150 words) using these emojis: {emoji_text}
92
 
93
  Instructions:
94
+ 1. Write a coherent story that naturally incorporates the given emojis
95
+ 2. The story must be suitable for all ages and have a clear structure:
96
+ - Beginning: Introduce the main character and setting
97
+ - Middle: Present a small challenge or interesting situation
98
+ - End: Resolve the situation with a satisfying conclusion
99
+ 3. Important rules:
100
+ - Write as one continuous narrative without any section markers
101
+ - Do not use labels like 'Story event:' or 'Story resolution:'
102
+ - Ensure the story has a proper ending (no cliffhangers)
103
+ - Keep sentences complete (no trailing thoughts)
104
+ - Maintain a consistent tone throughout
105
+ 4. Example flow (do not copy this exactly):
106
+ "Character encounters situation โ†’ faces challenge โ†’ resolves it โ†’ learns or achieves something"
107
 
108
+ Begin the story with:
109
  Once upon a sunny day,"""
110
 
111
  try:
112
+ with st.spinner('Creating story...'):
113
  response = query_huggingface({"inputs": prompt})
114
 
115
  if response and isinstance(response, list) and len(response) > 0:
 
117
  story = story.replace(prompt, '').strip()
118
 
119
  if not story:
120
+ st.error("Failed to generate story. Please try again.")
121
  return None
122
 
123
+ # ๆธ…็†ๆ‰€ๆœ‰ๅฏ่ƒฝ็š„็ซ ่Š‚ๆ ‡่ฎฐๅ’Œๆ•…ไบ‹ๆ ‡็ญพ
124
  markers_to_remove = [
125
+ 'Story event:', 'Story resolution:', 'Story middle:',
126
+ 'Story end:', 'Story summary:', 'Story continuation:',
127
+ 'Story ending:', 'Story begins:', 'Story continues:',
128
+ 'Story concludes:', 'Beginning:', 'Middle:', 'End:',
129
+ 'Continuation:', 'Ending:', 'Event:', 'Resolution:',
130
+ 'Finally:', 'In conclusion:', 'The end:', 'Summary:',
131
+ 'Next:', 'Then:', 'After that:', 'Eventually:'
 
 
 
 
 
 
132
  ]
133
 
134
+ # ็งป้™คๆ‰€ๆœ‰ๆ ‡่ฎฐ
135
  for marker in markers_to_remove:
136
  story = story.replace(marker, '')
137
 
138
+ # ๆธ…็†ๅคšไฝ™็š„็ฉบ่กŒๅ’Œ็ฉบๆ ผ
139
  story = '\n'.join(line for line in story.split('\n') if line.strip())
140
+ story = ' '.join(story.split())
141
 
142
+ # ๆฃ€ๆŸฅๅนถไฟฎๅคไธๅฎŒๆ•ด็š„็ป“ๅฐพ
143
+ incomplete_endings = ('and', 'but', 'or', 'so', 'while', 'as', 'then', 'when', '...')
144
+ while story.endswith(incomplete_endings) or story.rstrip()[-1] not in '.!?':
145
+ story = story.rsplit(' ', 1)[0].rstrip()
146
+ if not story:
147
+ break
148
 
149
+ # ็กฎไฟๆ•…ไบ‹ๆœ‰้€‚ๅฝ“็š„็ป“ๅฐพๆ ‡็‚น
150
+ if story and story[-1] not in '.!?':
151
+ story += '.'
152
 
153
+ final_story = f"Once upon a sunny day, {story}\n\n(Emojis used: {emoji_text})"
154
  return final_story
155
 
156
+ st.error("Failed to generate story. Please try again.")
157
  return None
158
 
159
  except Exception as e:
160
+ st.error(f"Error generating story: {str(e)}")
161
  return None
162
 
163
  def load_stories():
 
167
  with open(DATA_FILE, 'r', encoding='utf-8') as f:
168
  return json.load(f)
169
  except Exception as e:
170
+ st.error(f"Error loading data: {str(e)}")
171
  return []
172
  return []
173
 
 
177
  with open(DATA_FILE, 'w', encoding='utf-8') as f:
178
  json.dump(stories, f, ensure_ascii=False, indent=2)
179
  except Exception as e:
180
+ st.error(f"Error saving data: {str(e)}")
181
 
182
  # ๅˆๅง‹ๅŒ–ๆˆ–ๅŠ ่ฝฝๆ•…ไบ‹ๆ•ฐๆฎ
183
  if 'stories' not in st.session_state:
 
201
  st.session_state.selected_emojis = []
202
 
203
  # ๅˆ›ๅปบ้€‰้กนๅกๅธƒๅฑ€
204
+ ENGLISH_CATEGORIES = {
205
+ "Faces & Emotions": EMOJI_CATEGORIES["่กจๆƒ…ไธŽๆƒ…็ปช"],
206
+ "Animals": EMOJI_CATEGORIES["ๅŠจ็‰ฉ"],
207
+ "Plants": EMOJI_CATEGORIES["ๆค็‰ฉ"],
208
+ "Food": EMOJI_CATEGORIES["้ฃŸ็‰ฉ"],
209
+ "Activities & Sports": EMOJI_CATEGORIES["ๆดปๅŠจไธŽ่ฟๅŠจ"],
210
+ "Transportation": EMOJI_CATEGORIES["ไบค้€šๅทฅๅ…ท"],
211
+ "Places & Buildings": EMOJI_CATEGORIES["ๅœฐ็‚นไธŽๅปบ็ญ‘"],
212
+ "Objects & Symbols": EMOJI_CATEGORIES["็‰ฉๅ“ไธŽ็ฌฆๅท"]
213
+ }
214
+
215
+ tabs = st.tabs(list(ENGLISH_CATEGORIES.keys()))
216
 
217
  # ๅœจๆฏไธช้€‰้กนๅกไธญๆ˜พ็คบๅฏนๅบ”็ฑปๅˆซ็š„emoji
218
+ for tab, (category, emojis) in zip(tabs, ENGLISH_CATEGORIES.items()):
219
  with tab:
220
+ st.write(f"Select {category}:")
221
  # ๅฐ†emojiๅˆ—่กจๅˆ†ๆˆๅคšๅˆ—ๆ˜พ็คบ
222
  cols = st.columns(8) # ๆฏ่กŒ8ไธชemoji
223
  for i, emoji in enumerate(emojis):
 
226
  if len(st.session_state.selected_emojis) < 5: # ้™ๅˆถๆœ€ๅคš้€‰ๆ‹ฉ5ไธชemoji
227
  st.session_state.selected_emojis.append(emoji)
228
  else:
229
+ st.warning("Maximum 5 emojis allowed!")
230
 
231
  # ๆ˜พ็คบๅทฒ้€‰ๆ‹ฉ็š„emoji
232
  if st.session_state.selected_emojis:
233
  st.write("---")
234
+ st.write("Selected emojis:", " ".join(st.session_state.selected_emojis))
235
 
236
  # ๆทปๅŠ ๆธ…้™ค้€‰ๆ‹ฉๆŒ‰้’ฎ
237
  col1, col2 = st.columns([1, 4])
238
  with col1:
239
+ if st.button("Clear Selection"):
240
  st.session_state.selected_emojis = []
241
  st.experimental_rerun()
242
 
243
  # ็”Ÿๆˆๆ•…ไบ‹ๆŒ‰้’ฎ
244
  with col2:
245
+ if st.button("Generate Story"):
246
  story = generate_story_with_ai(st.session_state.selected_emojis)
247
  if story:
248
  save_story(story)
249
+ st.write("Generated Story:")
250
  st.write(story)
251
+ st.success("Story saved!")
252
  else:
253
+ st.write("Please select at least one emoji.")
254
 
255
  # ๆ˜พ็คบๅทฒไฟๅญ˜็š„ๆ•…ไบ‹
256
  if st.session_state.stories:
257
  st.markdown("---")
258
+ st.header("Generated Stories")
259
 
260
  # ๆŒ‰็‚น่ตžๆ•ฐๆŽ’ๅบๆ•…ไบ‹
261
  sorted_stories = sorted(st.session_state.stories,
 
266
  for idx, story_data in enumerate(sorted_stories):
267
  col1, col2 = st.columns([4, 1])
268
  with col1:
269
+ st.write(f"{idx + 1}. {story_data['story']} (Likes: {story_data['votes']})")
270
  with col2:
271
  if st.button(f"๐Ÿ‘", key=f"vote_{idx}"):
272
  story_data['votes'] += 1
273
  update_votes()
274
+ st.success("Liked!")
275
  st.experimental_rerun()
276
 
277
  if __name__ == "__main__":
stories_data.json CHANGED
@@ -1,74 +1,14 @@
1
  [
2
  {
3
- "story": "ๅœจๅ……ๆปก ๐Ÿ“š ็š„ไธ–็•Œ้‡Œ๏ผŒ๐Ÿ  ๅ‘็Žฐไบ† ๐Ÿ• ็š„ๆ„ไน‰ใ€‚่ฟ™่ฎฉๅคงๅฎถๅผ€ๅง‹ไบ†ไธ€ๅœบ ๐ŸŒž ็š„ๅบ†็ฅ๏ผ",
4
- "votes": 2
5
- },
6
- {
7
- "story": "๐Ÿ  ๅ’Œ ๐ŸŒž ๆ˜ฏๆœ€ๅฅฝ็š„ๆœ‹ๅ‹ใ€‚ๆœ‰ไธ€ๅคฉไป–ไปฌๅ†ณๅฎšๅŽป ๐Ÿ•๏ผŒ่ฟ™ๆ˜ฏไธ€ๆฌก ๐Ÿ“š ็š„็ปๅŽ†๏ผ",
8
- "votes": 2
9
- },
10
- {
11
- "story": "ไปŽๅ‰ๆœ‰ไธ€ๅคฉ๏ผŒ๐Ÿ  ๅ’Œ ๐Ÿ• ไธ€่ตทๅŽปๅ†’้™ฉใ€‚ๅœจ่ทฏไธŠไป–ไปฌ้‡ๅˆฐไบ† ๐ŸŒž๏ผŒๅนถไธ”ๅญฆไผšไบ† ๐Ÿ“š ็š„้‡่ฆๆ€งใ€‚",
12
- "votes": 3
13
- },
14
- {
15
- "story": "ไปŽๅ‰ๆœ‰ไธ€ๅคฉ๏ผŒ๐ŸŒž ๅ’Œ ๐Ÿ“š ไธ€่ตทๅŽปๅ†’้™ฉใ€‚ๅœจ่ทฏไธŠไป–ไปฌ้‡ๅˆฐไบ† ๐Ÿ•๏ผŒๅนถไธ”ๅญฆไผšไบ† ๐Ÿ  ็š„้‡่ฆๆ€งใ€‚",
16
- "votes": 4
17
- },
18
- {
19
- "story": "ไปŽๅ‰ๆœ‰ไธ€ๅคฉ๏ผŒ๐Ÿ• ๅ’Œ ๐Ÿ  ไธ€่ตทๅŽปๅ†’้™ฉใ€‚ๅœจ่ทฏไธŠไป–ไปฌ้‡ๅˆฐไบ† ๐ŸŒž๏ผŒๅนถไธ”ๅญฆไผšไบ† ๐Ÿ“š ็š„้‡่ฆๆ€งใ€‚",
20
- "votes": 0
21
- },
22
- {
23
- "story": "ไปŽๅ‰ๆœ‰ไธ€ๅคฉ๏ผŒ๐Ÿ“š ๅ’Œ ๐Ÿ˜Ž ไธ€่ตทๅŽปๅ†’้™ฉใ€‚ๅœจ่ทฏไธŠไป–ไปฌ้‡ๅˆฐไบ† ๐Ÿถ๏ผŒๅนถไธ”ๅญฆไผšไบ† ๐ŸŽ‰ ็š„้‡่ฆๆ€งใ€‚",
24
- "votes": 0
25
- },
26
- {
27
- "story": "ๅœจๅ……ๆปก ๐Ÿ˜Ž ็š„ไธ–็•Œ้‡Œ๏ผŒ๐Ÿ“š ๅ‘็Žฐไบ† ๐Ÿถ ็š„ๆ„ไน‰ใ€‚่ฟ™่ฎฉๅคงๅฎถๅผ€ๅง‹ไบ†ไธ€ๅœบ ๐Ÿ• ็š„ๅบ†็ฅ๏ผ",
28
- "votes": 0
29
- },
30
- {
31
- "story": "ไปŽๅ‰ๆœ‰ไธ€ๅคฉ๏ผŒ๐Ÿ˜Ž ๅ’Œ ๐Ÿถ ไธ€่ตทๅŽปๅ†’้™ฉใ€‚ๅœจ่ทฏไธŠไป–ไปฌ้‡ๅˆฐไบ† ๐Ÿ•๏ผŒๅนถไธ”ๅญฆไผšไบ† ๐Ÿ“š ็š„้‡่ฆๆ€งใ€‚",
32
- "votes": 0
33
- },
34
- {
35
- "story": "ไปŽๅ‰ๆœ‰ไธ€ๅคฉ๏ผŒ๐Ÿถ ๅ’Œ ๐Ÿ“š ไธ€่ตทๅŽปๅ†’้™ฉใ€‚ๅœจ่ทฏไธŠไป–ไปฌ้‡ๅˆฐไบ† ๐Ÿ˜Ž๏ผŒๅนถไธ”ๅญฆไผšไบ† ๐ŸŽ‰ ็š„้‡่ฆๆ€งใ€‚",
36
- "votes": 0
37
- },
38
- {
39
- "story": "๐Ÿ˜Ž ๅ’Œ ๐ŸŽ‰ ๆ˜ฏๆœ€ๅฅฝ็š„ๆœ‹ๅ‹ใ€‚ๆœ‰ไธ€ๅคฉไป–ไปฌๅ†ณๅฎšๅŽป ๐Ÿ“š๏ผŒ่ฟ™ๆ˜ฏไธ€ๆฌก ๐Ÿถ ็š„็ปๅŽ†๏ผ",
40
- "votes": 0
41
- },
42
- {
43
- "story": "็”Ÿ ๆˆ ไธ€ ไธช ๆœ‰ ่ถฃ ็š„ ๆ•… ไบ‹ ๏ผŒ ๅŒ… ๅซ ่ฟ™ ไบ› ่กจ ๆƒ… :\n\n(ไฝฟ็”จ็š„่กจๆƒ…: ๐ŸŒž ๐Ÿ  ๐Ÿ“š ๐Ÿ•)",
44
- "votes": 1
45
- },
46
- {
47
- "story": "Once upon a sunny day, Max the golden retriever woke up with a wagging tail and a big smile on his face. He loved nothing more than going on adventures with his best friend, Lily, who was always ready for a fun-filled day. Max padded over to his favorite spot on the couch, where Lily was already curled up with her nose buried in a book. Max nudged her playfully with his nose, and Lily giggled as she closed her book and joined Max for breakfast.\n\nStory middle:\nAfter breakfast, Max and Lily decided to take a walk in the park. Max was excited to run around and sniff all the interesting smells, but Lily had other plans. She spotted a small library tucked away in the corner of the park and begged Max to come with her. Max was hesitant at first, but Lily promised him a special treat if he agreed. Max reluctantly followed Lily to the library, where they spent the next hour browsing through the books. Max was surprised to find that some of the books even had pictures of dogs! Lily picked out a few of her favorites, and Max settled down for a snooze on the floor.\n\nStory end\n\n(Emojis used: ๐Ÿ˜Ž ๐Ÿถ ๐Ÿ“š ๐Ÿ•)",
48
- "votes": 3
49
- },
50
- {
51
- "story": "Once upon a sunny day, a boy named Max decided to spend his afternoon reading a new book he had just bought. Max's cozy house was filled with the scent of freshly baked cookies, which made him feel even more excited to start his reading session.\n\nStory middle:\nMax settled into his favorite armchair with a glass of iced tea and his new book. As he delved into the pages, he heard a faint knock on the door. Max's mom appeared, carrying a tray of freshly baked cookies. \"Max, I've just made some cookies. Would you like some?\" she asked. Max smiled, feeling grateful for his loving mother. \"Sure, mom. That would be great!\"\n\nStory end:\nAs Max enjoyed his delicious cookies, he heard a loud rumble outside. Max's mom went to the window to check, and she gasped. \"Max, come here! Look at the sky!\" Max rushed to the window, and he saw a magnificent rainbow arching over the horizon. Max felt so lucky to have experienced such a beautiful moment, surrounded by the comfort of his cozy home and the love of his family.\n\nStory summary:\n\n(Emojis used: ๐Ÿ˜Ž ๐Ÿ  ๐Ÿ“š)",
52
- "votes": 0
53
- },
54
- {
55
- "story": "Once upon a sunny day, a man named Max decided to take his beloved dog, Buddy, for a walk in the nearby park. Max grabbed Buddy's leash and his favorite book, \"101 Dog Tricks,\" and set off.\n\nStory middle:\nAs they strolled through the park, Buddy spotted a group of dogs playing fetch with their owners. Excitedly, Buddy pulled on his leash, trying to get Max's attention. Max noticed Buddy's eagerness and decided to join the game. Max threw a ball, and Buddy eagerly retrieved it, wagging his tail with delight.\n\nAs they continued playing, Max noticed a group of children reading books nearby. Max had an idea and called Buddy over. Max and the children took turns reading aloud to Buddy, who listened intently.\n\nStory end:\nAs the sun began to set, Max and Buddy headed home, exhausted but happy. Max realized that sharing his love of learning and reading with others, including his furry friend, was a joyful experience. From then on, Max made it a point to incorporate reading and learning into his walks with Buddy.\n\n(Emojis used: ๐Ÿ˜Ž ๐Ÿถ ๐Ÿ“š)",
56
- "votes": 0
57
- },
58
- {
59
- "story": "Once upon a sunny day, a happy pup named Baxter was lounging in his cozy doghouse. Suddenly, he heard a loud rumbling sound coming from the sky! ๐Ÿถ๐ŸŒˆ\nCurious and excited, Baxter ran out of his doghouse to see what was happening. To his amazement, he saw a rainbow-colored spaceship ๐Ÿš€ land in his backyard! Baxter barked excitedly, and the spaceship's door opened. Out stepped a group of friendly aliens, who welcomed Baxter aboard their spaceship.\nThe aliens took Baxter on a thrilling tour of the universe, showing him colorful planets, sparkling stars, and swirling galaxies. Baxter had never seen anything like it! After their adventure, the aliens returned Baxter safely to his backyard. Baxter was overjoyed and couldn't stop wagging his tail. From that day on, Baxter was the happiest pup in the world, knowing that he had experienced something truly extraordinary. ๐Ÿถ๐ŸŒˆ๐Ÿš€\n\n(Emojis used: ๐ŸŒˆ ๐Ÿถ ๐Ÿš€)",
60
- "votes": 0
61
- },
62
- {
63
- "story": "Once upon a sunny day, a little girl named Lily was walking in the park. She saw a group of children playing with a lion cub. The cub was playful and wagged its tail as soon as it saw Lily. Lily was thrilled and decided to join them.\nLily approached the group and smiled at the lion cub. The cub looked at her curiously and licked her hand. The children laughed and played with the cub, making funny faces with the ๐Ÿ˜ƒ and ๐Ÿ˜‹ emojis. Lily was having the time of her life, and the cub seemed to enjoy her company too. Suddenly, the cub started running around the park, and Lily chased it, giggling and shouting with excitement.\nAfter a while, the cub got tired and lay down in the shade, yawning. Lily sat beside it, stroking its fur gently. The cub closed its eyes and fell asleep, snoring softly. Lily smiled and watched the cub sleep, feeling content and happy. The children gathered around Lily and the cub, taking pictures and making memories. The park was filled with laughter and joy, thanks to the playful lion cub and the\n\n(Emojis used: ๐Ÿ˜ƒ ๐Ÿ˜‹ ๐Ÿฆ)",
64
  "votes": 0
65
  },
66
  {
67
- "story": "Once upon a sunny day, Emma was sitting on a bench in the park, eating a juicy orange (๐ŸŠ) while watching a baseball game (โšพ) being played on the field. Suddenly, she heard a loud noise and saw a plane (โœˆ๏ธ) flying overhead. She wondered what could be happening. \nStory continuation:\nEmma's curiosity got the best of her, and she decided to follow the plane to see where it was going. She packed her backpack and set off on her adventure. She walked for hours until she finally reached the airport (โœˆ๏ธ). There, she saw the same plane from the park, and to her surprise, she found out that it was going on a trip around the world! Emma was thrilled and knew she had to join the journey. She asked the pilot if she could come along, and to her delight, he agreed. \nStory ending:\nEmma spent the next few months traveling the world, visiting new places, and making new friends. She even got to play baseball (โšพ) with some locals in a few of the countries she visited. When the trip was over, Emma returned home, feeling grateful.\n\n(ไฝฟ็”จ็š„่กจๆƒ…: ๐Ÿ˜„ ๐ŸŠ โšพ โœˆ๏ธ)",
68
  "votes": 0
69
  },
70
  {
71
- "story": "Once upon a sunny day, a group of friends gathered at the park to play a game of baseball. There was Max, the captain, with a big grin on his face. He loved baseball and was determined to win the game. Then there was Lily, the star player, who could hit the ball out of the park. Alex, the goalkeeper, who could catch any ball thrown at him. And lastly, there was Sophie, who was new to the group but eager to learn the game. Story event: As the game started, Max threw the ball to Lily, who hit it hard. The ball flew high and fast, and Sophie tried to catch it, but it bounced off her glove. Alex, quick as a flash, dived and caught the ball, saving the team from losing a point. The crowd cheered as Alex got up, and Lily smiled, impressed by his skills. Story resolution: But then, disaster struck. As Alex was about to throw the ball to Max, Lily accidentally stepped on his foot, causing him to lose his balance. The ball slipped out of his hand, and it rolled towards the fence. Max and Lily ran after it, but Sophie, who had been watching\n\n(ไฝฟ็”จ็š„่กจๆƒ…: ๐Ÿ˜„ โšพ ๐Ÿฃ)",
72
  "votes": 0
73
  }
74
  ]
 
1
  [
2
  {
3
+ "story": "Once upon a sunny day, a group of friends gathered at the park to play a game of baseball. There was Max, the captain, with a big grin on his face. He loved baseball and was determined to win the game. Then there was Lily, the star player, who could hit the ball out of the park. Alex, the goalkeeper, who could catch any ball thrown at him. And lastly, there was Sophie, who was new to the group but eager to learn the game. Story event: As the game started, Max threw the ball to Lily, who hit it hard. The ball flew high and fast, and Sophie tried to catch it, but it bounced off her glove. Alex, quick as a flash, dived and caught the ball, saving the team from losing a point. The crowd cheered as Alex got up, and Lily smiled, impressed by his skills. Story resolution: But then, disaster struck. As Alex was about to throw the ball to Max, Lily accidentally stepped on his foot, causing him to lose his balance. The ball slipped out of his hand, and it rolled towards the fence. Max and Lily ran after it, but Sophie, who had been watching\n\n(Emojis used: ๐Ÿ˜„ โšพ ๐Ÿฃ)",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  "votes": 0
5
  },
6
  {
7
+ "story": "Once upon a sunny day, a little boy named Max was playing with his toy animals in the park. Suddenly, a fierce lion (๐Ÿฆ) appeared out of nowhere and snatched his favorite teddy bear (๐Ÿฏ). Max chased after the lion, but he was too fast. Max's heart sank as he saw the lion disappear into the forest with his beloved toy. Max was sad and hungry (๐Ÿ˜Ÿ), so he decided to follow the lion's paw prints to find his toy and a source of food (๐Ÿฅฉ). As Max ventured into the woods, he stumbled upon a pack of mischievous wolves (๐Ÿบ). They saw Max and immediately started chasing him. Max was frightened, but he remembered his father's advice: \"Be brave and keep running.\" Max ran as fast as he could and finally found the lion's den. The lion was sleeping, and Max found his toy right next to him. Max quietly picked up his toy and started to run back home, but the wolves caught up with him.\n\n(Emojis used: ๐Ÿ˜Ÿ ๐Ÿฏ ๐Ÿฆ ๐Ÿบ ๐Ÿฅฉ)",
8
  "votes": 0
9
  },
10
  {
11
+ "story": "Once upon a sunny day, a boy named Max was walking home from school with a smile on his face. He was excited to grab a hot dog from his favorite food truck, ๐ŸŒญ. As he approached the truck, he saw a group of seagulls, ๐Ÿง, pecking at the leftovers. In the middle, Max hesitated. He didn't want to disturb the birds, but he also didn't want to miss his favorite meal. He thought for a moment and came up with an idea. Max approached the truck and asked the vendor to give him a hot dog wrapped in a paper cone, just like the ice cream cones. The vendor laughed and obliged. Max walked back to the seagulls, holding his cone high. The birds didn't seem to mind, and Max enjoyed his meal with a grin, ๐Ÿ˜š. In the end, Max learned that sometimes, a little creativity goes a long way. He also realized that sharing is caring, and it's always better to spread kindness, even to the smallest creatures. The end.\n\n(Emojis used: ๐Ÿ˜š ๐Ÿง ๐ŸŒญ)",
12
  "votes": 0
13
  }
14
  ]