Rework using click

This commit is contained in:
Mark Cornick 2022-12-14 01:29:10 -05:00
parent 9b983412e1
commit 4b5aaabdd2
Signed by: mcornick
GPG Key ID: C64D29B7F5271161
5 changed files with 43 additions and 48 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
.direnv
.envrc
__pycache__
cue_to_meta.egg-info

View File

@ -15,4 +15,4 @@ repos:
rev: 22.3.0
hooks:
- id: black
language_version: python3.10
language_version: python3.9

71
cue_to_meta.py Executable file → Normal file
View File

@ -26,58 +26,35 @@
import re
import sys
import click
def cue_to_meta(cue_file):
meta_file = re.sub(r"cue$", "meta", cue_file)
try:
with open(cue_file) as f:
cue = f.readlines()
except FileNotFoundError:
sys.stderr.write("{} not found\n".format(cue_file))
sys.exit(1)
except IsADirectoryError:
sys.stderr.write("{} is a directory\n".format(cue_file))
sys.exit(1)
except PermissionError:
sys.stderr.write("No permission to read {}\n".format(cue_file))
sys.exit(1)
except OSError:
sys.stderr.write("OS error trying to read {}\n".format(cue_file))
sys.exit(1)
def cue_to_meta(cuefile, metafile):
title = None
performer = None
timestamp = None
try:
with open(meta_file, "w") as f:
for line in cue:
title_re = re.search(r'^ TITLE "(.*)"$', line)
performer_re = re.search(r'^ PERFORMER "(.*)"$', line)
index_re = re.search(r"^ INDEX 01 (.*)$", line)
if title_re:
title = title_re[1]
if performer_re:
performer = performer_re[1]
if index_re:
time_re = re.search(r"^(..):(..):..$", index_re[1])
timestamp = "00{}{}".format(time_re[1], time_re[2])
if title and performer and timestamp:
f.write("{}:{} - {}\n".format(timestamp, performer, title))
title = None
performer = None
timestamp = None
except IsADirectoryError:
sys.stderr.write("{} is a directory\n".format(meta_file))
sys.exit(1)
except PermissionError:
sys.stderr.write("No permission to write {}\n".format(meta_file))
sys.exit(1)
except OSError:
sys.stderr.write("OS error trying to write {}\n".format(meta_file))
sys.exit(1)
for line in cuefile.readlines():
title_re = re.search(r'^ TITLE "(.*)"$', line)
performer_re = re.search(r'^ PERFORMER "(.*)"$', line)
index_re = re.search(r"^ INDEX 01 (.*)$", line)
if title_re:
title = title_re[1]
if performer_re:
performer = performer_re[1]
if index_re:
time_re = re.search(r"^(..):(..):..$", index_re[1])
timestamp = "00{}{}".format(time_re[1], time_re[2])
if title and performer and timestamp:
metafile.write("{}:{} - {}\n".format(timestamp, performer, title))
title = None
performer = None
timestamp = None
if __name__ == "__main__":
cue_to_meta(sys.argv[1])
@click.command()
@click.argument("cuefile", type=click.File("r"))
@click.argument("metafile", type=click.File("w"))
def cli(cuefile, metafile):
"""Convert CUEFILE to meta format as METAFILE."""
cue_to_meta(cuefile, metafile)

View File

@ -1,2 +1,6 @@
[build-system]
requires = ["setuptools >= 40.9.0"]
build-backend = "setuptools.build_meta"
[tool.isort]
profile = "black"

10
setup.cfg Normal file
View File

@ -0,0 +1,10 @@
[metadata]
name = cue_to_meta
version = 0.1.0
[options]
py_modules = cue_to_meta
install_requires = Click
[options.entry_points]
console_scripts = cue_to_meta = cue_to_meta:cli