fix: subtitle

This commit is contained in:
Gabe
2025-10-31 20:23:58 +08:00
parent f15cdb38d6
commit eca0a63273
2 changed files with 5 additions and 9 deletions

View File

@@ -1,5 +1,6 @@
import { logger } from "../libs/log.js";
import { truncateWords } from "../libs/utils.js";
import { apiTranslate } from "../apis/index.js";
/**
* @class BilingualSubtitleManager
@@ -8,7 +9,6 @@ import { truncateWords } from "../libs/utils.js";
export class BilingualSubtitleManager {
#videoEl;
#formattedSubtitles = [];
#translationService;
#captionWindowEl = null;
#paperEl = null;
#currentSubtitleIndex = -1;
@@ -20,14 +20,12 @@ export class BilingualSubtitleManager {
* @param {object} options
* @param {HTMLVideoElement} options.videoEl - 页面上的 video 元素。
* @param {Array<object>} options.formattedSubtitles - 已格式化好的字幕数组。
* @param {(text: string, toLang: string) => Promise<string>} options.translationService - 外部翻译函数。
* @param {object} options.setting - 配置对象,如目标翻译语言。
*/
constructor({ videoEl, formattedSubtitles, translationService, setting }) {
constructor({ videoEl, formattedSubtitles, setting }) {
this.#setting = setting;
this.#videoEl = videoEl;
this.#formattedSubtitles = formattedSubtitles;
this.#translationService = translationService;
this.onTimeUpdate = this.onTimeUpdate.bind(this);
this.onSeek = this.onSeek.bind(this);
@@ -309,7 +307,7 @@ export class BilingualSubtitleManager {
subtitle.isTranslating = true;
try {
const { fromLang, toLang, apiSetting } = this.#setting;
const { trText } = await this.#translationService({
const { trText } = await apiTranslate({
text: subtitle.text,
fromLang,
toLang,

View File

@@ -1,5 +1,5 @@
import { logger } from "../libs/log.js";
import { apiSubtitle, apiTranslate } from "../apis/index.js";
import { apiSubtitle } from "../apis/index.js";
import { BilingualSubtitleManager } from "./BilingualSubtitleManager.js";
import {
MSG_XHR_DATA_YOUTUBE,
@@ -171,8 +171,7 @@ class YouTubeCaptionProvider {
});
const toggleButton = document.createElement("button");
toggleButton.className =
"ytp-button kiss-subtitle-button";
toggleButton.className = "ytp-button kiss-subtitle-button";
toggleButton.title = APP_NAME;
Object.assign(toggleButton.style, {
color: "white",
@@ -509,7 +508,6 @@ class YouTubeCaptionProvider {
this.#managerInstance = new BilingualSubtitleManager({
videoEl,
formattedSubtitles: this.#subtitles,
translationService: apiTranslate,
setting: { ...this.#setting, fromLang: this.#fromLang },
});
this.#managerInstance.start();