Spaces:
Running
Running
File size: 3,007 Bytes
c43be04 1a3f8bd 87f95e1 afa1625 1277e6b c43be04 e665916 d050fe6 afa1625 91d5749 afa1625 91d5749 d050fe6 e665916 2a08a02 dddfa05 2a08a02 2e43002 41b71e6 2e43002 ea0a27d 41b71e6 2e43002 ea0a27d 41b71e6 2e43002 ea0a27d 41b71e6 2e43002 ea0a27d 2e43002 dddfa05 e665916 b92d253 9d24c19 e665916 afa1625 dddfa05 afa1625 9d24c19 bdb2a52 9d24c19 e665916 9d24c19 e665916 bdb2a52 |
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 |
import streamlit as st
import pandas as pd
from songscope import *
import random
# !python -m pip install --upgrade pip
# main header
st.title("SongScope")
# web app explainer
st.write("Welcome to SongScope. This is a web app that lets you download lyrics and metadata of your favourite artist.\n")
st.write("Enter an artist name, and you can even select up to 5 songs to retrieve their data. If you don't specify any songs,\ndata on all songs by the artist will be retrieved.")
# delay times
delay_min = st.number_input(label = "Minimum delay per iteration. We recommend a value of at least 10 seconds per song, otherwise you may be banned from azlyrics.com for scraping.",
step = 1., format = "%.2f", value = float(10))
delay_max = st.number_input(label = "Maximum delay per iteration. We recommend a value of at least 10 seconds per song, otherwise you may be banned from azlyrics.com for scraping.",
step = 1., format = "%.2f", value = float(20))
# user-provided data
artist_name = st.text_input("Enter artist name here", value = "jn mayer") # delete this when done
titles_list = []
song_1 = st.text_input("Enter 1st song title here", value = "gravity")
if song_1:
titles_list.append(song_1)
song_2 = st.text_input("Enter 2nd song title here", value = "slowin dancing burbg room")
if song_2:
titles_list.append(song_2)
song_3 = st.text_input("Enter 3rd song title here")
if song_3:
titles_list.append(song_3)
song_4 = st.text_input("Enter 4th song title here")
if song_4:
titles_list.append(song_4)
song_5 = st.text_input("Enter 5th song title here")
if song_5:
titles_list.append(song_5)
st.write(titles_list)
# funnies
funnies = []
with open("fun_fax.txt", "r", encoding = "utf-8") as f:
for funny in f.read().split("\n"):
funnies.append(funny)
f.close() # closes connection to file
# data is found
find_button = st.button('Find Data')
if not find_button: # button to make everything run
st.write("Once you've entered the above data, click the 'Find Data' button, above, to begin.")
else:
artist_df = get_all_data(artist_name = artist_name,
song_titles = title_list,
delay = (delay_min, delay_max), # random float value between (delay_min, delay_max) seconds
print_progress = True)
# download button and download
dl_button = st.download_button('Download Data', artist_df, f"{artist_name.lower()}_data.csv")
if dl_button:
st.write("Your data should be downloading. If not, please reload the page and try again.")
# fun joke
joke_button = st.button("Want to hear a joke while you wait?")
if joke_button:
st.write(funnies[random.randint(0, len(funnies) - 1)])
st.write("Click the button again to get another!")
# "thank you" blurb
st.write("\nThanks for checking out SongScope! If you have any feedback or requests for additions to this app, shoot me an email at kmaurinjones@gmail.com.") |