Spaces:
Sleeping
Sleeping
File size: 4,373 Bytes
a1de66d ce879dc a1de66d fbfdf9e a830900 29a1d82 a830900 29a1d82 a1de66d 3c3ae65 a1de66d 29a1d82 a1de66d 29a1d82 a1de66d 29a1d82 a96c21d f4065b2 e12508c e333a11 1442cce e333a11 e12508c e333a11 e12508c e333a11 29a1d82 a1de66d 092fa31 29a1d82 4da4ce9 5583fd4 feffd36 29a1d82 f4065b2 b4bf86f f4065b2 e12508c f4065b2 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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
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='\Em.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 create_search_url_wikipedia(artist_song):
base_url = "https://www.wikipedia.org/search-redirect.php?family=wikipedia&language=en&search="
return base_url + artist_song.replace(' ', '+').replace('โ', '%E2%80%93').replace('&', 'and')
def create_search_url_youtube(artist_song):
base_url = "https://www.youtube.com/results?search_query="
return base_url + artist_song.replace(' ', '+').replace('โ', '%E2%80%93').replace('&', 'and')
def create_search_url_chords(artist_song):
base_url = "https://www.ultimate-guitar.com/search.php?search_type=title&value="
return base_url + artist_song.replace(' ', '+').replace('โ', '%E2%80%93').replace('&', 'and')
def create_search_url_lyrics(artist_song):
base_url = "https://www.google.com/search?q="
return base_url + artist_song.replace(' ', '+').replace('โ', '%E2%80%93').replace('&', 'and') + '+lyrics'
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)
table_md = f"""
| Wikipedia | YouTube | Chords | Lyrics |
| --------- | ------- | ------ | ------ |
| [๐]({create_search_url_wikipedia(song_info)}) | [๐ฅ]({create_search_url_youtube(song_info)}) | [๐ธ]({create_search_url_chords(song_info)}) | [๐ถ]({create_search_url_lyrics(song_info)}) |
"""
st.markdown(table_md)
st.header("๐ผ Available Songs")
for file in all_files:
song_info = os.path.splitext(file)[0].replace("_", " ")
icol1, icol2 = st.columns([1, 3])
with icol1:
st.markdown("**" + song_info + "**")
with icol2:
table_md = f"""
| Wikipedia | YouTube | Chords | Lyrics |
| --------- | ------- | ------ | ------ |
| [๐]({create_search_url_wikipedia(song_info)}) | [๐ฅ]({create_search_url_youtube(song_info)}) | [๐ธ]({create_search_url_chords(song_info)}) | [๐ถ]({create_search_url_lyrics(song_info)}) |
"""
st.markdown(table_md)
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()
|