import streamlit as st import streamlit.components.v1 as components import re import os import glob # Set Streamlit page configuration st.set_page_config(layout="wide") def process_line(line): if re.search(r'\b[A-G][#b]?m?\b', line): line = re.sub(r'\b([A-G][#b]?m?)\b', r"", line) return line def process_chord_sheet(chord_sheet): processed_lines = [process_line(line) for line in chord_sheet.split('\n')] return '
'.join(processed_lines) def load_song_file(file_path): with open(file_path, 'r', encoding='utf-8') as file: return file.read() def display_chord_sheet_in_two_page_view(chord_sheet): # CSS for multi-column layout css_content = """ """ # HTML structure with multi-column layout html_content = f""" {css_content}
{chord_sheet}
""" components.html(html_content, height=1200) def main(): col1, col3 = st.columns([3, 5]) with col1: st.markdown('### 🎵 📚Prompt🎥🎸Chord Sheet🎶 AI Prompt Authoring App') with st.expander("Select Song:", expanded=True): all_files = [f for f in glob.glob("*.txt") if ' by ' in f] selected_file = st.selectbox("Choose: ", all_files, key='selected_file') if selected_file: song_info = os.path.splitext(selected_file)[0].replace("_", " ") st.header("🎼 Current Song") st.markdown("**" + song_info + "**") chord_sheet = load_song_file(selected_file) processed_sheet = process_chord_sheet(chord_sheet) st.markdown(processed_sheet, unsafe_allow_html=True) with col3: if 'selected_file' in st.session_state and st.session_state.selected_file: # Display chord sheet in multi-column view chord_sheet = load_song_file(st.session_state.selected_file) processed_sheet = process_chord_sheet(chord_sheet) display_chord_sheet_in_two_page_view(processed_sheet) if __name__ == '__main__': main()