mirror of
https://github.com/YaoFANGUK/video-subtitle-remover.git
synced 2026-05-13 23:07:34 +08:00
新增视频场景检测
This commit is contained in:
61
backend/scenedetect/__main__.py
Executable file
61
backend/scenedetect/__main__.py
Executable file
@@ -0,0 +1,61 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# PySceneDetect: Python-Based Video Scene Detector
|
||||
# -------------------------------------------------------------------
|
||||
# [ Site: https://scenedetect.com ]
|
||||
# [ Docs: https://scenedetect.com/docs/ ]
|
||||
# [ Github: https://github.com/Breakthrough/PySceneDetect/ ]
|
||||
#
|
||||
# Copyright (C) 2014-2023 Brandon Castellano <http://www.bcastell.com>.
|
||||
# PySceneDetect is licensed under the BSD 3-Clause License; see the
|
||||
# included LICENSE file, or visit one of the above pages for details.
|
||||
#
|
||||
"""Entry point for PySceneDetect's command-line interface."""
|
||||
|
||||
from logging import getLogger
|
||||
import sys
|
||||
|
||||
from backend.scenedetect._cli import scenedetect
|
||||
from backend.scenedetect._cli.context import CliContext
|
||||
from backend.scenedetect._cli.controller import run_scenedetect
|
||||
|
||||
from backend.scenedetect.platform import logging_redirect_tqdm, FakeTqdmLoggingRedirect
|
||||
|
||||
|
||||
def main():
|
||||
"""PySceneDetect command-line interface (CLI) entry point."""
|
||||
cli_ctx = CliContext()
|
||||
try:
|
||||
# Process command line arguments and subcommands to initialize the context.
|
||||
scenedetect.main(obj=cli_ctx) # Parse CLI arguments with registered callbacks.
|
||||
except SystemExit as exit:
|
||||
help_command = any(arg in sys.argv for arg in ['-h', '--help'])
|
||||
if help_command or exit.code != 0:
|
||||
raise
|
||||
|
||||
# If we get here, processing the command line and loading the context worked. Let's run
|
||||
# the controller if we didn't process any help requests.
|
||||
logger = getLogger('pyscenedetect')
|
||||
# Ensure log messages don't conflict with any progress bars. If we're in quiet mode, where
|
||||
# no progress bars get created, we instead create a fake context manager. This is done here
|
||||
# to avoid needing a separate context manager at each point a progress bar is created.
|
||||
log_redirect = FakeTqdmLoggingRedirect() if cli_ctx.quiet_mode else logging_redirect_tqdm(
|
||||
loggers=[logger])
|
||||
|
||||
with log_redirect:
|
||||
try:
|
||||
run_scenedetect(cli_ctx)
|
||||
except KeyboardInterrupt:
|
||||
logger.info('Stopped.')
|
||||
if __debug__:
|
||||
raise
|
||||
except BaseException as ex:
|
||||
if __debug__:
|
||||
raise
|
||||
else:
|
||||
logger.critical('Unhandled exception:', exc_info=ex)
|
||||
raise SystemExit(1)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user