timedomain/skill-library
0
1import streamlit as st2import os3import json4from tools import time_ago, get_skill_datas5 6skills = get_skill_datas()7 8params = st.experimental_get_query_params()9 10 11st.session_state.skills = skills12params = st.experimental_get_query_params()13st.sidebar.link_button("Home", url="?page=main", use_container_width=True)14for skill in skills:15 st.sidebar.link_button(f"{skill['skill_name']}", url=f"?page=detail_page&skill_name={skill['skill_name']}", use_container_width=True)16 17 18def main_page(skills):19 for skill in skills:20 with st.expander(f"{skill['skill_metadata']['author']}/{skill['skill_name']}", expanded=True):21 tags = "`{}`".format("`\t\t`".join(skill['skill_tags']))22 st.markdown(f"{tags}")23 st.markdown(f"**<a href='?page=detail_page&skill_name={skill['skill_name']}' style='font-size: 22px;' target='_self'>{skill['skill_metadata']['author']}/{skill['skill_name']}</a>**", unsafe_allow_html=True)24 st.markdown(f">**{skill['skill_description']}**")25 usage = f"from {skill['skill_metadata']['author']}.skill_library.skill_code import {skill['skill_name']}\n{skill['Usage']}"26 st.code(usage, language=skill['skill_program_language'])27 st.markdown(f"""```Updated {time_ago(skill['skill_metadata']['updated_at'])}```""")28def detail_page(skills):29 skill = next((skill for skill in skills if skill['skill_name'] == st.session_state.selected_skill_name), None)30 31 st.markdown("""<a href='?page=main' target='_self'>32 <button style='color: #4CAF50; cursor: pointer; border: 1px solid #4CAF50; border-radius: 5px; width: 10%; '>33 Home34 </button>35 </a>"""36 , unsafe_allow_html=True)37 st.title(skill['skill_name'])38 tags = "`{}`".format("`\t\t`".join(skill['skill_tags']))39 st.markdown(f"{tags}")40 st.markdown(f"""```Updated {time_ago(skill['skill_metadata']['updated_at'])}``` ```ver {skill['skill_metadata']['version']}```""")41 st.markdown(f"## Description")42 st.markdown(f"{skill['skill_description']}")43 st.markdown("## Usage")44 usage = f"from {skill['skill_metadata']['author']}.skill_library.skill_code import {skill['skill_name']}\n{skill['Usage']}"45 st.code(usage, language=skill['skill_program_language'])46 with st.expander(f"Parameters", expanded=False):47 st.markdown("## Parameters")48 st.code(f"{skill['Parameters']}", language=skill['skill_program_language'])49 st.markdown("## Returns")50 st.code(f"{skill['Returns']}", language=skill['skill_program_language'])51 st.markdown("## Dependencies")52 st.code(f"{skill['skill_dependencies']}", language=skill['skill_program_language'])53 with st.expander(f"Code", expanded=False):54 st.code(f"{skill['skill_code']}", language=skill['skill_program_language'])55 56if 'page' in params:57 st.session_state.page = params['page'][0]58 if st.session_state.page == 'detail_page' and 'skill_name' in params:59 st.session_state.selected_skill_name = params['skill_name'][0]60else:61 st.session_state.page = 'main'62 63if st.session_state.page == 'main':64 main_page(skills)65elif st.session_state.page == 'detail_page':66 detail_page(skills)67 