import yt_dlp import logging import argparse parser = argparse.ArgumentParser( description="A video-to-sheet music converter that uses opencv-python to extract significant frame changes.", formatter_class=argparse.ArgumentDefaultsHelpFormatter, ) parser.add_argument("source", type=str, help="source of the file or a youtube link") parser.add_argument( "destination", type=str, help="destination of the output in pdf form" ) parser.add_argument("-v", "--verbose", action="store_true", help="debug mode") parser.add_argument( "-a", "--alt-temp", action="store_false", help="use var dest to store temporary files" ) parser.add_argument("-i","--ignore-temp", action="store_true", help="[requires -a] do not delete alt tmp") parser.add_argument( "-f", "--img-format", type=str, default="png", help="use output custom img format" ) parser.add_argument("-p","--paper-size", type=str, default="A4", help="set paper size") args = parser.parse_args() src = args.source dest = args.destination verbose = args.verbose alt_temp = args.alt_temp ignore_temp = args.ignore_temp img_format = args.img_format paper_size = args.paper_size if verbose: logging.basicConfig(level=logging.DEBUG, format="[%(levelname)s] - %(message)s") else: logging.basicConfig(level=logging.INFO, format="[%(levelname)s] - %(message)s") log = logging.getLogger() class Download: def __init__(self): pass def video(self, src, dest): ydl_opts = { "outtmpl": f"{dest}/%(title)s.%(ext)s", "quiet": True, } try: with yt_dlp.YoutubeDL(ydl_opts) as ydl: info_dict = ydl.extract_info(src, download=False) video_title = info_dict.get('title', 'Unknown Title') log.info(f"Downloading: {video_title}") ydl.download([src]) log.info("Download Successful") except Exception as e: log.error(f"An error occurred: {e}") exit() def playlist(self, src, dest): ydl_opts = { "outtmpl": f"{dest}/%(title)s.%(ext)s", "quiet": True, } class Misc: def __init__(self): pass def create_blank_image(self): pass