2024-12-06 16:16:47 -05:00
|
|
|
import os
|
|
|
|
import sqlite3
|
|
|
|
import requests
|
2024-12-06 16:52:35 -05:00
|
|
|
import datetime
|
2024-12-06 16:16:47 -05:00
|
|
|
|
|
|
|
def read_music_database(url):
|
2024-12-06 16:40:53 -05:00
|
|
|
os.remove("assets/localwrapped/music.db")
|
|
|
|
get_music_database = requests.get(url)
|
|
|
|
with open("assets/localwrapped/music.db", "wb") as f:
|
|
|
|
f.write(get_music_database.content)
|
|
|
|
conn = sqlite3.connect("assets/localwrapped/music.db")
|
2024-12-06 16:16:47 -05:00
|
|
|
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 = '<DOCTYPE html>\n<html>\n'
|
|
|
|
html += '<head>\n<meta charset="UTF-8">\n<link href="https://fonts.googleapis.com/css2?family=Jetbrains+Mono:wght@400;700&display=swap" rel="stylesheet">\n</head>\n'
|
|
|
|
html += '<body style="background-color: #1f1f1f; color: #ffffff; font-family: \'Jetbrains Mono\', monospace;">\n<meta name="viewport" content="width=device-width, initial-scale=1.0">\n'
|
|
|
|
html += '<title>Halhadus\' Local Wrapped</title>\n<link rel="icon" type="image/png" href="assets/favicon.png">\n'
|
|
|
|
html += '<meta name="description" content="Halhadus\' Local Wrapped">\n<meta property="og:title" content="Halhadus\' Local Wrapped">\n'
|
|
|
|
html += '<meta property="og:description" content="Halhadus\' Local Wrapped">\n<meta property="og:image" content="assets/favicon.png">\n'
|
|
|
|
html += '<meta property="og:url" content="https://halhadus.rocks/localwrapped.html">\n'
|
|
|
|
html += '<h1>Halhadus\' Local Wrapped</h1>\n'
|
|
|
|
html += '<h2>Total Play Time: ' + str(int(total_play_time(url)/60)) + ' minutes</h2>\n'
|
2024-12-06 16:52:35 -05:00
|
|
|
# HUMAN READABLE last updated time (example: 2021-09-01 12:34:56) of assets/localwrapped/music.db (UTC +3)
|
|
|
|
html += '<h2>Last Updated: ' + datetime.datetime.utcfromtimestamp(os.path.getmtime("assets/localwrapped/music.db")).strftime('%Y-%m-%d %H:%M:%S') + ' (UTC +3)</h2>\n'
|
2024-12-06 16:16:47 -05:00
|
|
|
html += '<h3>Most Played Musics</h3>\n'
|
|
|
|
html += '<ol>\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 += '<li>' + music[0] + ' | ' + str(music[1]) + ' times</li>\n'
|
|
|
|
html += '</ol>\n'
|
|
|
|
html += '</body>\n</html>'
|
|
|
|
return html
|