Files
kiss-translator/src/subtitle/subtitle.js

42 lines
1.3 KiB
JavaScript
Raw Normal View History

2025-10-07 16:35:00 +08:00
import { YouTubeInitializer } from "./YouTubeCaptionProvider.js";
import { isMatch } from "../libs/utils.js";
import { DEFAULT_API_SETTING } from "../config/api.js";
import { DEFAULT_SUBTITLE_SETTING } from "../config/setting.js";
import { logger } from "../libs/log.js";
2025-10-28 00:07:44 +08:00
import { injectJs, INJECTOR } from "../injectors/index.js";
2025-10-07 16:35:00 +08:00
const providers = [
2025-10-12 11:45:31 +08:00
{ pattern: "https://www.youtube.com", start: YouTubeInitializer },
2025-10-07 16:35:00 +08:00
];
2025-10-28 00:07:44 +08:00
export function runSubtitle({ href, setting }) {
2025-10-07 16:35:00 +08:00
try {
2025-10-09 02:15:58 +08:00
const subtitleSetting = setting.subtitleSetting || DEFAULT_SUBTITLE_SETTING;
if (!subtitleSetting.enabled) {
return;
}
2025-10-07 16:35:00 +08:00
const provider = providers.find((item) => isMatch(href, item.pattern));
if (provider) {
2025-10-28 00:07:44 +08:00
const id = "kiss-translator-inject-subtitle-js";
injectJs(INJECTOR.subtitle, id);
2025-10-07 16:35:00 +08:00
const apiSetting =
setting.transApis.find(
(api) => api.apiSlug === subtitleSetting.apiSlug
) || DEFAULT_API_SETTING;
const segApiSetting = setting.transApis.find(
(api) => api.apiSlug === subtitleSetting.segSlug
);
2025-10-07 16:35:00 +08:00
provider.start({
2025-10-09 02:15:58 +08:00
...subtitleSetting,
2025-10-07 16:35:00 +08:00
apiSetting,
segApiSetting,
2025-10-12 01:41:53 +08:00
uiLang: setting.uiLang,
2025-10-07 16:35:00 +08:00
});
}
} catch (err) {
logger.error("start subtitle provider", err);
}
}