awacke1 commited on
Commit
c61962c
1 Parent(s): a830900

Update backupapp.py

Browse files
Files changed (1) hide show
  1. backupapp.py +93 -24
backupapp.py CHANGED
@@ -1,32 +1,101 @@
1
- from bs4 import BeautifulSoup
2
- import requests
3
- from zipfile import ZipFile
4
  import os
 
5
 
6
- # URL of the webpage
7
- url = 'https://tabs.ultimate-guitar.com/tab/neko-case/hold-on-hold-on-chords-1237853'
8
 
9
- # Send a request to the URL
10
- response = requests.get(url)
11
- html_content = response.text
 
 
12
 
13
- # Parse HTML
14
- soup = BeautifulSoup(html_content, 'html.parser')
 
 
 
 
 
15
 
16
- # Find all image tags
17
- image_tags = soup.find_all('img') # Modify this line based on actual HTML structure
 
 
18
 
19
- # Directory to store images
20
- os.makedirs('chord_images', exist_ok=True)
 
21
 
22
- # Zip file to store images
23
- with ZipFile('chord_images.zip', 'w') as zipf:
24
- for i, img in enumerate(image_tags):
25
- img_url = img['src'] # Assuming 'src' contains the image URL
26
- img_data = requests.get(img_url).content
27
- img_filename = f'chord_images/image_{i}.jpg'
28
- with open(img_filename, 'wb') as f:
29
- f.write(img_data)
30
- zipf.write(img_filename)
31
 
32
- print("Images saved and zipped.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import re
 
3
  import os
4
+ import glob
5
 
6
+ # Set Streamlit page configuration to wide mode
7
+ st.set_page_config(layout="wide")
8
 
9
+ # Function to process each line of the chord sheet
10
+ def process_line(line):
11
+ if re.search(r'\b[A-G][#b]?m?\b', line):
12
+ line = re.sub(r'\b([A-G][#b]?m?)\b', r"<img src='\1.png' style='height:20px;'>", line)
13
+ return line
14
 
15
+ # Function to process the entire chord sheet
16
+ def process_chord_sheet(chord_sheet):
17
+ processed_lines = []
18
+ for line in chord_sheet.split('\n'):
19
+ processed_line = process_line(line)
20
+ processed_lines.append(processed_line)
21
+ return '<br>'.join(processed_lines)
22
 
23
+ # Functions to create search URLs
24
+ def create_search_url_wikipedia(artist_song):
25
+ base_url = "https://www.wikipedia.org/search-redirect.php?family=wikipedia&language=en&search="
26
+ return base_url + artist_song.replace(' ', '+').replace('–', '%E2%80%93').replace('&', 'and')
27
 
28
+ def create_search_url_youtube(artist_song):
29
+ base_url = "https://www.youtube.com/results?search_query="
30
+ return base_url + artist_song.replace(' ', '+').replace('–', '%E2%80%93').replace('&', 'and')
31
 
32
+ def create_search_url_chords(artist_song):
33
+ base_url = "https://www.ultimate-guitar.com/search.php?search_type=title&value="
34
+ return base_url + artist_song.replace(' ', '+').replace('–', '%E2%80%93').replace('&', 'and')
 
 
 
 
 
 
35
 
36
+ def create_search_url_lyrics(artist_song):
37
+ base_url = "https://www.google.com/search?q="
38
+ return base_url + artist_song.replace(' ', '+').replace('–', '%E2%80%93').replace('&', 'and') + '+lyrics'
39
+
40
+ # Streamlit app
41
+ def main():
42
+ # Sidebar with file loader
43
+ with st.sidebar:
44
+ st.title('🎵 Song Files')
45
+ with st.expander("Select Song File"):
46
+ all_files = glob.glob("*.txt")
47
+ selected_file = st.selectbox("Choose a file", all_files)
48
+
49
+ # Main area layout
50
+ col1, col2 = st.columns([2, 1])
51
+
52
+ with col1:
53
+ with st.expander("🎶 Song and Artist"):
54
+ song_name = st.text_input("🎵 Song Name")
55
+ artist_name = st.text_input("🎤 Artist Name")
56
+ chord_sheet_input = st.text_area("Chord Sheet", height=300)
57
+ if st.button("💾 Save", key="save_song"):
58
+ if song_name and artist_name:
59
+ filename = f"{song_name} by {artist_name}.txt".replace(" ", "_")
60
+ with open(filename, "w") as file:
61
+ file.write(chord_sheet_input)
62
+ st.success("Chord sheet saved.")
63
+ else:
64
+ st.error("Both Song Name and Artist Name are required.")
65
+
66
+ with col2:
67
+ if selected_file:
68
+ song_name_artist = os.path.splitext(selected_file)[0].replace("_", " ")
69
+ st.markdown(f"**Selected Song:** {song_name_artist}")
70
+ st.markdown(f"[📚Wikipedia]({create_search_url_wikipedia(song_name_artist)})")
71
+ st.markdown(f"[🎥YouTube]({create_search_url_youtube(song_name_artist)})")
72
+ st.markdown(f"[🎸Chords]({create_search_url_chords(song_name_artist)})")
73
+ st.markdown(f"[🎶Lyrics]({create_search_url_lyrics(song_name_artist)})")
74
+ load_song_file(selected_file)
75
+
76
+ # Displaying song files
77
+ st.header("🎼 Available Songs")
78
+ for file in all_files:
79
+ song_info = os.path.splitext(file)[0].replace("_", " ")
80
+ col1, col2, col3, col4, col5 = st.columns([4, 1, 1, 1, 1])
81
+ with col1:
82
+ st.markdown(f"* {song_info}")
83
+ with col2:
84
+ st.markdown(f"[📚Wikipedia]({create_search_url_wikipedia(song_info)})")
85
+ with col3:
86
+ st.markdown(f"[🎥YouTube]({create_search_url_youtube(song_info)})")
87
+ with col4:
88
+ st.markdown(f"[🎸Chords]({create_search_url_chords(song_info)})")
89
+ with col5:
90
+ st.markdown(f"[🎶Lyrics]({create_search_url_lyrics(song_info)})")
91
+
92
+ # Function to load and display the selected song file
93
+ def load_song_file(filename):
94
+ with open(filename, "r") as file:
95
+ chord_sheet = file.read()
96
+ st.text_area("Chord Sheet", chord_sheet, height=300)
97
+ processed_sheet = process_chord_sheet(chord_sheet)
98
+ st.markdown(processed_sheet, unsafe_allow_html=True)
99
+
100
+ if __name__ == '__main__':
101
+ main()