sunbal7 commited on
Commit
191dcb3
Β·
verified Β·
1 Parent(s): a6cbda1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +42 -5
app.py CHANGED
@@ -13,6 +13,8 @@ from PIL import Image
13
  import io
14
  import matplotlib.pyplot as plt
15
  import requests
 
 
16
 
17
  # Configure Streamlit page
18
  st.set_page_config(
@@ -147,6 +149,12 @@ st.markdown("""
147
  background: #f0f8ff;
148
  padding: 15px;
149
  }
 
 
 
 
 
 
150
  </style>
151
  """, unsafe_allow_html=True)
152
 
@@ -319,6 +327,13 @@ plt.show()
319
  }
320
  }
321
 
 
 
 
 
 
 
 
322
  def analyze_story(story):
323
  """Analyze story and identify programming concepts"""
324
  story_lower = story.lower()
@@ -533,7 +548,8 @@ def create_interactive_animation(story, concepts):
533
  method="animate",
534
  args=[None, {"frame": {"duration": 100, "redraw": True}}]
535
  )]
536
- )])
 
537
 
538
  fig.update_traces(
539
  textfont_size=40,
@@ -646,6 +662,14 @@ def create_story_image(story):
646
  st.error(f"Image generation error: {str(e)}")
647
  return None
648
 
 
 
 
 
 
 
 
 
649
  def main():
650
  """Main application function"""
651
  st.title("πŸ§™β€β™‚οΈ StoryCoder - Learn Python Through Stories!")
@@ -748,15 +772,15 @@ def main():
748
  with col1:
749
  st.caption("Loop Example")
750
  st.code('"A dragon breathes fire 5 times at the castle"', language="text")
751
- st.image("https://i.imgur.com/7zQY1eE.png", width=200)
752
  with col2:
753
  st.caption("Conditional Example")
754
  st.code('"If it rains, the cat stays inside, else it goes out"', language="text")
755
- st.image("https://i.imgur.com/5X8jYAy.png", width=200)
756
  with col3:
757
  st.caption("Function Example")
758
  st.code('"A wizard casts a spell to make flowers grow"', language="text")
759
- st.image("https://i.imgur.com/9zJkQ7P.png", width=200)
760
 
761
  # Animation tab
762
  elif st.session_state.active_tab == "animation":
@@ -783,7 +807,8 @@ def main():
783
  st.plotly_chart(st.session_state.interactive_animation, use_container_width=True)
784
  else:
785
  st.info("Interactive animation preview. The real animation would run on your computer!")
786
- st.image("https://i.imgur.com/8LzQY7a.gif", use_container_width=True)
 
787
 
788
  # Play audio narration
789
  st.subheader("πŸ”Š Story Narration")
@@ -824,6 +849,11 @@ def main():
824
  <pre style="background:#f0f0f0; padding:10px; border-radius:8px;">{details['example']}</pre>
825
  </div>
826
  """, unsafe_allow_html=True)
 
 
 
 
 
827
 
828
  if st.button("See the Magic Code!", use_container_width=True):
829
  st.session_state.active_tab = "code"
@@ -857,6 +887,13 @@ def main():
857
  """)
858
 
859
  st.success("πŸŽ‰ When you run this code, you'll see your story come to life!")
 
 
 
 
 
 
 
860
  else:
861
  st.warning("No code generated yet!")
862
 
 
13
  import io
14
  import matplotlib.pyplot as plt
15
  import requests
16
+ from io import BytesIO
17
+ import json
18
 
19
  # Configure Streamlit page
20
  st.set_page_config(
 
149
  background: #f0f8ff;
150
  padding: 15px;
151
  }
152
+
153
+ .animation-gif {
154
+ max-width: 100%;
155
+ border-radius: 10px;
156
+ box-shadow: 0 8px 16px rgba(0,0,0,0.2);
157
+ }
158
  </style>
159
  """, unsafe_allow_html=True)
160
 
 
327
  }
328
  }
329
 
330
+ # Animation examples for different concepts
331
+ ANIMATION_EXAMPLES = {
332
+ "loop": "https://i.imgur.com/7zQY1eE.gif",
333
+ "conditional": "https://i.imgur.com/5X8jYAy.gif",
334
+ "function": "https://i.imgur.com/9zJkQ7P.gif"
335
+ }
336
+
337
  def analyze_story(story):
338
  """Analyze story and identify programming concepts"""
339
  story_lower = story.lower()
 
548
  method="animate",
549
  args=[None, {"frame": {"duration": 100, "redraw": True}}]
550
  )]
551
+ )]
552
+ )
553
 
554
  fig.update_traces(
555
  textfont_size=40,
 
662
  st.error(f"Image generation error: {str(e)}")
663
  return None
664
 
665
+ def generate_animation_preview(concept):
666
+ """Get a preview GIF for the animation concept"""
667
+ try:
668
+ # Return a sample GIF for the concept
669
+ return ANIMATION_EXAMPLES.get(concept, "https://i.imgur.com/7zQY1eE.gif")
670
+ except:
671
+ return "https://i.imgur.com/7zQY1eE.gif"
672
+
673
  def main():
674
  """Main application function"""
675
  st.title("πŸ§™β€β™‚οΈ StoryCoder - Learn Python Through Stories!")
 
772
  with col1:
773
  st.caption("Loop Example")
774
  st.code('"A dragon breathes fire 5 times at the castle"', language="text")
775
+ st.image(generate_animation_preview("loop"), use_column_width=True, caption="Loop Animation Preview")
776
  with col2:
777
  st.caption("Conditional Example")
778
  st.code('"If it rains, the cat stays inside, else it goes out"', language="text")
779
+ st.image(generate_animation_preview("conditional"), use_column_width=True, caption="Conditional Animation Preview")
780
  with col3:
781
  st.caption("Function Example")
782
  st.code('"A wizard casts a spell to make flowers grow"', language="text")
783
+ st.image(generate_animation_preview("function"), use_column_width=True, caption="Function Animation Preview")
784
 
785
  # Animation tab
786
  elif st.session_state.active_tab == "animation":
 
807
  st.plotly_chart(st.session_state.interactive_animation, use_container_width=True)
808
  else:
809
  st.info("Interactive animation preview. The real animation would run on your computer!")
810
+ st.image(generate_animation_preview(st.session_state.concepts[0] if st.session_state.concepts else "loop"),
811
+ use_container_width=True)
812
 
813
  # Play audio narration
814
  st.subheader("πŸ”Š Story Narration")
 
849
  <pre style="background:#f0f0f0; padding:10px; border-radius:8px;">{details['example']}</pre>
850
  </div>
851
  """, unsafe_allow_html=True)
852
+
853
+ # Show animation preview for the concept
854
+ st.image(generate_animation_preview(concept),
855
+ caption=f"{details['name']} Animation Example",
856
+ use_column_width=True)
857
 
858
  if st.button("See the Magic Code!", use_container_width=True):
859
  st.session_state.active_tab = "code"
 
887
  """)
888
 
889
  st.success("πŸŽ‰ When you run this code, you'll see your story come to life!")
890
+
891
+ # Show what the animation would look like
892
+ st.subheader("🎬 What Your Animation Would Look Like")
893
+ concept = st.session_state.concepts[0] if st.session_state.concepts else "loop"
894
+ st.image(generate_animation_preview(concept),
895
+ caption="This is similar to what your animation would look like",
896
+ use_column_width=True)
897
  else:
898
  st.warning("No code generated yet!")
899