Add tasks that Emacsen wrote for generating media info

This commit is contained in:
Tom Willemse 2023-11-14 16:32:54 -08:00
parent 4da84d4012
commit ba71d9ad30

38
tasks.py Normal file
View file

@ -0,0 +1,38 @@
from invoke import task
from shutil import rmtree, unpack_archive
from os import mkdir
from os.path import isdir, basename
from glob import glob
from itertools import chain
from shlex import quote
PREP = "assets"
OUTPUT = "output"
MUSIC_GLOBS = ["*.flac", "*.mp3", "*.ogg", "*.opus", "*.aac"]
@task
def clean(c):
dirs = [dir for dir in [PREP] if isdir(dir)]
for dir in dirs:
print(f"Removing {dir}")
rmtree(dir)
@task
def unpack(c):
zipfiles = glob("src/*.zip")
if not isdir(PREP):
mkdir(PREP)
for zipfile in zipfiles:
unpack_archive(zipfile, PREP)
@task(unpack)
def probe(c):
if not isdir(OUTPUT):
mkdir(OUTPUT)
music_list = list(chain.from_iterable([glob(f"{PREP}/{pat}") for pat in MUSIC_GLOBS]))
for m in music_list:
cmd = f"ffprobe -v quiet -print_format json -show_format {quote(m)}"
result = c.run(cmd)
with open(f"{OUTPUT}/{basename(m)}.json", 'w') as f:
f.write(result.stdout)