mirror of
				https://github.com/KevinMidboe/spotify-downloader.git
				synced 2025-10-29 18:00:15 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import logging
 | 
						|
import coloredlogs
 | 
						|
 | 
						|
import sys
 | 
						|
 | 
						|
from spotdl.command_line.core import Spotdl
 | 
						|
from spotdl.command_line.arguments import get_arguments
 | 
						|
from spotdl.command_line.exceptions import ArgumentError
 | 
						|
 | 
						|
# hardcode loglevel for dependencies so that they do not spew generic
 | 
						|
# log messages along with spotdl.
 | 
						|
for module in ("urllib3", "spotipy", "pytube"):
 | 
						|
    logging.getLogger(module).setLevel(logging.CRITICAL)
 | 
						|
 | 
						|
coloredlogs.DEFAULT_FIELD_STYLES = {
 | 
						|
    "levelname": {"bold": True, "color": "yellow"},
 | 
						|
    "name": {"color": "blue"},
 | 
						|
    "lineno": {"color": "magenta"},
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
def set_logger(level):
 | 
						|
    if level == logging.DEBUG:
 | 
						|
        fmt = "%(levelname)s:%(name)s:%(lineno)d:\n%(message)s\n"
 | 
						|
    else:
 | 
						|
        fmt = "%(levelname)s: %(message)s"
 | 
						|
    logging.basicConfig(format=fmt, level=level)
 | 
						|
    logger = logging.getLogger(name=__name__)
 | 
						|
    coloredlogs.install(level=level, fmt=fmt, logger=logger)
 | 
						|
    return logger
 | 
						|
 | 
						|
 | 
						|
def main():
 | 
						|
    try:
 | 
						|
        argument_handler = get_arguments()
 | 
						|
    except ArgumentError as e:
 | 
						|
        logger = set_logger(logging.INFO)
 | 
						|
        logger.info(e.args[0])
 | 
						|
        sys.exit(5)
 | 
						|
 | 
						|
    logging_level = argument_handler.get_logging_level()
 | 
						|
    logger = set_logger(logging_level)
 | 
						|
    try:
 | 
						|
        spotdl = Spotdl(argument_handler)
 | 
						|
    except ArgumentError as e:
 | 
						|
        argument_handler.parser.error(e.args[0])
 | 
						|
    try:
 | 
						|
        spotdl.match_arguments()
 | 
						|
    except KeyboardInterrupt as e:
 | 
						|
        print("", file=sys.stderr)
 | 
						|
        logger.exception(e)
 | 
						|
        sys.exit(2)
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    main()
 | 
						|
 |