2025-10-07 16:35:00 +08:00
|
|
|
import { YouTubeInitializer } from "./YouTubeCaptionProvider.js";
|
|
|
|
|
import { browser } from "../libs/browser.js";
|
|
|
|
|
import { isMatch } from "../libs/utils.js";
|
|
|
|
|
import { DEFAULT_API_SETTING } from "../config/api.js";
|
|
|
|
|
import { DEFAULT_SUBTITLE_SETTING } from "../config/setting.js";
|
|
|
|
|
import { injectExternalJs } from "../libs/injector.js";
|
|
|
|
|
import { logger } from "../libs/log.js";
|
|
|
|
|
|
|
|
|
|
const providers = [
|
2025-10-12 02:57:45 +08:00
|
|
|
{ pattern: "https://www.youtube.com/", start: YouTubeInitializer },
|
2025-10-07 16:35:00 +08:00
|
|
|
];
|
|
|
|
|
|
2025-10-09 23:55:06 +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) {
|
|
|
|
|
const id = "kiss-translator-injector";
|
|
|
|
|
const src = browser.runtime.getURL("injector.js");
|
|
|
|
|
injectExternalJs(src, id);
|
|
|
|
|
|
|
|
|
|
const apiSetting =
|
2025-10-09 23:55:06 +08:00
|
|
|
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,
|
2025-10-09 23:55:06 +08:00
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|