From 1dc3725951052b43aeed3c56b485bdb7c0cc4bad Mon Sep 17 00:00:00 2001 From: Halhadus Date: Sat, 7 Dec 2024 00:16:47 +0300 Subject: [PATCH] First commit --- README.md | 2 -- getmusic.py | 83 ++++++++++++++++++++++++++++++++++++++++++++++++ websitemodule.py | 52 ++++++++++++++++++++++++++++++ 3 files changed, 135 insertions(+), 2 deletions(-) delete mode 100644 README.md create mode 100644 getmusic.py create mode 100644 websitemodule.py diff --git a/README.md b/README.md deleted file mode 100644 index 84def1e..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# my-local-wrapped - diff --git a/getmusic.py b/getmusic.py new file mode 100644 index 0000000..74a78dd --- /dev/null +++ b/getmusic.py @@ -0,0 +1,83 @@ +import subprocess +import re +import time +import sqlite3 +import os + +def get_music(): + dumpsys_output = subprocess.check_output("dumpsys media_session", shell=True).decode("utf-8").split("\n") + if not [line for line in dumpsys_output if "PLAYING" in line]: + return None + else: + description = [line for line in dumpsys_output if "description=" in line] + try: + return description[0].split("description=")[1] + except: + return None + +def get_db_values(): + musicconn = sqlite3.connect("music.db") + musicc = musicconn.cursor() + musicc.execute("SELECT * FROM music") + musicrows = musicc.fetchall() + musicconn.close() + musicvalues = [] + for row in musicrows: + musicvalues.append({ + "listmusicname": row[0], + "fileartistname": row[4], + "filealbumname": row[5], + "filemusictitle": row[6] + }) + return musicvalues + +if not os.path.exists("count.db"): + countconn = sqlite3.connect("count.db") + countc = countconn.cursor() + countc.execute("CREATE TABLE count (musicname TEXT, count INTEGER)") + countconn.commit() + countconn.close() + +a = 0 +last_written = None +while True: + if get_music() == None: + continue + last_music = get_music() + time.sleep(3) + if last_music == get_music(): + if last_written == last_music: + continue + a += 1 + if a == 2: + for i in get_db_values(): + if i["filealbumname"] == None: + full_name = i["filemusictitle"] + ", " + i["fileartistname"] + ", " + "Music" + else: + full_name = i["filemusictitle"] + ", " + i["fileartistname"] + ", " + i["filealbumname"] + if full_name == last_music: + countconn = sqlite3.connect("count.db") + countc = countconn.cursor() + countc.execute("SELECT * FROM count") + countdbrows = countc.fetchall() + countdbvalues = [] + for row in countdbrows: + countdbvalues.append({ + "musicname": row[0], + "count": row[1] + }) + if not [row for row in countdbvalues if row["musicname"] == i["listmusicname"]]: + countc.execute("INSERT INTO count VALUES (?, ?)", (i["listmusicname"], 1)) + countconn.commit() + countconn.close() + else: + countc.execute("UPDATE count SET count = count + 1 WHERE musicname = ?", (i["listmusicname"],)) + countconn.commit() + countconn.close() + last_written = last_music + a = 0 + continue + else: + a = 0 + continue + diff --git a/websitemodule.py b/websitemodule.py new file mode 100644 index 0000000..339e4db --- /dev/null +++ b/websitemodule.py @@ -0,0 +1,52 @@ +import os +import sqlite3 +import requests + +def read_music_database(url): + conn = sqlite3.connect(requests.get(url).content) + c = conn.cursor() + c.execute('SELECT * FROM music') + music_list = c.fetchall() + conn.close() + return music_list + +def read_count_database(): + conn = sqlite3.connect('assets/localwrapped/count.db') + c = conn.cursor() + c.execute('SELECT * FROM count') + count_list = c.fetchall() + conn.close() + return count_list + +def total_play_time(url): + total_time = 0 + for countvar in read_count_database(): + for musicvar in read_music_database(url): + if countvar[0] == musicvar[0]: + total_time += float(musicvar[-1]) * countvar[1] + return total_time + +def generatehtmlcode(url): + html = '\n\n' + html += '\n\n\n\n' + html += '\n\n' + html += 'Halhadus\' Local Wrapped\n\n' + html += '\n\n' + html += '\n\n' + html += '\n' + html += '

Halhadus\' Local Wrapped

\n' + html += '

Total Play Time: ' + str(int(total_play_time(url)/60)) + ' minutes

\n' + html += '

Last Updated: ' + os.path.getmtime('assets/localwrapped/count.db') + '

\n' + html += '

Most Played Musics

\n' + html += '
    \n' + count_list_formatted = [] + for music in read_count_database(): + music_name = music[0] + count = music[1] + count_list_formatted.append([music_name, count]) + count_list_formatted.sort(key=lambda x: x[1], reverse=True) + for music in count_list_formatted: + html += '
  1. ' + music[0] + ' | ' + str(music[1]) + ' times
  2. \n' + html += '
\n' + html += '\n' + return html