Package: screenshotgenerator
screenshotgeneratorThis project aims to automate the selection of video screenshots. It employsffmpegto generate a pool of screenshots (alternatively, you may supply the screenshots yourself) then calls on twoautogluonmachine learning models to score the screenshots in order to select the best of them. The first model attempts to determine whether a screenshot is focused while the second model attempts to determine whether the screenshot is a portrait (a close-up of one or more people). The focused model's score makes up 75% of the total score while the portrait model's score makes up 25% of the total score.DependenciesThe following must be installed on your system:ffmpegMediaInfoMicrosoft Visual C++ Redistributable(if you're on Windows)CUDAautogluonuses the CPU version of PyTorch, by default. If you have a CUDA-enabled GPU, installing the CUDA version of PyTorch may increase prediction speed:pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116UsageCLIscreenshotgeneratorGenerates a pool of screenshots then selects the best N screenshots.Usage: screenshotgenerator [OPTIONS]

Options:
  --end-time [%H:%M:%S]           The time at which to stop taking
                                  screenshots. Defaults to 95% of the video
                                  duration, to exclude credits.
  --ffmpeg-path TEXT              The path to ffmpeg. Defaults to 'ffmpeg', 
                                  which requires ffmpeg to be in your path.
  --models-directory TEXT         The path to the directory containing the
                                  autogluon models. If the directory doesn't
                                  exist, the pretrained models will be
                                  downloaded to this location. Defaults to a 
                                  subdirectory in the user data directory.
  --pool-directory TEXT           The directory in which to store the
                                  screenshot pool. Defaults to the temporary 
                                  directory.
  --pool-report-path TEXT         A JSON file detailing the screenshot pool,
                                  sorted by descending preference.
  --pool-size INTEGER             The size of the pool from which to select
                                  screenshots.  [default: 64]
  --portrait-preference [mixed|noportrait|portrait]
                                  Preference regarding portrait screenshots.
                                  [default: portrait]
  --screenshot-count INTEGER      The number of screenshots to select.
                                  [default: 4]
  --screenshot-directory TEXT     The directory into which to copy the
                                  selected screenshots.  [required]
  --silent                        Suppress ffmpeg and autogluon output.
  --start-time [%H:%M:%S]         The time at which to start taking
                                  screenshots.  [default: 00:00:00]
  --video-path TEXT               The path to the video for which to generate
                                  screenshots.  [required]
  --help                          Show this message and exit.Examplescreenshotgenerator --screenshot-directory "B:\Screenshots" --video-path "Z:\Encodes\A Great Movie (2023).mkv --portrait-preference mixedscreenshotselectorSelects the best N screenshots from an existing pool of screenshots.Usage: screenshotselector [OPTIONS]

Options:
  --models-directory TEXT         The path to the directory containing the
                                  autogluon models. If the directory doesn't
                                  exist, the pretrained models will be
                                  downloaded to this location. Defaults to a 
                                  subdirectory in the user data directory.
  --pool-directory TEXT           The directory containing the existing pool
                                  of screenshots.  [required]
  --pool-file-filter TEXT         A "starts with" filter for files in the pool
                                  directory. Defaults to operating on all
                                  files in the pool directory.
  --pool-report-path TEXT         A JSON file detailing the screenshot pool,
                                  sorted by descending preference.
  --portrait-preference [mixed|noportrait|portrait]
                                  Preference regarding portrait screenshots.
                                  [default: portrait]
  --screenshot-count INTEGER      The number of screenshots to select.
                                  [default: 4]
  --screenshot-directory TEXT     The directory into which to copy the
                                  selected screenshots.  [required]
  --silent                        Suppress autogluon output.
  --help                          Show this message and exit.Examplescreenshotselector --pool-directory "B:\Pool" --screenshot-directory "B:\Screenshots" --portrait-preference mixedLibrarygeneratefunctionGenerates a pool of screenshots then selects the best N screenshots.Parametersscreenshot_directory: strThe directory into which to copy the selected screenshots.video_path: strThe path to the video for which to generate screenshots.end_time: datetimeThe time at which to stop taking screenshots. Defaults to 95% of the video duration, to exclude credits.ffmpeg_path: strThe path toffmpeg. Defaults to 'ffmpeg', which requiresffmpegto be in your path.models_directory: strThe path to the directory containing the autogluon models. Defaults to a subdirectory in the user data directory.If the directory doesn't exist, the pretrained models will be downloaded to this location.pool_directory: strThe directory in which to store the screenshot pool. Defaults to the temporary directory.pool_size: intThe size of the pool from which to select screenshots. Defaults to 64.portrait_preference: PortraitPreferencePreference regarding portrait screenshots. Defaults toPortraitPreference.PORTRAIT.screenshot_count: intThe number of screenshots to select. Defaults to 4.silent: boolTrue to suppressffmpegandautogluonoutput. Defaults to false.start_time: datetimeThe time at which to start taking screenshots. Defaults to 00:00:00.Returnslist[Screenshot]The scored screenshot pool, sorted by descending preference.Exampleimport screenshotgenerator

screenshots = screenshotgenerator.generate(
    screenshot_directory=r"B:\Screenshots",
    video_path=r"Z:\Encodes\A Great Movie (2023).mkv",
    portrait_preference = screenshotgenerator.PortraitPreference.MIXED)selectfunctionSelects the best N screenshots from an existing pool of screenshots.Parameterspool_directory: strThe directory containing an existing pool of screenshots.screenshot_directory: strThe directory into which to copy the selected screenshots.models_directory: strThe path to the directory containing the autogluon models. Defaults to a subdirectory in the user data directory.If the directory doesn't exist, the pretrained models will be downloaded to this location.pool_file_filter: strA "starts with" filter for files in the pool directory. Defaults to operating on all files in the pool directory.portrait_preference: PortraitPreferencePreference regarding portrait screenshots. Defaults toPortraitPreference.PORTRAIT.screenshot_count: intThe number of screenshots to select. Defaults to 4.silent: boolTrue to suppressautogluonoutput. Defaults to false.Returnslist[Screenshot]The scored screenshot pool, sorted by descending preference.Exampleimport screenshotgenerator

screenshots = screenshotgenerator.select(
    pool_directory=r"B:\Pool",
    screenshot_directory=r"B:\Screenshots",
    portrait_preference = screenshotgenerator.PortraitPreference.MIXED)PortraitPreferenceenumMembersMIXEDNO_PORTRAITPORTRAITScreenshotclassAttributesfocused_score: floatpath: strportrait_score: float