diff --git a/.gitignore b/.gitignore index 294b402..19a5799 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,6 @@ __pycache__ venv build/ dist/ -access_token \ No newline at end of file +access_token +winsw.* +*.json \ No newline at end of file diff --git a/config.py b/config.py index 696e3c6..c513791 100644 --- a/config.py +++ b/config.py @@ -17,6 +17,8 @@ DANMAKU_FONT_NAME = "Sarasa Term SC" DANMAKU_FONT_SIZE = 40 # resolution VIDEO_RESOLUTION = "1280x720" +# opacity +DANMAKU_OPACITY = 100 # [ffmpeg] # exec FFMPEG_EXEC = "ffmpeg" @@ -68,13 +70,14 @@ def load_config(): if config.has_section("danmaku"): section = config['danmaku'] global DANMAKU_EXEC, DANMAKU_SPEED, DANMAKU_FONT_NAME, VIDEO_RESOLUTION, DANMAKU_FONT_SIZE, \ - DANMAKU_USE_DANMU2ASS, DANMAKU_USE_DANMAKUFACTORY + DANMAKU_USE_DANMU2ASS, DANMAKU_USE_DANMAKUFACTORY, DANMAKU_OPACITY DANMAKU_USE_DANMU2ASS = section.getboolean('use_danmu2ass', DANMAKU_USE_DANMU2ASS) DANMAKU_USE_DANMAKUFACTORY = section.getboolean('use_danmakufactory', DANMAKU_USE_DANMAKUFACTORY) DANMAKU_EXEC = section.get('exec', DANMAKU_EXEC) DANMAKU_SPEED = section.getfloat('speed', DANMAKU_SPEED) DANMAKU_FONT_NAME = section.get('font', DANMAKU_FONT_NAME) DANMAKU_FONT_SIZE = section.getint('font_size', DANMAKU_FONT_SIZE) + DANMAKU_OPACITY = section.getint('opacity', DANMAKU_OPACITY) VIDEO_RESOLUTION = section.get('resolution', VIDEO_RESOLUTION) if config.has_section("video"): section = config['video'] @@ -118,6 +121,7 @@ def get_config(): 'speed': DANMAKU_SPEED, 'font': DANMAKU_FONT_NAME, 'font_size': DANMAKU_FONT_SIZE, + 'opacity': DANMAKU_OPACITY, 'resolution': VIDEO_RESOLUTION, }, 'video': { diff --git a/templates/index.html b/templates/index.html index bf2c5ce..760d7fe 100644 --- a/templates/index.html +++ b/templates/index.html @@ -146,6 +146,10 @@ 字体大小 {{ config.danmaku.font_size }} + + 不透明度 + {{ config.danmaku.opacity }}% + 视频分辨率 {{ config.danmaku.resolution }} @@ -310,6 +314,7 @@ speed: 0, font: "", font_size: 0, + font_size: 100, resolution: "", }, video: { diff --git a/workflow/danmaku.py b/workflow/danmaku.py index 6f5e8b8..8e560a2 100644 --- a/workflow/danmaku.py +++ b/workflow/danmaku.py @@ -8,6 +8,7 @@ from typing import Union from bs4 import BeautifulSoup from config import DANMAKU_EXEC, VIDEO_RESOLUTION, DANMAKU_SPEED, DANMAKU_FONT_NAME, DANMAKU_FONT_SIZE, \ + DANMAKU_OPACITY, \ DANMAKU_USE_DANMU2ASS, DANMAKU_USE_DANMAKUFACTORY from exception.danmaku import NoDanmakuException, DanmakuFormatErrorException from util.file import check_file_exist @@ -50,7 +51,7 @@ def danmaku_to_subtitle_use_danmaku_factory(file: Union[os.PathLike[str], str], DANMAKU_EXEC, "--ignore-warnings", "-r", str(VIDEO_RESOLUTION), "-s", str(DANMAKU_SPEED), "-f", "5", "-S", str(DANMAKU_FONT_SIZE), "-N", str(DANMAKU_FONT_NAME), "--showmsgbox", "FALSE", - "-O", "255", "-L", "1", "-D", "0", + "-O", "{:.0f}".format(DANMAKU_OPACITY*255/100), "-L", "1", "-D", "0", "-o", "ass", new_subtitle_name, "-i", file, "-t", str(time_shift) )) @@ -58,7 +59,7 @@ def danmaku_to_subtitle_use_danmaku_factory(file: Union[os.PathLike[str], str], def danmaku_to_subtitle_use_danmu2ass(file: Union[os.PathLike[str], str], time_shift: float, new_subtitle_name: str): (_w, _h) = VIDEO_RESOLUTION.split("x") return subprocess.Popen(( - DANMAKU_EXEC, "--force", "-a", "1", "-d", str(DANMAKU_SPEED), "--font", str(DANMAKU_FONT_NAME), + DANMAKU_EXEC, "--force", "-a", "{:.1f}".format(DANMAKU_OPACITY/100.0), "-d", str(DANMAKU_SPEED), "--font", str(DANMAKU_FONT_NAME), "--font-size", str(DANMAKU_FONT_SIZE), "--lane-size", str(DANMAKU_FONT_SIZE), "--width", _w, "--height", _h, "-o", new_subtitle_name, "-p", "1", "--time-offset", str(time_shift), "--width-ratio", "1", file ))