Spaces:
Sleeping
Sleeping
| # ν¨ν€μ§ λΆλ¬μ€κΈ° | |
| import re | |
| import base64 | |
| from io import BytesIO | |
| import streamlit as st | |
| import numpy as np | |
| import pandas as pd | |
| from gtts import gTTS | |
| # μμ λ°μ΄ν° | |
| options = ["", "2024-08-24", "2024-09-26"] | |
| def load_data(): | |
| return pd.read_csv("https://huggingface.co/spaces/randmimc/mobility_condition/raw/main/chat_icon/text.csv", on_bad_lines='skip') | |
| df = load_data() | |
| text_input = "μμ μ¦μλ€μ΄ λ³΄μΌ κ²½μ°, λ€μκ³Ό κ°μ μ‘°μΉλ₯Ό μ·¨νλ κ²μ΄ νμν©λλ€:\n\n1. **μλμ¬μ μλ**: μ°μ μ μΌλ‘ μΌλ°μ μΈ μλ μ¬μμ μ§ννμ¬ DPF μμ€ν μ΄ μ μμ μΌλ‘ μλνλμ§ νμΈν©λλ€. μ°¨λ μλλ μ½ 60km/hλ‘ μ μ§νκ³ , 20λΆ μ΄μ μ£Όννμ¬ DPF μμ€ν μ΄ μ€μ€λ‘ sootλ₯Ό μ κ±°νλλ‘ ν©λλ€.\n\n2. **DPF μλ μ κ±° λ²νΌ νμ©**: λ§μ½ μλμ¬μμ΄ μ΄λ €μ΄ μνλΌλ©΄, DPF μλ μ κ±° λ²νΌμ ν΅ν΄ μ΄μ μκ° κ°μ λ‘ sootλ₯Ό μ κ±°νλ λ°©λ²μ μλν΄ λ΄ λλ€.\n\n3. **μ λΉμ λ°©λ¬Έ**: μλ μ¬μμ΄λ μλ μ κ±° λ²νΌμ ν΅ν΄μλ λ¬Έμ κ° ν΄κ²°λμ§ μμ κ²½μ°, κ°κΉμ΄ μ λΉμλ₯Ό λ°©λ¬Ένμ¬ DPF μμ€ν μ μ κ² λ°λ κ²μ΄ μ€μν©λλ€. μ΄λ μΌμ λΆλμ΄λ DPF νν° λ¬Έμ λ± λ€λ₯Έ μμΈμ νμ νλ λ° λμμ΄ λ©λλ€.\n\n4. **λ°°κΈ°κ³ν΅ μ κ²**: ν΄λΉ νμμ΄ μ§μ λ°κ²¬λ κ²½μ° λ§μ½μ λλΉνμ¬ μ°¨λ μ체μ λ°°κΈ°κ³ν΅ μ κ²μ νλ κ²μ΄ μΆμ²λ©λλ€.\n\n**μ μμ μΈ κ²½μ°**: λ§μ½ soot μμΉκ° μ μ ν νμ΄λ°μ μ°μλμ΄ μμ΄μ§κ³ μ 체μ μΌλ‘ λ΄€μ λ μΆμ λμ΄ 40μ μ΄κ³Όνλ ꡬκ°μ΄ μ‘΄μ¬νμ§ μλλ€λ©΄, μ΄λ μ μμ μ΄λ©° λ¬Έμ μμ΅λλ€" | |
| warning = "β οΈ μΌμ μμΉ μ΄μμ Soot μΆμ λμ΄ 2μκ° μ΄μ μ§μλλ νμμ 보μ. \nSoot κ° μΌμ μμΉμ λλ¬νμλ μ μμ μΌλ‘ μ°μλμ§ μκ±°λ, μΌμ λΆλμΌλ‘ μΈν΄ Dosing μ΄ κ³Όνκ² νμ±νλ¨. \nsoot κ° μ¦κ°νλ κ³Όμ μμ λΆκ·μΉμ μΈ μ¦κ° νμμ΄ λ°μν¨. \nν λλ λΉμ ν ννκ° ν¬κ² λνλ¨. \nSoot μ μΆμ λμ΄ 40μ μ΄κ³Όνλ ꡬκ°μ΄ μ‘΄μ¬ν¨." | |
| def chart_generate(df, col_name): | |
| return st.line_chart(df, y=[col_name]) | |
| def tts_engine(text): | |
| cleaned_text = re.sub(r'[\x00-\x1F]+', '', text).replace("*", "") | |
| tts = gTTS(text=cleaned_text, lang='ko') | |
| mp3_fp = BytesIO() | |
| tts.write_to_fp(mp3_fp) | |
| # μ€λμ€ μ€νΈλ¦Ό μ¬μ€μ ν μ¬μ | |
| mp3_fp.seek(0) | |
| # Base64 μΈμ½λ© | |
| audio_bytes = mp3_fp.read() | |
| audio_base64 = base64.b64encode(audio_bytes).decode() | |
| return mp3_fp, audio_base64 | |
| def none_temp(): | |
| st.info("λ¨Όμ λ°μ΄ν°λ₯Ό μ νν΄ μ£ΌμΈμ") | |
| def normal(df, col_name): | |
| chart_generate(df, col_name) | |
| st.success("β μ°¨λ μν: μ μ") | |
| st.markdown("**μ‘°μΉ μ¬ν:** μΆκ° μ‘°μΉλ νμνμ§ μμ΅λλ€.") | |
| def anormal(df, col_name, warning, text_input): | |
| # custom style | |
| chart_generate(df, col_name) | |
| st.warning(warning) | |
| st.markdown(text_input) | |
| mp3_fp, audio_base64 = tts_engine(warning+" "+text_input) | |
| st.audio(mp3_fp, format="audio/mp3") | |
| # μλΉμ€ μ€ν | |
| # 1. session_state μ΄κΈ°ν (μ±μ΄ μ²μ μ€νλ λλ§ μλ) | |
| if 'selection' not in st.session_state: | |
| st.session_state.selection = "" | |
| if 'warning' not in st.session_state: | |
| st.session_state.warning = "" | |
| if 'success' not in st.session_state: | |
| st.session_state.success = "" | |
| if 'audio' not in st.session_state: | |
| st.session_state.audio = "" | |
| if 'markdown' not in st.session_state: | |
| st.session_state.markdown = "" | |
| slected = st.selectbox( | |
| "μ§λ¨ν λ°μ΄ν°λ₯Ό μ ννμΈμ:", | |
| options | |
| ) | |
| st.session_state["warning"] = "" | |
| st.session_state["success"] = "" | |
| st.session_state["audio"] = "" | |
| st.session_state["markdown"] = "" | |
| st.session_state.selection = slected | |
| if st.session_state.selection == "": | |
| st.write(st.session_state.selection) | |
| st.write(st.session_state.audio) | |
| none_temp() | |
| elif st.session_state.selection == "2024-09-26": | |
| st.write(st.session_state.selection) | |
| st.write(st.session_state.audio) | |
| normal(df, "ECU_DPFSoot") | |
| else: | |
| st.write(st.session_state.selection) | |
| st.write(st.session_state.audio) | |
| anormal(df, "ECU_DPFSoot", warning, text_input) | |