From 6c8a9b1da073f663c76e48537ade1197565f2615 Mon Sep 17 00:00:00 2001 From: Effie Date: Mon, 5 Jun 2023 17:33:31 +1000 Subject: [PATCH] adds artist info and motif name to song pages --- app.py | 46 +++++++++++++++++++++++++++++++++++++++++-- build_db.py | 2 ++ reference_clips.ods | Bin 10433 -> 22448 bytes templates/song.jinja | 31 ++++++++++++++++++++++------- 4 files changed, 70 insertions(+), 9 deletions(-) diff --git a/app.py b/app.py index e8d1ddf..5433fc3 100644 --- a/app.py +++ b/app.py @@ -8,6 +8,8 @@ def songpage(id): db = sqlite3.connect("file:songbook.sqlite?mode=ro", uri=True) + # query song name + name, = db.execute(''' select name @@ -23,7 +25,7 @@ def songpage(id): album_info = db.execute(''' select - album_id, track, album.name, album.code + track, album.name, album.code from song_album join @@ -36,8 +38,48 @@ def songpage(id): (id,) ).fetchall() + # query artist info + + artist_info = db.execute(''' + select + artist.name, artist.name_rm, credit.name + from + song_artist + join + artist + on + song_artist.artist_id=artist.id + join + credit + on + song_artist.credit_id=credit.id + where + song_id = ? + ''', + (id,) + ).fetchall() + + # query clip info + + clip_info = db.execute(''' + select + song_id, motif_id, motif.name + from + clip + join + motif + on + clip.motif_id=motif.id + where + song_id = ? + ''', + (id,) + ).fetchall() + return flask.render_template('song.jinja', name=name, id=id, - album_info=album_info + album_info=album_info, + clip_info=clip_info, + artist_info=artist_info ) \ No newline at end of file diff --git a/build_db.py b/build_db.py index 737402f..a95db16 100644 --- a/build_db.py +++ b/build_db.py @@ -37,6 +37,8 @@ cur.executemany( data['Credit'][1:] ) +print(clipdata['Motif'][1:]) + # import motif cur.executemany( 'insert into motif(id,name) values(?, ?)', diff --git a/reference_clips.ods b/reference_clips.ods index 219c1af41abf2336ac9844ddf9f5e524f147a699..7ff38b81d97e9989db54590ef6a2c007a01b26ec 100644 GIT binary patch delta 20551 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 delta 8477 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 Playing: {{ id }}. {{ name }} ({% for _, _, _, album_code in album_info %}{{ album_code }}{% if not loop.last %}, {% endif %}{% endfor %}) +

Now Playing: {{ id }}. {{ name }} ({% for _, _, album_code in album_info %}{{ album_code }}{% if not loop.last %}, {% endif %}{% endfor %})

+ + +

Artist:

+
    +{% for name, name_rm, credit in artist_info %} +
  • {{ name_rm }} ({{ name }}): {{ credit }}
  • +{% endfor %} +
+ + +

Album:

    -{% for album_id, track, album_name, album_code in album_info %} +{% for track, album_name, album_code in album_info %}
  • {{ album_name }} #{{ track }}
  • {% endfor %}
-

blah

+

Clips:

- +
    +{% for song_id, motif_id, motif in clip_info %} +
  • + {{ motif }} +
  • +{% endfor %} + {% endblock %}