From 6551de89e8ecaffdb72144895c76c08cfa5b9478 Mon Sep 17 00:00:00 2001 From: ChaotiCryptidz Date: Sun, 6 Feb 2022 19:46:31 +0000 Subject: [PATCH] add a html generator for listings --- musicutil/__main__.py | 5 ++ musicutil/commands/genhtml_command.py | 103 ++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 musicutil/commands/genhtml_command.py diff --git a/musicutil/__main__.py b/musicutil/__main__.py index c60187e..d174e18 100644 --- a/musicutil/__main__.py +++ b/musicutil/__main__.py @@ -2,6 +2,8 @@ import argparse +from musicutil.commands.genhtml_command import GenHTMLCommand, add_genhtml_command, get_genhtml_args + from .commands.process_command import ProcessCommand, add_process_command, get_process_args from .commands.copy_command import CopyCommand, add_copy_command, get_copy_args from .commands.transcode_command import TranscodeCommand, add_transcode_command, get_transcode_args @@ -13,6 +15,7 @@ subparsers = parser.add_subparsers(dest="subparser_name") add_copy_command(subparsers) add_process_command(subparsers) add_transcode_command(subparsers) +add_genhtml_command(subparsers) args = parser.parse_args() @@ -22,3 +25,5 @@ elif args.subparser_name == "copy": CopyCommand(get_copy_args(args)).run() elif args.subparser_name == "transcode": TranscodeCommand(get_transcode_args(args)).run() +elif args.subparser_name == "genhtml": + GenHTMLCommand(get_genhtml_args(args)).run() diff --git a/musicutil/commands/genhtml_command.py b/musicutil/commands/genhtml_command.py new file mode 100644 index 0000000..ee46134 --- /dev/null +++ b/musicutil/commands/genhtml_command.py @@ -0,0 +1,103 @@ +from musicutil.utils.load_tag_information import load_tag_information +from musicutil.utils.scan_for_music import scan_for_music + +class GenHTMLArgs(): + src: str + dest: str + title: str + description: str + +def add_genhtml_command(subparsers): + genhtml_parser = subparsers.add_parser('genhtml') + genhtml_parser.add_argument( + 'src', + type=str, + help='src base music directory') + genhtml_parser.add_argument( + 'dest', + type=str, + help='dest html file') + genhtml_parser.add_argument( + 'title', + type=str, + help='title') + genhtml_parser.add_argument( + 'description', + type=str, + help='description') + +def get_genhtml_args(args) -> GenHTMLArgs: + command_args = GenHTMLArgs() + command_args.src = args.src + command_args.dest = args.dest + command_args.title = args.title + command_args.description = args.description + return command_args + +class GenHTMLCommand(): + def __init__(self, args: GenHTMLArgs): + self.args = args + + def run(self): + print("Generating HTML...") + print("Scanning For Music...") + files = scan_for_music(self.args.src) + print("Loading Tag Information") + for file in files: + tags = load_tag_information(file) + file.tags = tags + + files.sort(key=lambda file: file.tags.artist) + files.sort(key=lambda file: file.tags.title) + files.sort(key=lambda file: file.path_from_src) + + html_content = "" + html_content += f""" + + + + + + {self.args.title} + + + + + """ + html_content += """ + + + + + + + + + + + """ + isOdd = True + for file in files: + tdClass = "pure-table-odd" if isOdd else "pure-table-even" + + html_content += f""" + + + + + + + """ + isOdd = not isOdd + html_content += """ + +
PathTitleArtistFormat
{file.path_from_src}{file.tags.title}{file.tags.artist}{file.extension}
+ + + """ + print("Writing HTML...") + with open(self.args.dest, "w+") as html_file: + html_file.write(html_content) + + +