site/common.py

56 lines
1.1 KiB
Python

from subprocess import run
import json
import time
ACRONYM = "sch"
FORMATS = {
"opus": ["-b:a", "48k"],
"m4a": [
"-b:a",
"48k",
"-f",
"ipod",
"-profile:a",
"aac_he",
"-disposition:v:0",
"attached_pic",
],
"oga": ["-b:a", "64k", "-c:a", "libvorbis"],
"mp3": ["-b:a", "72k", "-map", "0:0", "-map", "1:0"],
}
def path_to_episode(name, format):
if format in ["original", "txt", "md"]:
base = "content"
else:
base = "static/episodes"
if format == "original":
format = "opus"
return f"{base}/{name}.{format}"
def get_episode_info(name, format):
path = path_to_episode(name, format)
return json.loads(
run(
[
"ffprobe",
"-loglevel",
"error",
"-show_format",
"-print_format",
"json",
path,
],
capture_output=True,
).stdout
)["format"]
def sexagesimal(ts):
return time.strftime("%H:%M:%S", time.gmtime(ts)) + str(round(ts % 1, 3))[1:]