From de16269ad83cb8a55f193441e60c1a04722cd328 Mon Sep 17 00:00:00 2001 From: Rob Canning Date: Sun, 21 Jan 2024 23:21:34 +0100 Subject: [PATCH] html playlist in table - updates to jinja --- database/show.db | Bin 446464 -> 479232 bytes html/templates/episode.jinja | 58 +++++++++++++++------------ html/templates/homepage.jinja | 5 ++- mk_music_library_db.py | 29 +++++--------- mk_show.py | 59 +++++++++++++++++----------- playlists/track_playout_history.txt | 22 ++++++----- 6 files changed, 93 insertions(+), 80 deletions(-) diff --git a/database/show.db b/database/show.db index ce70dc0773b0fc8a8e83203366846bb221fd0f0d..a3c79f0602770a27cfe6decde9dd2b577891b6a2 100644 GIT binary patch delta 60338 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

>i7HF~( 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 diff --git a/html/templates/episode.jinja b/html/templates/episode.jinja index da301db..a83917b 100644 --- a/html/templates/episode.jinja +++ b/html/templates/episode.jinja @@ -92,7 +92,7 @@

-

{{episode_title}}

+

{{show_title}}

{{episode_author}} / {{episode_date}} / {{episode_dur}}
@@ -108,33 +108,41 @@
- - - - -
-
-

This weeks playlist:

- {% for track in episode_playlist[0:] %} -

{{track}}

- {% endfor %} - - - +
+

{{show_name}} | Episode #{{episode_number}} | {{episode_date}}

+ Total playtime: {{episode_duration}} | Show presented by: {{show_author}} - - - - - + + + + + + + + + + + + - - - - - - + {% for track in episode_playlist[0:] %} + + + + + + + + + + {% endfor %} +
TRACKARTISTALBUMYEARDURATIONLABEL
{{track[0]}}{{track[1]}}{{track[2]}}{{track[3]}}{{track[4]}}{{track[5]}} + + + + +
diff --git a/html/templates/homepage.jinja b/html/templates/homepage.jinja index 54b1063..322a88a 100644 --- a/html/templates/homepage.jinja +++ b/html/templates/homepage.jinja @@ -117,7 +117,8 @@

Previous Episodes

- + + {% for episode in episodes %}
@@ -126,7 +127,7 @@

Episode: # {{episode.episode_number}}

Presented by Rob Canning / {{episode.episode_date}} / {{episode.episode_duration}}
-

On this weeks show music from: {{episode.episode_artists}}

+

On this weeks show music from: {{episode.episode_artists}}

diff --git a/mk_music_library_db.py b/mk_music_library_db.py index a24f14a..5144f71 100755 --- a/mk_music_library_db.py +++ b/mk_music_library_db.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 -# CREATE MUSIC DATABASE ------------------------------------------ +# CREATE MUSIC DATABASE AND EPISODE TABLES -------------------------- import sys, os, datetime, fnmatch, glob, random, time, pathlib, re from datetime import timedelta @@ -12,8 +12,6 @@ import uuid #import pypika # sql query builder from pypika import Query, Table, Field, Column -conn = '' - music_library_path = "/home/rob/antena/music/" conn = sqlite3.connect("database/show.db") @@ -45,15 +43,9 @@ def database_create(conn): conn.execute(str(mus_lib)) print('''MUSIC LIBRARY Table created successfully'''); - -#conn = '' - def database_create_episodes_table(conn): # the show database -# conn = sqlite3.connect("database/show.db") - - #TODO put the below back as a raw quiry to make if not exists possible q = Query \ .create_table("EPISODES") \ .columns( @@ -63,19 +55,17 @@ def database_create_episodes_table(conn): Column("album", "VARCHAR(200)", nullable=True), Column("track", "VARCHAR(120)", nullable=True), Column("artist", "VARCHAR(120)", nullable=True), - Column("trackdur", "FLOAT", nullable=True), + Column("trackdur", "REAL", nullable=True), Column("genre", "VARCHAR(120)", nullable=True), Column("year", 'DATETIME', nullable=True), - Column("path", "VARCHAR(120)", nullable=False))\ + Column("path", "VARCHAR(120)", nullable=False), + Column("label", "VARCHAR(120)", nullable=False), + Column("comment", "VARCHAR(120)", nullable=False))\ .unique("path") \ .primary_key("path") - #TODO get the unique path back into action find bug + #TODO get the unique path back into action find bug conn.execute(str(q)) - - - - print("EPISODES Table created successfully"); def mk_db_entry(conn): @@ -88,14 +78,15 @@ def mk_db_entry(conn): for m in [".flac", ".FLAC", ".mp3"]: # get audio files if m in file: filepath = pathlib.Path(subdir + "/" +file) - label = filepath.parts[5] # get LABEL etc name from path + label = filepath.parts[5] + # get LABEL etc name from path + # TODO THIS will break when path changes - make relative to cwd track = TinyTag.get(os.path.join(subdir, file))# get metadata from file cursor = conn.cursor() - mus_lib = Table('MUSIC_LIBRARY') q = mus_lib.insert(1, label, track.album, track.title, track.artist, \ track.genre, track.duration, track.year, \ - label_url, str(filepath), "last_played", track.comment) + label_url, str(filepath), 1970-1-1, track.comment) cursor.execute(str(q)); conn.commit() diff --git a/mk_show.py b/mk_show.py index d111c31..f460ed7 100755 --- a/mk_show.py +++ b/mk_show.py @@ -23,7 +23,6 @@ episode_number = int(sys.argv[1]) input_date = sys.argv[2] episode_date = datetime.datetime.now().strftime("%Y-%m-%d") episode_duration = 0 -complete_playlist = [] episode_playlist = [] show_cover = "" archive = [] @@ -35,7 +34,7 @@ web_path = "/home/rob/antena/html/episode/{0}/img".format(episode_number) conn = sqlite3.connect("database/show.db") if os.path.exists(web_path): - print("path_exists_doing_nothing") + print("web path already exists .... doing_nothing") else: os.makedirs(web_path) # ///////////////////////////////////////////////// @@ -57,6 +56,7 @@ def add_to_tracks_played(add_to_played: str): with open('playlists/track_playout_history.txt', "a") as tracks_played_file: tracks_played_file.write(str(add_to_played) + "\n") # newline \n needed here? +#TODO replace the below with database stuff def check_archive(track): global archive with open('playlists/track_playout_history.txt') as archive_file: @@ -69,7 +69,7 @@ def check_archive(track): print("____ TRACK ALREADY PLAYED _____") return False -def create_episode_playlist(conn, episode_playlist: list, complete_playlist:list): +def create_episode_playlist(conn, episode_playlist: list, episode_number): global episode_duration global archive @@ -79,14 +79,17 @@ def create_episode_playlist(conn, episode_playlist: list, complete_playlist:list max_track_dur = 9 min_track_dur = 2 + # first clear the sqlite table rows for the episode + cursor = conn.cursor() + cursor.execute('DELETE FROM episodes WHERE episode = {0}'.format(episode_number)) + # TODO what is most important 12 tracks or 60 minutes - # what will + while episode_duration < 60 * 60 and track_count < 12 : - cursor = conn.cursor() cursor.execute("SELECT * FROM MUSIC_LIBRARY ORDER BY RANDOM() LIMIT 1 ;") r = cursor.fetchone() # FETCH ONE RANDOM TRACK FROM THE DATABASE - + # for t in r: song = str(r[9]) track_label = str(r[1]) @@ -97,10 +100,9 @@ def create_episode_playlist(conn, episode_playlist: list, complete_playlist:list track_genre = str(r[5]) track_year = str(r[7]) track_path = song #'/'.join(song.split('/')[0:-1]) - #print(str(song)+"ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss") + track_comment = str(r[11]) # SOME LOGIC TO SEE IF WE ALLOW THAT TRACK OR NOT - - + # TODO here we need to append to DB not the static file if track_artist not in artists_played: if check_archive(track_title) is True: @@ -108,7 +110,7 @@ def create_episode_playlist(conn, episode_playlist: list, complete_playlist:list if int(track_duration) < max_track_dur * 60: episode_playlist.append(song.rstrip()) # if 'not in' is true then add the song art = string=re.sub("\(.*?\)","",track_artist) - print(art + "?????????????????????????????????????????????????????????????????????????????????????") + # shorten verbose artist names such as trojnik Trojnik (Cene Resnik, Tomaž Grom, Vid Drašler) art = string=re.sub("and","&",art) artist_abreviated.append(art) @@ -118,11 +120,11 @@ def create_episode_playlist(conn, episode_playlist: list, complete_playlist:list if not track_year: # where missing metadata give a dummy value track_year = 0000 - e = Table('EPISODES') q = e.insert(1, episode_number, episode_date, \ track_album, track_title, track_artist, \ - track_duration,track_genre, track_year, track_path) + track_duration,track_genre, track_year, \ + track_path, track_label, track_comment) cursor.execute(str(q)) # ID, EPISODE, DATE, ALBUM, TRACK, ARTIST, TRACKDUR, YEAR, PATH) \ @@ -276,7 +278,7 @@ def create_animated_gif(): def create_pls_file(): # write the selection as a playlist file - with open("shows/antena_playlist_" + episode_date + ".pls","w") as file: + with open("shows/antena_playlist_" + episode_date + ".pls","w") as file: file.writelines("\n".join(episode_playlist)) def create_podcast(episode_playlist: list): @@ -363,11 +365,15 @@ def create_html_homepage_from_template(episode_playlist): cursor = conn.cursor() show_info = [] - episode_artists = [] - num_eps = 4 - + #TODO fix this - now it reports zero + # get number of episodes from DB + cursor.execute('SELECT MAX(episode) FROM EPISODES') + num_eps = cursor.fetchone()[0] + num_eps = num_eps+1 + + for i in range(num_eps): artists = [] cursor.execute("SELECT artist FROM EPISODES WHERE episode=?", [i]) @@ -384,11 +390,12 @@ def create_html_homepage_from_template(episode_playlist): for i in range(num_eps): # get this from new table EPISODE_STATS number of tracks in DB print(episode_artists[i]) an_episode = dict(date="2012-02-", \ - episode_artists=episode_artists[i], episode_number=i, \ + episode_artists=str(episode_artists[i]).strip("[").strip("]").strip("\'"), episode_number=i, \ episode_date=episode_date, \ episode_duration=episode_duration) episodes.append(an_episode) - episodes = reversed(episodes) # reversed order to most recent episode appears first in list + episodes = reversed(episodes[1:episode_number]) + # reversed order to most recent episode appears first in list cursor = conn.cursor() cursor.execute('SELECT * FROM EPISODES WHERE episode=?', [episode_number]) @@ -421,7 +428,7 @@ def create_html_homepage_from_template(episode_playlist): episode_page.write(output_from_parsed_template) -def create_html_episode_from_template(episode_playlist): +def create_html_episode_from_template(episode_playlist, episode_number): from jinja2 import Template, Environment, FileSystemLoader @@ -429,6 +436,7 @@ def create_html_episode_from_template(episode_playlist): episode_template = env.get_template('episode.jinja') show_info = [] + playlist_table = [] # maybe a jinja2 template loop here instead cursor = conn.cursor() @@ -444,26 +452,29 @@ def create_html_episode_from_template(episode_playlist): r = cursor.fetchall() for t in r: song = str(t[0]) - #track_label = str(t[1]) track_album = str(t[3]) track_title = str(t[4]) track_artist = str(t[5]).upper() track_duration = float(t[6]) track_genre = str(t[7]) track_year = str(t[8]) + track_label = str(t[10]) + track_comment = str(t[11]) detail = str(track_artist) + " | " + str(track_album) + \ " | " + str(track_title) + " | " + str(track_year) + \ " | " + str(timedelta(seconds=round(track_duration))) + playlist_entry = [track_title, track_artist, track_album, track_year, timedelta(seconds=round(track_duration)), track_label.upper() ] + playlist_table.append(playlist_entry) show_info.append("" + detail) #TODO FIX THIS UP TO SEND COLUMNS FROM LIST TO JINJA output_from_parsed_template = episode_template.render(\ show_name=show_name, episode_author="Rob Canning",\ - episode_duration=episode_duration, \ + episode_number=episode_number, episode_duration=episode_duration, \ episode_date=episode_date, about_show=show_short_description, \ - episode_playlist=show_info, \ + episode_playlist=playlist_table, \ episode_image="img/cover.png".format(episode_number)) with open("html/episode/{0}/index.html".format(episode_number), "w") as episode_page: @@ -490,12 +501,12 @@ def main(): # database_create_episodes_table() set_episode_date(input_date) - create_episode_playlist(conn, episode_playlist, complete_playlist) + create_episode_playlist(conn, episode_playlist, episode_number) create_show_coverart(episode_playlist, 1) #episode_duration = 100 #create_animated_gif() create_intro(episode_playlist) create_pls_file() - create_html_episode_from_template(episode_playlist) + create_html_episode_from_template(episode_playlist, episode_number) create_html_homepage_from_template(episode_playlist) create_RSS_XML_from_template() conn.close() diff --git a/playlists/track_playout_history.txt b/playlists/track_playout_history.txt index e90dd7b..97e813f 100644 --- a/playlists/track_playout_history.txt +++ b/playlists/track_playout_history.txt @@ -1,11 +1,13 @@ -Some Spatter Left -The Mother (Act VII) -Tilt - Tilt - 03 Alicante 3 -Hunahpu & Xbalanque -Maskardh - Thrills Of Deconstruction -Heretics Fork -94 -Zlatko Kaučič, Tomaž Grom - The Ear Is The Shadow Of The Eye - 12 Battling For A Title - Za naslov se boriva -Crossing The Rubicon -šopscum solata +YuWrong +Action XIV +things i decided against +Domen Gnezda - Misnomer II - 02 Misnomer 24 +Crushing Trauma +Nicholas Cage +The Great White Buffalo +Integral [Excerpt] +Slika 4 +Tomaž Grom - Sam, za... - 05 G.V. +Styröfoam - Moonmiles +The Oppressed 1 (Outtake)