File size: 2,325 Bytes
a1de66d
ce879dc
a1de66d
fbfdf9e
a830900
29a1d82
 
a830900
29a1d82
a1de66d
 
 
 
29a1d82
a1de66d
29a1d82
a1de66d
29a1d82
a96c21d
 
 
 
e12508c
e333a11
 
 
 
 
 
 
 
 
 
 
 
 
1442cce
e333a11
e12508c
e333a11
 
 
e12508c
 
e333a11
29a1d82
a1de66d
092fa31
29a1d82
4da4ce9
5583fd4
feffd36
 
29a1d82
e12508c
29a1d82
 
 
 
e12508c
 
 
29a1d82
7692c5b
e12508c
e333a11
e12508c
 
 
29a1d82
6f681ea
29a1d82
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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"<img src='\1.png' style='height:20px;'>", line)
    return line

def process_chord_sheet(chord_sheet):
    processed_lines = [process_line(line) for line in chord_sheet.split('\n')]
    return '<br>'.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 = """
    <style>
    .multi-column {
        column-count: 2;
        column-gap: 1em;
        column-rule: thin solid black;
        overflow: auto;
        white-space: pre-wrap;
        font-size: small;
    }
    </style>
    """

    # HTML structure with multi-column layout
    html_content = f"""
    {css_content}
    <div class="multi-column">
        {chord_sheet}
    </div>
    """
    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()