From c630e123f731d2465d1fc4978ef3054bae0647ff Mon Sep 17 00:00:00 2001
From: Jerry Yan <792602257@qq.com>
Date: Wed, 17 Apr 2024 08:23:54 +0800
Subject: [PATCH] =?UTF-8?q?=E5=BC=B9=E5=B9=95=E6=94=AF=E6=8C=81=E9=80=8F?=
 =?UTF-8?q?=E6=98=8E=E5=BA=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 config.py                  | 5 ++++-
 danmaku_workflow.py        | 4 ++--
 danmaku_workflow_ffmpeg.py | 2 +-
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/config.py b/config.py
index 17cfc37..901c600 100644
--- a/config.py
+++ b/config.py
@@ -9,6 +9,8 @@ DANMAKU_USE_DANMU2ASS = False
 DANMAKU_USE_DANMAKUFACTORY = True
 # exec
 DANMAKU_EXEC = "DanmakuFactory"
+# opacity
+DANMAKU_OPACITY = 40
 # speed
 DANMAKU_SPEED = 12
 # font
@@ -74,13 +76,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']
diff --git a/danmaku_workflow.py b/danmaku_workflow.py
index e6c5ec8..62e71c1 100644
--- a/danmaku_workflow.py
+++ b/danmaku_workflow.py
@@ -15,7 +15,7 @@ from PyQt5.QtWidgets import QWidget, QLabel, QApplication, QFrame, QVBoxLayout,
     QSizePolicy, QMessageBox
 from danmaku_xml_helper import get_file_start, diff_danmaku_files, NoDanmakuException
 from config import load_config, \
-    DANMAKU_EXEC, DANMAKU_SPEED, DANMAKU_FONT_NAME, DANMAKU_FONT_SIZE, \
+    DANMAKU_EXEC, DANMAKU_SPEED, DANMAKU_FONT_NAME, DANMAKU_FONT_SIZE, DANMAKU_OPACITY, \
     VIDEO_CLIP_EACH_SEC, VIDEO_CLIP_OVERFLOW_SEC, VIDEO_RESOLUTION, VIDEO_OUTPUT_DIR, \
     FFMPEG_EXEC, HANDBRAKE_EXEC, HANDBRAKE_PRESET_FILE, HANDBRAKE_PRESET, HANDBRAKE_ENCOPT
 
@@ -418,7 +418,7 @@ def danmaku_to_subtitle(file: Union[os.PathLike[str], str], time_shift: float):
         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)
     ), **subprocess_args(True))
     process.wait()
diff --git a/danmaku_workflow_ffmpeg.py b/danmaku_workflow_ffmpeg.py
index cf8bd2c..36f8272 100644
--- a/danmaku_workflow_ffmpeg.py
+++ b/danmaku_workflow_ffmpeg.py
@@ -14,7 +14,7 @@ from PyQt5.QtWidgets import QWidget, QLabel, QApplication, QFrame, QVBoxLayout,
     QSizePolicy, QMessageBox
 from danmaku_xml_helper import get_file_start, diff_danmaku_files, NoDanmakuException
 from config import load_config, \
-    DANMAKU_EXEC, DANMAKU_SPEED, DANMAKU_FONT_NAME, DANMAKU_FONT_SIZE, \
+    DANMAKU_EXEC, DANMAKU_SPEED, DANMAKU_FONT_NAME, DANMAKU_FONT_SIZE, DANMAKU_OPACITY, \
     VIDEO_CLIP_EACH_SEC, VIDEO_CLIP_OVERFLOW_SEC, VIDEO_RESOLUTION, VIDEO_OUTPUT_DIR, \
     FFMPEG_EXEC, FFMPEG_USE_INTEL_GPU, FFMPEG_USE_NVIDIA_GPU