{"repo": "asadahimeka/pixiv-viewer-app", "files": {"src/utils/translate.js": {"8d6cf02115f45294158d6b79f7211f63bd54cd9e": {"t": 1785674139.3124518, "n": 11248, "h": "b817b13d6aceb99d", "c": "import { Dialog } from 'vant'\nimport { i18n } from '@/i18n'\nimport { SILICON_CLOUD_API_KEY } from '@/consts'\nimport { loadScript } from '.'\n\nexport async function loadKISSTranslator(isAutoLoad = false) {\n if (!isAutoLoad && !localStorage.getItem('PXV_KISST_CFMED')) {\n const res = await Dialog.confirm({\n title: '加载 KISS Translator 脚本',\n message: '提示:如果已安装 KISS Translator 浏览器扩展或用户脚本则无需加载。可在偏好设置中打开自动加载 KISS Translator 脚本。',\n lockScroll: false,\n closeOnPopstate: true,\n cancelButtonText: '取消',\n confirmButtonText: '加载',\n }).catch(() => 'cancel')\n if (res != 'confirm') return\n localStorage.setItem('PXV_KISST_CFMED', '1')\n }\n if (document.querySelector('#kiss-translator')) {\n return\n }\n await loadScript('/kiss-translator/KISS-Translator.min.js')\n if (isAutoLoad) {\n setTimeout(() => {\n window._GM_menuCommands?.find(e => e.name == '开启翻译')?.callback()\n }, 1000)\n }\n}\n\n// export async function loadImtSdk(isAutoLoadImt = false) {\n// if (!isAutoLoadImt && !localStorage.getItem('PXV_IMT_SDK_CFMED')) {\n// const res = await Dialog.confirm({\n// title: '加载沉浸式翻译 SDK',\n// message: '提示:如果已安装沉浸式翻译浏览器扩展则无需加载沉浸式翻译 SDK。可在偏好设置中打开自动加载沉浸式翻译 SDK。',\n// lockScroll: false,\n// closeOnPopstate: true,\n// cancelButtonText: '取消',\n// confirmButtonText: '加载',\n// }).catch(() => 'cancel')\n// if (res != 'confirm') return\n// localStorage.setItem('PXV_IMT_SDK_CFMED', '1')\n// }\n// if (window.immersiveTranslateConfig) return\n// window.immersiveTranslateConfig = {\n// isAutoTranslate: isAutoLoadImt,\n// pageRule: {\n// selectors: [\n// '.novel_text',\n// '.artwork-meta .name-box .title',\n// '.artwork-meta .name-box .series',\n// '.artwork-meta .caption',\n// '.artwork .series-btns',\n// '.users .info .detail .content',\n// '.comments-popup .content',\n// '.live_detail .content .title',\n// '.live_detail .content .chat-item span:last-child',\n// ],\n// translationClasses: ['imt-res-text'],\n// },\n// }\n// await loadScript('https://download.immersivetranslate.com/immersive-translate-sdk-latest.js')\n// const style = document.createElement('style')\n// style.innerHTML = `\n// .imt-fb-more-buttons .btn-animate:first-child,\n// .imt-fb-more-buttons .btn-animate:last-child,\n// .btn-animate[title=\"关闭悬浮球\"],\n// .popup-container .popup-content > div.flex:first-child,\n// .popup-container .trial-pro-container,\n// .popup-container .text-sm.px-1.text-gray-2,\n// .popup-container .widgets-container.mt-5,\n// .popup-container footer,\n// .translation-service-container .custom-select-item:has(.custom-select-item-pro),\n// .translation-service-container select option[value=\"deepl\"],\n// .translation-service-container select option[value=\"openai\"],\n// .translation-service-container select option[value=\"gemini\"],\n// .translation-service-container select option[value=\"claude\"],\n// .translation-service-container select option[value=\"more\"] {\n// display: none !important;\n// }`\n// setTimeout(() => {\n// document.querySelector('#immersive-translate-popup')?.shadowRoot?.appendChild(style)\n// try {\n// const buildinConfig = JSON.parse(localStorage.buildinConfig).buildinConfig\n// buildinConfig.telemetry = false\n// // buildinConfig.translationService = 'bing'\n// buildinConfig.translationService = 'siliconcloud'\n// buildinConfig.translationServices.siliconcloud.APIKEY = SILICON_CLOUD_API_KEY\n// buildinConfig.translationServices.siliconcloud.assistantId = 'common'\n// buildinConfig.translationServices.siliconcloud.model = 'Qwen/Qwen2-7B-Instruct'\n// localStorage.buildinConfig = JSON.stringify({ buildinConfig })\n// const userConfig = JSON.parse(localStorage.userConfig).userConfig\n// userConfig.telemetry = false\n// // userConfig.translationService = 'bing'\n// userConfig.translationService = 'siliconcloud'\n// userConfig.translationServices = userConfig.translationServices || {}\n// userConfig.translationServices.siliconcloud = userConfig.translationServices.siliconcloud || {}\n// userConfig.translationServices.siliconcloud.APIKEY = SILICON_CLOUD_API_KEY\n// userConfig.translationServices.siliconcloud.assistantId = 'common'\n// userConfig.translationServices.siliconcloud.model = 'Qwen/Qwen2-7B-Instruct'\n// localStorage.userConfig = JSON.stringify({ userConfig })\n// } catch (err) {\n// console.log('err: ', err)\n// }\n// }, 800)\n// }\n\nexport function getNoTranslateWords(tags = []) {\n return new Promise(resolve => {\n Dialog.confirm({\n title: '填写不翻译的文本',\n message: `\n
选择或输入不翻译的单词,以英文逗号分隔,留空跳过
\n \n \n ${tags.map(e => `