94 lines
6.8 KiB
Python
94 lines
6.8 KiB
Python
import os
|
|
#import tempfile
|
|
|
|
from musicman.utils.constants import SUPPORTED_FORMATS, VERSION
|
|
|
|
def parse_args():
|
|
import argparse
|
|
#parser = optparse.OptionParser(usage="%prog [options] [files]",
|
|
# version=VERSION)
|
|
#parser = argparse.ArgumentParser(description="Media Library Management Tools",
|
|
# usage="%(prog)s [command] [options]")
|
|
parser = argparse.ArgumentParser(description="Media Library Management Tools")
|
|
#subparsers = parser.add_subparsers(help="sub-command-help")
|
|
|
|
#parser.add_argument('-b', '--base', help="Origin Directory for Library (overrides config)", type=str, dest="originDir")
|
|
#parser.add_argument('-t', '--target', help="Target Directory for Library (overrides config)", type=str, dest="targetDir")
|
|
|
|
parser.add_argument('--version', help="show version information and exit", action="version", version='%(prog)s '+VERSION)
|
|
parser.add_argument('-v', help='Increase verbosity of processing', dest='verbose', action='count')
|
|
|
|
subparsers = parser.add_subparsers(title="Command Modes", dest="mode")
|
|
|
|
clean = subparsers.add_parser('clean', help='Clean Mode', description='Library cleanup operations. Allows you to remove empty directories.')
|
|
clean_lib = clean.add_argument_group('Library Options')
|
|
clean_lib.add_argument('-o', '--origin', help="Origin Directory for Library (overrides config)", metavar="DIR", type=str, dest="originDir")
|
|
clean_lib.add_argument('-e', '--exclude', help="Exclude Directory from origin (can be used multiple times)", metavar="DIR", dest='excludeDirs', action='append')
|
|
clean_act = clean.add_argument_group('Action Options')
|
|
clean_act.add_argument('-g', '--go', help="Clean up library (default just shows what would be done)", dest="act", action='store_true')
|
|
clean.set_defaults(act=False)
|
|
|
|
convert = subparsers.add_parser('convert', help='Convert Mode', description='Conversion mode scans for media in the origin library, and converts them into the target format. Conversion depends on a fully tagged library, including MusicBrainz metadata. This insures that the data provide is accurate as it uses that metadata for the destination artist/album/song.')
|
|
convert_lib = convert.add_argument_group('Library Options')
|
|
convert_lib.add_argument('-o', '--origin', help="Origin Directory for Library (overrides config)", metavar="DIR", type=str, dest="originDir")
|
|
convert_lib.add_argument('-t', '--target', help="Target Directory for Library (overrides config)", metavar="DIR", type=str, dest="targetDir")
|
|
convert_lib.add_argument('--format', help="Target directory library format", metavar="FORMAT", type=str, dest="targetFormat")
|
|
convert_lib.add_argument('-w', '--work', help="Working Directory for new processed files (overrides config)", metavar="DIR", type=str, dest="workDir")
|
|
convert_lib.add_argument('-e', '--exclude', help="Exclude Directory from origin (can be used multiple times)", metavar="DIR", dest='excludeDirs', action='append')
|
|
convert_act = convert.add_argument_group('Action Options')
|
|
convert_act.add_argument('-g', '--go', help="Convert media (default just shows new items)", dest="act", action='store_true')
|
|
convert.set_defaults(act=False)
|
|
|
|
info = subparsers.add_parser('info', help='Info Mode', description='Displays file and metadata information about specified files and files within specified directories.')
|
|
info.add_argument('paths', help="Show information about files, or all files in directory.", metavar="PATH", nargs='+')
|
|
|
|
rename = subparsers.add_parser('rename', help='Rename Mode', description='Library rename tool renames media into their respective Artist/Album/[Disc-][Track-]Title in relation to their metadata.')
|
|
rename_lib = rename.add_argument_group('Library Options')
|
|
rename_lib.add_argument('-o', '--origin', help="Origin Directory for Library (overrides config)", metavar="DIR", type=str, dest="originDir")
|
|
rename_lib.add_argument('-e', '--exclude', help="Exclude Directory from origin (can be used multiple times)", metavar="DIR", dest='excludeDirs', action='append')
|
|
rename_act = rename.add_argument_group('Action Options')
|
|
rename_act.add_argument('-g', '--go', help="Process renaming (default just shows what would be done", dest="act", action='store_true')
|
|
rename.set_defaults(act=False)
|
|
|
|
scan = subparsers.add_parser('scan', help='Scan Mode', description='Scan library for various different operational purposes.')
|
|
scan_lib = scan.add_argument_group('Library Options')
|
|
scan_lib.add_argument('-o', '--origin', help="Origin Directory for Library (overrides config)", metavar="DIR", type=str, dest="originDir")
|
|
scan_lib.add_argument('-t', '--target', help="Target Directory for Library (overrides config)", metavar="DIR", type=str, dest="targetDir")
|
|
scan_lib.add_argument('--format', help="Target directory library format", metavar="FORMAT", type=str, dest="targetFormat")
|
|
scan_lib.add_argument('-w', '--work', help="Working Directory for new processed files (overrides config)", metavar="DIR", type=str, dest="workDir")
|
|
scan_lib.add_argument('-e', '--exclude', help="Exclude Directory from origin (can be used multiple times)", metavar="DIR", dest='excludeDirs', action='append')
|
|
scan_subparsers = scan.add_subparsers(title='Scan Modes', dest='scanMode')
|
|
scan_untagged = scan_subparsers.add_parser('untagged', help='Find untagged media', description='Scans for untagged or insufficiently tagged media in the library.')
|
|
scan_new = scan_subparsers.add_parser('new', help='Find new unconverted media', description='Scans for new media that is not in the target library for conversion.')
|
|
|
|
sync = subparsers.add_parser('sync', help='Sync Mode', description='Moves media from working DIR into target DIR')
|
|
sync_lib = sync.add_argument_group('Library Options')
|
|
sync_lib.add_argument('-o', '--origin', help="Origin Directory for Library (overrides config)", metavar="DIR", type=str, dest="originDir")
|
|
sync_lib.add_argument('-t', '--target', help="Target Directory for Library (overrides config)", metavar="DIR", type=str, dest="targetDir")
|
|
sync_lib.add_argument('-w', '--work', help="Working Directory for new processed files (overrides config)", metavar="DIR", type=str, dest="workingDir")
|
|
sync_lib.add_argument('-e', '--exclude', help="Exclude Directory from origin (can be used multiple times)", metavar="DIR", dest='excludeDirs', action='append')
|
|
sync_act = sync.add_argument_group('Action Options')
|
|
sync_act.add_argument('-g', '--go', help="Move media (default just what would be done)", dest="act", action='store_true')
|
|
|
|
parser.set_defaults(verbose=0)
|
|
|
|
return parser.parse_args()
|
|
|
|
def load_config():
|
|
import configparser
|
|
config = configparser.ConfigParser()
|
|
config.read('musicman.ini')
|
|
|
|
try:
|
|
#print("Test1:", config.get('lossless', 'test'))
|
|
config.get('origin', 'path')
|
|
config.get('origin', 'format')
|
|
config.get('target', 'path')
|
|
config.get('target', 'format')
|
|
config.get('working', 'path')
|
|
except configparser.NoOptionError as err:
|
|
print("ERROR: Configuration of required settings are missing:", err)
|
|
sys.exit(1)
|
|
|
|
return config
|