|
1 | 1 | import configparser |
| 2 | +import sys |
2 | 3 | from pathlib import Path |
3 | 4 |
|
4 | 5 | config_parser = configparser.ConfigParser() |
5 | | -config_parser.read(f'{Path(__file__).parent.parent.resolve()}\\config.ini') |
6 | 6 |
|
7 | | -def get_config(): |
| 7 | +if getattr(sys, 'frozen', False): |
| 8 | + application_path = Path(sys.executable).parent.resolve() |
| 9 | +elif __file__: |
| 10 | + application_path = Path(__file__).parent.parent.resolve() |
| 11 | + |
| 12 | +config_path = Path.joinpath(application_path, 'config.ini') |
| 13 | +print(f'INFO: Looking for config file in directory "{config_path}"') |
| 14 | +config_parser.read(config_path) |
| 15 | + |
| 16 | + |
| 17 | +def try_config_get(section, key, fallback): |
| 18 | + fallback_type = type(fallback) |
8 | 19 | try: |
9 | | - return { |
10 | | - "FileFilter": config_parser.get('AUDIOPARSER', 'FileFilter'), |
11 | | - "ExportFormat": config_parser.get('AUDIOPARSER', 'ExportFormat'), |
12 | | - "ConvertedFilesDirName": config_parser.get('AUDIOPARSER', 'ConvertedFilesDirName'), |
13 | | - "RemoveConvertedFiles": config_parser.getboolean('AUDIOPARSER', 'RemoveConvertedFiles'), |
14 | | - "MirrorFileStructure": config_parser.getboolean('AUDIOPARSER', 'MirrorFileStructure'), |
15 | | - "TitleSeparator": config_parser.get('AUDIOPARSER/FILENAMEMODIFICATIONS', 'TitleSeparator'), |
16 | | - "CustomRegexReplacement": config_parser.get('AUDIOPARSER/FILENAMEMODIFICATIONS', 'CustomRegexReplacement'), |
17 | | - "RecreateFileNameFromMetadata": config_parser.getboolean('AUDIOPARSER/FILENAMEMODIFICATIONS', 'RecreateFileNameFromMetadata'), |
18 | | - } |
19 | | - except ValueError as e: |
20 | | - print("ERROR: cannot parse config file values, the following error occured: ") |
21 | | - print(e) |
22 | | - return {} |
| 20 | + if fallback_type is int: |
| 21 | + return config_parser.getint(section, key) |
| 22 | + elif fallback_type is bool: |
| 23 | + return config_parser.getboolean(section, key) |
| 24 | + elif fallback_type is float: |
| 25 | + return config_parser.getfloat(section, key) |
| 26 | + else: |
| 27 | + return config_parser.get(section, key) |
| 28 | + except Exception: |
| 29 | + print( |
| 30 | + f"ERROR: could not parse value of {section}/{key}, returning fallback value") |
| 31 | + return fallback |
| 32 | + |
| 33 | + |
| 34 | +def get_config(): |
| 35 | + return { |
| 36 | + "FileFilter": try_config_get('AUDIOPARSER', 'FileFilter', fallback='flac|m4a'), |
| 37 | + "ExportFormat": try_config_get('AUDIOPARSER', 'ExportFormat', fallback='wav'), |
| 38 | + "ConvertedFilesDirName": try_config_get('AUDIOPARSER', 'ConvertedFilesDirName', fallback='converted'), |
| 39 | + "RemoveConvertedFiles": try_config_get('AUDIOPARSER', 'RemoveConvertedFiles', fallback=False), |
| 40 | + "MirrorFileStructure": try_config_get('AUDIOPARSER', 'MirrorFileStructure', fallback=True), |
| 41 | + "TitleSeparator": try_config_get('AUDIOPARSER/FILENAMEMODIFICATIONS', 'TitleSeparator', fallback='-'), |
| 42 | + "CustomRegexReplacement": try_config_get('AUDIOPARSER/FILENAMEMODIFICATIONS', 'CustomRegexReplacement', fallback=''), |
| 43 | + "RecreateFileNameFromMetadata": try_config_get('AUDIOPARSER/FILENAMEMODIFICATIONS', 'RecreateFileNameFromMetadata', fallback=True), |
| 44 | + } |
| 45 | + |
23 | 46 |
|
24 | 47 | config = get_config() |
0 commit comments