Compare commits

..

No commits in common. "6880b57844fe6da5140772a01e87f99fb6f0ebfc" and "6a3216a25bd64529483387914a12cc69424c8e49" have entirely different histories.

6 changed files with 41 additions and 83 deletions

3
.gitignore vendored
View File

@ -1,2 +1,3 @@
/songbook.sqlite /songbook.sqlite
/public/ /public/
/clips/

View File

@ -4,40 +4,40 @@ import glob
import shutil import shutil
import sox import sox
shutil.rmtree('public/clip') shutil.rmtree('clips')
os.makedirs('public/clip', exist_ok=True) os.mkdir('clips')
db = sqlite3.connect("file:songbook.sqlite?mode=ro", uri=True) db = sqlite3.connect("file:songbook.sqlite?mode=ro", uri=True)
cur = db.cursor() cur = db.cursor()
for song, motif, start, duration, album, track in db.execute(''' for song, motif, start, duration in db.execute('''
select select
clip.song_id, motif_id, start_ms, duration_ms, max(album_id), track song_id, motif_id, start_ms, duration_ms
from from
clip clip'''):
join album, track = db.execute('''
song_album select
on album_id, track
clip.song_id=song_album.song_id from
group by song_album
clip.song_id, motif_id''' where
): song_id = ?
order by
album_id desc limit 1''', (song,)).fetchone()
# get source path # get source path
album_folder = f'{album - 1:02}. *' album_folder = f'{album - 1:02}. *'
song_file = f'{track:03}. *.flac' song_file = f'{track:03}. *.flac'
source = glob.glob(f"/mnt/petal/media/Audio/ffxiv/{album_folder}/{song_file}") source = glob.glob(f"/mnt/petal/media/Audio/ffxiv/{album_folder}/{song_file}")[0]
assert(len(source) == 1)
source = source[0]
print(source) print(source)
# get clip filename # get clip filename
destination = f'public/clip/{song:04}-{motif:03}.flac' destination = f'clips/{song:04}-{motif:03}.flac'
print(destination) print(destination)
@ -45,23 +45,21 @@ for song, motif, start, duration, album, track in db.execute('''
# trim and fade start # trim and fade start
fade_length = 2 if start < 2:
if start < fade_length:
trim_start = 0 trim_start = 0
fade_in = 0 fade_in = 0
else: else:
trim_start = start - fade_length trim_start = start - 2
fade_in = fade_length fade_in = 2
# trim and fade end (to be continued) # trim and fade end (to be continued)
if source_duration - (start + duration ) < fade_length: if source_duration - (start + duration ) < 2:
trim_end = None trim_end = None
fade_out = 0 fade_out = 0
else: else:
trim_end = start + duration + fade_length trim_end = start + duration + 2
fade_out = fade_length fade_out = 2
# call sox # call sox

View File

@ -1,12 +1,12 @@
import sqlite3 import sqlite3
import jinja2 import jinja2
import os import os
import shutil
for dirname in [ for dirname in [
"public/song", "public/song",
"public/motif", "public/motif",
"public/album" "public/album",
"public/clip",
]: ]:
os.makedirs(dirname, exist_ok=True) os.makedirs(dirname, exist_ok=True)
@ -15,40 +15,21 @@ songplate = environment.get_template("songpage.jinja")
db = sqlite3.connect("file:songbook.sqlite?mode=ro", uri=True) db = sqlite3.connect("file:songbook.sqlite?mode=ro", uri=True)
# generate song pages
for id, name, name_jp in db.execute(''' for song in db.execute("SELECT name FROM song"):
select filename = f"public/song/{song[0]}"
id, name, name_jp
from
song
'''):
# query album info
album_info = db.execute('''
select
album_id, track, album.name, album.code
from
song_album
join
album
on
song_album.album_id=album.id
where
song_id = ?
''',
(id,)
).fetchall()
print(album_info)
filename = f"public/song/{id:04}"
content = songplate.render( content = songplate.render(
name=name, songname=song[0],
id=id, clips=()
album_info=album_info
) )
with open(filename, mode="w") as file: with open(filename, mode="w") as file:
file.write(content) file.write(content)
print(f"... wrote {filename}") print(f"... wrote {filename}")
# template = environment.from_string("Now Playing: {{ song }}")
# for songname in songnames:
# print(
# template.render(
# song=songname[0]
# )
# )

View File

@ -1,2 +0,0 @@
sudo rm -r /var/www/eorzea-songbook
sudo cp -r public/ /var/www/eorzea-songbook

View File

@ -1,12 +0,0 @@
eorzea-songbook.com/
index.html
/song
/name
/motif
/name
/album
/name

View File

@ -7,15 +7,7 @@
</head> </head>
<body> <body>
<h1>Now Playing: {{ id }}. {{ name }} ({% for _, _, _, album_code in album_info %}{{ album_code }}{% if not loop.last %}, {% endif %}{% endfor %}) <h1>Now Playing: {{ songname }}</h1>
</h1>
<p>Artist: </p>
<p>Album: </p>
<ul>
{% for album_id, track, album_name, album_code in album_info %}
<li>{{ album_name }} #{{ track }}</li>
{% endfor %}
</ul>
<p>Clips: </p>
</body> </body>
</html> </html>