nixfiles/musicutil/commands/stats_command.py

55 lines
1.7 KiB
Python
Raw Normal View History

2022-02-08 14:10:28 +00:00
from musicutil.utils.load_tag_information import load_tag_information
from musicutil.utils.scan_for_music import scan_for_music
from functools import reduce
class StatsArgs():
src: str
def add_stats_command(subparsers):
stats_parser = subparsers.add_parser('stats')
stats_parser.add_argument(
'src',
type=str,
help='src base music directory')
def get_stats_args(args) -> StatsArgs:
command_args = StatsArgs()
command_args.src = args.src
return command_args
class StatsCommand():
def __init__(self, args: StatsArgs):
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
# So far we only support MP3 and Flac so only have these
mp3_files_count = len([True for file in files if file.extension == "mp3"])
flac_files_count = len([True for file in files if file.extension == "flac"])
lossy_files_count = mp3_files_count
lossless_files_count = flac_files_count
total_files_count = lossy_files_count + lossless_files_count
lossy_percent = (lossy_files_count/total_files_count)
lossless_percent = (lossless_files_count/total_files_count)
print("Stats:")
print(f"Total Files: {total_files_count}")
print(f"Lossy#: {lossy_files_count}/{total_files_count}")
print(f"Lossless#: {lossless_files_count}/{total_files_count}")
print(f"Lossy%: {lossy_percent:.2%}")
print(f"Lossless%: {lossless_percent:.2%}")