TexLiLy/lilypond.py
2023-06-15 08:10:36 +02:00

34 lines
1,009 B
Python

template = r"""
{version]
\header {{
tagline = ""
}}
{content}
"""
def render(user: str, source: str, png: bool = True, version: str = None, template: bool = False) -> str:
import tempfile
import subprocess
import utils
import os
versionstr = ""
if version is not None:
versionstr = r'\version "{version}"'.format(version=version)
fmt = template.format(content=source, version=versionstr) if template else source
tmp = tempfile.NamedTemporaryFile(delete=False)
tmp.write(bytes(fmt, encoding="utf8"))
tmp.close()
if png:
ret = subprocess.run(["lilypond", "-d", "preview", "--png",
"-dresolution=500", tmp.name], cwd="/tmp", capture_output=True)
if ret.returncode != 0:
raise FileNotFoundError(ret.stderr.decode())
return tmp.name + ".preview.png"
subprocess.run(["lilypond", "-d", "preview",
"--svg", tmp.name], cwd="/tmp")
return tmp.name + "preview.svg"