commit 187e554d09bcb845b686a81f84106a0d5472d840 Author: Lasse Studion Date: Thu Mar 16 11:05:14 2023 +0100 first commit diff --git a/app.py b/app.py new file mode 100644 index 0000000..6e85ba9 --- /dev/null +++ b/app.py @@ -0,0 +1,90 @@ +#! python3 +import pandas as pd +import streamlit as st + + +def get_seconds(t): + """Translates duration to seconds""" + return int(t[: t.find(":")]) * 60 + int(t[t.find(":") + 1 :]) + +def get_time(s): + h = int(s/3600) + m = int((s%3600)/60) + s = int((s%3600)%60) + if s >= 3600: + t = f'{h}:{m}:{s}' + elif s >=60: + t = f'{m:s}' + else: + t= f'{s}' + + +st.title("Music Report for Hindenburg") +st.markdown( + """ +**Paste your music report från Hindenburg in the field below to +get a report with the total lenght of each song used. If you chose to download it +you will get a CSV where you find the start time for each music clip in the report.** +""" +) +# Get data from clipboard +data = st.text_area( + label="Paste your music report from Hindenburg here.", + label_visibility="hidden", + placeholder="Paste music report here.", +) + +if data: + rows = data.split("\n") + + # Dict to fill with info + d = {} + + # Get data into dict + for row in rows: + l = row.split("\t") + if len(l) < 3: # Filter out empty rows + continue + start = str(l[0]) + title = l[2] + duration = l[1] + if title in d: # If the song has been used already. + d[title] = { + "Starts": d[title]["Starts"] + ", " + start, + "Duration": d[title]["Duration"] + get_seconds(duration), + "Artist": l[3], + } + else: + d[title] = { + "Starts": start, + "Duration": get_seconds(duration), + "Artist": l[3], + } + + # Put data into a dataframe. + df = pd.DataFrame.from_dict(d, orient="index") + df["Title"] = df.index + df.index = [i for i in range(1, df.shape[1] + 1)] + # CSS to inject contained in a string + hide_table_row_index = """ + + """ + print(df) + # Inject CSS with Markdown + st.markdown(hide_table_row_index, unsafe_allow_html=True) + + # Display as dataframe. + st.dataframe(df[["Title", "Artist", "Duration"]]) + + st.download_button( + "Download as CSV", + data=df[["Title", "Artist", "Duration", "Starts"]] + .to_csv(index=False, sep=";") + .encode("utf-8"), + file_name="music_report.csv", + mime="text/csv", + key="download-csv", + ) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..e2d0cc2 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,49 @@ +altair==4.2.2 +attrs==22.2.0 +backports.zoneinfo==0.2.1 +blinker==1.5 +cachetools==5.3.0 +certifi==2022.12.7 +charset-normalizer==3.1.0 +click==8.1.3 +decorator==5.1.1 +entrypoints==0.4 +gitdb==4.0.10 +GitPython==3.1.31 +idna==3.4 +importlib-metadata==6.0.0 +importlib-resources==5.12.0 +Jinja2==3.1.2 +jsonschema==4.17.3 +markdown-it-py==2.2.0 +MarkupSafe==2.1.2 +mdurl==0.1.2 +numpy==1.24.2 +packaging==23.0 +pandas==1.5.3 +Pillow==9.4.0 +pkgutil_resolve_name==1.3.10 +protobuf==3.20.3 +pyarrow==11.0.0 +pydeck==0.8.0 +Pygments==2.14.0 +Pympler==1.0.1 +pyrsistent==0.19.3 +python-dateutil==2.8.2 +pytz==2022.7.1 +pytz-deprecation-shim==0.1.0.post0 +requests==2.28.2 +rich==13.3.2 +semver==2.13.0 +six==1.16.0 +smmap==5.0.0 +streamlit==1.20.0 +toml==0.10.2 +toolz==0.12.0 +tornado==6.2 +typing_extensions==4.5.0 +tzdata==2022.7 +tzlocal==4.2 +urllib3==1.26.15 +validators==0.20.0 +zipp==3.15.0