diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b73aee8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.direnv +.envrc +__pycache__ +cue_to_meta.egg-info diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8112398..7fdaf0a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -15,4 +15,4 @@ repos: rev: 22.3.0 hooks: - id: black - language_version: python3.10 + language_version: python3.9 diff --git a/cue_to_meta.py b/cue_to_meta.py old mode 100755 new mode 100644 index 75b6689..32d2fbb --- a/cue_to_meta.py +++ b/cue_to_meta.py @@ -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) diff --git a/pyproject.toml b/pyproject.toml index 5d7bf33..dceaa5f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,2 +1,6 @@ +[build-system] +requires = ["setuptools >= 40.9.0"] +build-backend = "setuptools.build_meta" + [tool.isort] profile = "black" diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..09f8436 --- /dev/null +++ b/setup.cfg @@ -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