From 791213481f03dfa5f8306d1b18fac138bf87bdc0 Mon Sep 17 00:00:00 2001 From: ChaotiCryptidz Date: Sun, 6 Feb 2022 16:18:14 +0000 Subject: [PATCH] run formatter --- musicutil/__main__.py | 2 +- musicutil/commands/copy_command.py | 23 +++++++++++---- musicutil/commands/process_command.py | 12 ++++++-- musicutil/commands/transcode_command.py | 30 ++++++++++++-------- musicutil/meta.py | 2 +- musicutil/transcode_presets.py | 37 ++++++++++++++++++++----- musicutil/utils/do_replaygain.py | 9 ++++-- musicutil/utils/load_tag_information.py | 13 +++++---- musicutil/utils/scan_for_music.py | 2 ++ musicutil/utils/substitutions.py | 1 + musicutil/utils/transcoder.py | 23 +++++++++------ 11 files changed, 108 insertions(+), 46 deletions(-) diff --git a/musicutil/__main__.py b/musicutil/__main__.py index 77e3f35..c60187e 100644 --- a/musicutil/__main__.py +++ b/musicutil/__main__.py @@ -21,4 +21,4 @@ if args.subparser_name == "process": elif args.subparser_name == "copy": CopyCommand(get_copy_args(args)).run() elif args.subparser_name == "transcode": - TranscodeCommand(get_transcode_args(args)).run() \ No newline at end of file + TranscodeCommand(get_transcode_args(args)).run() diff --git a/musicutil/commands/copy_command.py b/musicutil/commands/copy_command.py index 5a2de80..e64e284 100644 --- a/musicutil/commands/copy_command.py +++ b/musicutil/commands/copy_command.py @@ -15,6 +15,7 @@ class CopyCommandState: files: list[File] = [] transcoded_files: list[File] = [] + class CopyCommandArgs(): src: str dest: str @@ -24,6 +25,7 @@ class CopyCommandArgs(): skip_existing: bool skip_replaygain: bool + def add_copy_command(subparsers): copy_parser = subparsers.add_parser('copy') copy_parser.add_argument( @@ -53,6 +55,7 @@ def add_copy_command(subparsers): '--single-directory', action='store_true') + def get_copy_args(args) -> CopyCommandArgs: print(args) command_args = CopyCommandArgs() @@ -65,6 +68,7 @@ def get_copy_args(args) -> CopyCommandArgs: command_args.skip_replaygain = args.skip_replaygain return command_args + class CopyCommand(): def __init__(self, args: CopyCommandArgs): self.args = args @@ -137,7 +141,10 @@ class CopyCommand(): self.state.transcoded_files.append(file) - def _transcode_with_config(self, file: File, trans_config: TranscodeConfig): + def _transcode_with_config( + self, + file: File, + trans_config: TranscodeConfig): src = file.join_path_to() new_file = deep_copy(file) @@ -147,7 +154,8 @@ class CopyCommand(): ) if self.args.single_directory else new_file.join_path_from_src() dest_filepath = self.args.dest + "/" + dest_filepath - if (self.args.skip_existing and path_exists(dest_filepath)): + if (self.args.skip_existing and path_exists( + dest_filepath)): print("Skipping transcoding", dest_filepath) self.state.transcoded_files.append(new_file) return @@ -167,7 +175,8 @@ class CopyCommand(): directories.add(file.path_from_src) for dir in directories: make_directories( - self.args.dest + "/" + dir, exist_ok=True) + self.args.dest + "/" + dir, + exist_ok=True) is_transcode_config_set = self.args.custom_transcoder_config is not None @@ -183,7 +192,8 @@ class CopyCommand(): trans_config = TranscodeConfig() trans_config.load_from_file(f) else: - trans_config = get_transcode_config(self.args.transcode_preset) + trans_config = get_transcode_config( + self.args.transcode_preset) print(trans_config) @@ -201,6 +211,7 @@ class CopyCommand(): print("Adding ReplayGain Tags") for file in self.state.files: - print(f"Adding ReplayGain Tags to \"{file.filename}.{file.extension}\"") + print( + f"Adding ReplayGain Tags to \"{file.filename}.{file.extension}\"") - do_replaygain(file) \ No newline at end of file + do_replaygain(file) diff --git a/musicutil/commands/process_command.py b/musicutil/commands/process_command.py index b63024f..6cb92d4 100644 --- a/musicutil/commands/process_command.py +++ b/musicutil/commands/process_command.py @@ -11,11 +11,13 @@ from os import rename as rename_file class ProcessCommandState: files: list[File] = [] + class ProcessCommandArgs: src: str dry_run: bool skip_replaygain: bool + def add_process_command(subparsers): process_parser = subparsers.add_parser('process') process_parser.add_argument( @@ -28,6 +30,7 @@ def add_process_command(subparsers): '--skip-replaygain', action='store_true') + def get_process_args(args) -> ProcessCommandArgs: command_args = ProcessCommandArgs() command_args.src = args.src @@ -35,6 +38,7 @@ def get_process_args(args) -> ProcessCommandArgs: command_args.skip_replaygain = args.skip_replaygain return command_args + class ProcessCommand(): def __init__(self, args: ProcessCommandArgs): self.args = args @@ -45,7 +49,8 @@ class ProcessCommand(): self.scan_for_music() self.load_tag_information() self.rename_files() - if (not self.args.skip_replaygain) and (not self.args.dry_run): + if (not self.args.skip_replaygain) and ( + not self.args.dry_run): self.add_replaygain_tags() def scan_for_music(self): @@ -96,6 +101,7 @@ class ProcessCommand(): print("Adding ReplayGain Tags") for file in self.state.files: - print(f"Adding ReplayGain Tags to \"{file.filename}.{file.extension}\"") + print( + f"Adding ReplayGain Tags to \"{file.filename}.{file.extension}\"") - do_replaygain(file) \ No newline at end of file + do_replaygain(file) diff --git a/musicutil/commands/transcode_command.py b/musicutil/commands/transcode_command.py index 2d690a1..6f49bcb 100644 --- a/musicutil/commands/transcode_command.py +++ b/musicutil/commands/transcode_command.py @@ -6,6 +6,7 @@ from ..transcode_presets import print_transcode_presets, transcode_presets from pathlib import Path from json import load as load_json_file + class TranscodeCommandArgs: src: str dest: str @@ -14,6 +15,7 @@ class TranscodeCommandArgs: custom_transcoder_config_path: str skip_replaygain: bool + def add_transcode_command(subparsers): transcode_parser = subparsers.add_parser('transcode') transcode_parser.add_argument( @@ -35,11 +37,12 @@ def add_transcode_command(subparsers): transcode_parser.add_argument( '--custom-transcoder-config', type=str, - help='custom transcoder config') + help='custom transcoder config') transcode_parser.add_argument( '--skip-replaygain', action='store_true') + def get_transcode_args(args) -> TranscodeCommandArgs: command_args = TranscodeCommandArgs() command_args.src = args.src @@ -50,6 +53,7 @@ def get_transcode_args(args) -> TranscodeCommandArgs: command_args.skip_replaygain = args.skip_replaygain return command_args + class TranscodeCommand: def __init__(self, args: TranscodeCommandArgs): self.args = args @@ -61,26 +65,28 @@ class TranscodeCommand: print("Transcoding...") input_file = file_from_path(Path(self.args.src), "") - - if self.args.custom_transcoder_config_path is None or len(self.args.custom_transcoder_config_path) == 0: - trans_config = get_transcode_config(self.args.transcode_preset) + + if self.args.custom_transcoder_config_path is None or len( + self.args.custom_transcoder_config_path) == 0: + trans_config = get_transcode_config( + self.args.transcode_preset) else: - with open(self.args.custom_transcoder_config_path, "r+") as file: + with open(self.args.custom_transcoder_config_path, "r+") as file: trans_config = TranscodeConfig() trans_config.load_from_file(file) - output_file = file_from_path(Path(self.args.dest), "") + output_file = file_from_path( + Path(self.args.dest), "") if trans_config.file_extension != output_file.extension and not self.args.ignore_extension: print( - f"{output_file.extension} is not the recommended "+ - f"extension for transcode config "+ - f"please change it to {trans_config.file_extension} "+ - f"or run with --ignore-extension" - ) + f"{output_file.extension} is not the recommended " + + f"extension for transcode config " + + f"please change it to {trans_config.file_extension} " + + f"or run with --ignore-extension") exit() transcode(input_file, trans_config, self.args.dest) if not self.args.skip_replaygain: print("Adding ReplayGain Tags") - do_replaygain(output_file, False) \ No newline at end of file + do_replaygain(output_file, False) diff --git a/musicutil/meta.py b/musicutil/meta.py index dff1486..d266fd3 100644 --- a/musicutil/meta.py +++ b/musicutil/meta.py @@ -11,4 +11,4 @@ substitutions = { # Patch to whatever path ffmpeg is at ffmpeg_path = "ffmpeg" ffprobe_path = "ffprobe" -r128gain_path = "r128gain" \ No newline at end of file +r128gain_path = "r128gain" diff --git a/musicutil/transcode_presets.py b/musicutil/transcode_presets.py index 68c415b..5599e59 100644 --- a/musicutil/transcode_presets.py +++ b/musicutil/transcode_presets.py @@ -1,9 +1,13 @@ -from functools import reduce +from functools import reduce -def add_to_arr(arr: list[str], items: list[str]) -> list[str]: + +def add_to_arr( + arr: list[str], + items: list[str]) -> list[str]: for item in items: arr.append(item) + # does not include copy transcode_presets = {} @@ -14,14 +18,30 @@ add_to_arr(transcode_presets["mp3"], [ f"mp3-v{quality}" for quality in range(0, 10) ]) # mp3 bitrates -mp3_bitrates = [8, 16, 24, 32, 40, 48, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320] +mp3_bitrates = [ + 8, + 16, + 24, + 32, + 40, + 48, + 64, + 80, + 96, + 112, + 128, + 160, + 192, + 224, + 256, + 320] add_to_arr(transcode_presets["mp3"], [ f"mp3-{bitrate}k" for bitrate in mp3_bitrates ]) transcode_presets["opus"] = [] -opus_bitrates = ["16", "24", "32", "64", "96", "128", "256"] +opus_bitrates = ["16", "24", "32", "64", "96", "128", "256"] add_to_arr(transcode_presets["opus"], [ f"opus-{bitrate}k" for bitrate in opus_bitrates ]) @@ -37,10 +57,10 @@ transcode_presets["speex"] = [] add_to_arr(transcode_presets["speex"], [ f"speex-q{quality}" for quality in range(0, 11) ]) - + transcode_presets["g726"] = [] -g726_bitrates = ["16", "24", "32", "40"] +g726_bitrates = ["16", "24", "32", "40"] add_to_arr(transcode_presets["g726"], [ f"g726-{bitrate}k" for bitrate in g726_bitrates ]) @@ -74,10 +94,13 @@ transcode_presets["vorbis"].sort() transcode_presets["speex"].sort() transcode_presets["g726"].sort() + def print_transcode_presets(): for category in transcode_presets.keys(): print(f"Category {category}:") for preset in transcode_presets[category]: print(f"- {preset}") -transcode_presets_list = reduce(lambda a, b: a+b, transcode_presets.values()) \ No newline at end of file + +transcode_presets_list = reduce( + lambda a, b: a + b, transcode_presets.values()) diff --git a/musicutil/utils/do_replaygain.py b/musicutil/utils/do_replaygain.py index 71656ca..125e443 100644 --- a/musicutil/utils/do_replaygain.py +++ b/musicutil/utils/do_replaygain.py @@ -3,7 +3,10 @@ from ..meta import r128gain_path, ffmpeg_path from subprocess import run as run_command -def do_replaygain(file: File, skip_if_existing: bool = True) -> None: + +def do_replaygain( + file: File, + skip_if_existing: bool = True) -> None: command_args = [ r128gain_path, "-f", ffmpeg_path, @@ -11,6 +14,6 @@ def do_replaygain(file: File, skip_if_existing: bool = True) -> None: file.join_path_to() ] - if skip_if_existing: + if skip_if_existing: command_args.append("-s") - run_command(command_args) \ No newline at end of file + run_command(command_args) diff --git a/musicutil/utils/load_tag_information.py b/musicutil/utils/load_tag_information.py index f85ae6f..a5244cd 100644 --- a/musicutil/utils/load_tag_information.py +++ b/musicutil/utils/load_tag_information.py @@ -7,6 +7,7 @@ from json import loads as load_json_string from mutagen.mp3 import EasyMP3 as MP3 from mutagen.flac import FLAC + def load_tag_information_mutagen(file: File) -> Tags: path = file.join_path_to() tags = Tags() @@ -23,7 +24,6 @@ def load_tag_information_mutagen(file: File) -> Tags: return tags - def load_tag_information_ffmpeg(file: File) -> Tags: path = file.join_path_to() tags = Tags() @@ -35,8 +35,9 @@ def load_tag_information_ffmpeg(file: File) -> Tags: "-show_format", path ] - - ffprobe_output = run_command(command_args, capture_output=True).stdout + + ffprobe_output = run_command( + command_args, capture_output=True).stdout data = load_json_string(ffprobe_output) file_tags = data["format"]["tags"] @@ -65,6 +66,7 @@ def load_tag_information_ffmpeg(file: File) -> Tags: tags.artist = artist return tags + def load_tag_information(file: File) -> Tags: try: tags = load_tag_information_mutagen(file) @@ -72,6 +74,7 @@ def load_tag_information(file: File) -> Tags: except Exception as _: tags = load_tag_information_ffmpeg(file) return tags - except: - print(f"Could not get tags for file {file.filename}. Exiting.") + except BaseException: + print( + f"Could not get tags for file {file.filename}. Exiting.") exit() diff --git a/musicutil/utils/scan_for_music.py b/musicutil/utils/scan_for_music.py index c2546ed..3730241 100644 --- a/musicutil/utils/scan_for_music.py +++ b/musicutil/utils/scan_for_music.py @@ -4,6 +4,7 @@ from os.path import relpath from ..types import File from ..meta import supported_formats + def file_from_path(path: Path, src: str) -> File: file = File() file.path_to = str(path.parent) @@ -13,6 +14,7 @@ def file_from_path(path: Path, src: str) -> File: file.extension = path.suffix.replace(".", "") return file + def scan_for_music(src: str) -> list[File]: files: list[File] = [] for format in supported_formats: diff --git a/musicutil/utils/substitutions.py b/musicutil/utils/substitutions.py index 1430924..db2a613 100644 --- a/musicutil/utils/substitutions.py +++ b/musicutil/utils/substitutions.py @@ -1,6 +1,7 @@ from ..meta import sub_char, substitutions from fold_to_ascii import fold + def reduce_to_ascii_and_substitute(filename: str): filename = filename.replace("/", sub_char) filename = filename.replace("\\", sub_char) diff --git a/musicutil/utils/transcoder.py b/musicutil/utils/transcoder.py index c6e4833..7cac9cf 100644 --- a/musicutil/utils/transcoder.py +++ b/musicutil/utils/transcoder.py @@ -6,6 +6,7 @@ from yaml import load as load_yaml_file from yaml import Loader as YamlLoader from subprocess import run as run_command + class TranscodeConfig: use_quality = False use_bitrate = False @@ -18,7 +19,9 @@ class TranscodeConfig: channels = "" def load_from_file(self, file): - self.load_from_dict(load_yaml_file(file, Loader=YamlLoader)) + self.load_from_dict( + load_yaml_file( + file, Loader=YamlLoader)) def load_from_dict(self, data): if "use_quality" in data: @@ -41,6 +44,7 @@ class TranscodeConfig: self.channels = data["channels"] return self + def get_transcode_config(preset: str): conf = TranscodeConfig() if preset in preset_transcode_presets.keys(): @@ -54,7 +58,7 @@ def get_transcode_config(preset: str): "sample_rate": "8000", "channels": "1", "use_bitrate": True, - "bitrate": preset.replace("g726-", "") + "bitrate": preset.replace("g726-", "") }) return conf @@ -64,7 +68,7 @@ def get_transcode_config(preset: str): "file_extension": "opus", "encoder": "libopus", "use_bitrate": True, - "bitrate": preset.replace("opus-", "") + "bitrate": preset.replace("opus-", "") }) return conf @@ -81,8 +85,8 @@ def get_transcode_config(preset: str): return conf elif preset.startswith("mp3-") and preset.endswith("k"): conf.use_bitrate = True - conf.bitrate = preset.replace("mp3-", "") - return conf + conf.bitrate = preset.replace("mp3-", "") + return conf if preset.startswith("vorbis-q"): conf.load_from_dict({ @@ -107,7 +111,11 @@ def get_transcode_config(preset: str): print("Unknown Level") exit() -def transcode(file: File, config: TranscodeConfig, dest: str): + +def transcode( + file: File, + config: TranscodeConfig, + dest: str): ffmpeg_command = [ ffmpeg_path, "-y", @@ -132,14 +140,13 @@ def transcode(file: File, config: TranscodeConfig, dest: str): ffmpeg_command.append("-ac") ffmpeg_command.append(config.channels) - if config.use_quality: ffmpeg_command.append("-q:a") ffmpeg_command.append(config.quality) elif config.use_bitrate: ffmpeg_command.append("-b:a") ffmpeg_command.append(config.bitrate) - else: + else: pass ffmpeg_command.append(dest)