From ad5ae12d44b6a63342bc955bf6cd2fd33abf5abc Mon Sep 17 00:00:00 2001 From: jxxghp Date: Tue, 10 Jun 2025 19:56:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=88=AE=E5=89=8A=E5=BC=80?= =?UTF-8?q?=E5=85=B3=E8=AE=BE=E7=BD=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/locales/en-US.ts | 27 ++ src/locales/zh-CN.ts | 27 ++ src/locales/zh-TW.ts | 27 ++ src/views/setting/AccountSettingSystem.vue | 300 +++++++++++++++------ 4 files changed, 299 insertions(+), 82 deletions(-) diff --git a/src/locales/en-US.ts b/src/locales/en-US.ts index 7bf69a44..c28ba8f1 100644 --- a/src/locales/en-US.ts +++ b/src/locales/en-US.ts @@ -1112,6 +1112,33 @@ export default { moviePilotAutoUpdateHint: 'Automatically update MoviePilot to the latest release version when restarting', autoUpdateResource: 'Auto Update Resource', autoUpdateResourceHint: 'Automatically detect and update site resource package when restarting', + // Scraping Switch Settings + scrapingSwitchSettings: 'Scraping Switch Settings', + scrapingSwitchSettingsDesc: 'Control various media file scraping function switches', + movie: 'Movie', + tv: 'TV Show', + season: 'Season', + episode: 'Episode', + movieNfo: 'NFO', + moviePoster: 'Poster', + movieBackdrop: 'Backdrop', + movieLogo: 'Logo', + movieDisc: 'Disc', + movieBanner: 'Banner', + movieThumb: 'Thumb', + tvNfo: 'NFO', + tvPoster: 'Poster', + tvBackdrop: 'Backdrop', + tvBanner: 'Banner', + tvLogo: 'Logo', + tvThumb: 'Thumb', + seasonPoster: 'Poster', + seasonBanner: 'Banner', + seasonThumb: 'Thumb', + episodeNfo: 'NFO', + episodeThumb: 'Thumb', + scrapingSwitchSaveFailed: 'Scraping switch settings save failed: {message}', + scrapingSwitchSaveError: 'Scraping switch settings save failed', }, site: { siteSync: 'Site Synchronization', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index b6e5db11..d09b0c86 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -1102,6 +1102,33 @@ export default { moviePilotAutoUpdateHint: '重启时自动更新MoviePilot到最新发行版本', autoUpdateResource: '自动更新站点资源', autoUpdateResourceHint: '重启时自动检测和更新站点资源包', + // 刮削开关设置 + scrapingSwitchSettings: '刮削开关设置', + scrapingSwitchSettingsDesc: '控制各类媒体文件的刮削功能开关', + movie: '电影', + tv: '电视剧', + season: '季', + episode: '集', + movieNfo: 'NFO', + moviePoster: '海报', + movieBackdrop: '背景图', + movieLogo: 'Logo', + movieDisc: '光盘图', + movieBanner: '横幅图', + movieThumb: '缩略图', + tvNfo: 'NFO', + tvPoster: '海报', + tvBackdrop: '背景图', + tvBanner: '横幅图', + tvLogo: 'Logo', + tvThumb: '缩略图', + seasonPoster: '海报', + seasonBanner: '横幅图', + seasonThumb: '缩略图', + episodeNfo: 'NFO', + episodeThumb: '缩略图', + scrapingSwitchSaveFailed: '刮削开关设置保存失败:{message}', + scrapingSwitchSaveError: '刮削开关设置保存失败', }, site: { siteSync: '站点同步', diff --git a/src/locales/zh-TW.ts b/src/locales/zh-TW.ts index 6a0373f4..648c6f52 100644 --- a/src/locales/zh-TW.ts +++ b/src/locales/zh-TW.ts @@ -1104,6 +1104,33 @@ export default { moviePilotAutoUpdateHint: '重啟時自動更新MoviePilot到最新發行版本', autoUpdateResource: '自動更新站點資源', autoUpdateResourceHint: '重啟時自動檢測和更新站點資源包', + // 刮削開關設定 + scrapingSwitchSettings: '刮削開關設定', + scrapingSwitchSettingsDesc: '控制各類媒體檔案的刮削功能開關', + movie: '電影', + tv: '電視劇', + season: '季', + episode: '集', + movieNfo: 'NFO', + moviePoster: '海報', + movieBackdrop: '背景圖', + movieLogo: 'Logo', + movieDisc: '光碟圖', + movieBanner: '橫幅圖', + movieThumb: '縮略圖', + tvNfo: 'NFO', + tvPoster: '海報', + tvBackdrop: '背景圖', + tvBanner: '橫幅圖', + tvLogo: 'Logo', + tvThumb: '縮略圖', + seasonPoster: '海報', + seasonBanner: '橫幅圖', + seasonThumb: '縮略圖', + episodeNfo: 'NFO', + episodeThumb: '縮略圖', + scrapingSwitchSaveFailed: '刮削開關設定保存失敗:{message}', + scrapingSwitchSaveError: '刮削開關設定保存失敗', }, site: { siteSync: '站點同步', diff --git a/src/views/setting/AccountSettingSystem.vue b/src/views/setting/AccountSettingSystem.vue index be7fec21..68628ad3 100644 --- a/src/views/setting/AccountSettingSystem.vue +++ b/src/views/setting/AccountSettingSystem.vue @@ -71,6 +71,28 @@ const SystemSettings = ref({ }, }) +// 刮削开关设置 +const ScrapingSwitchs = ref({ + movie_nfo: true, // 电影NFO + movie_poster: true, // 电影海报 + movie_backdrop: true, // 电影背景图 + movie_logo: true, // 电影Logo + movie_disc: true, // 电影光盘图 + movie_banner: true, // 电影横幅图 + movie_thumb: true, // 电影缩略图 + tv_nfo: true, // 电视剧NFO + tv_poster: true, // 电视剧海报 + tv_backdrop: true, // 电视剧背景图 + tv_banner: true, // 电视剧横幅图 + tv_logo: true, // 电视剧Logo + tv_thumb: true, // 电视剧缩略图 + season_poster: true, // 季海报 + season_banner: true, // 季横幅图 + season_thumb: true, // 季缩略图 + episode_nfo: true, // 集NFO + episode_thumb: true, // 集缩略图 +}) + // 是否发送请求的总开关 const isRequest = ref(true) @@ -233,7 +255,11 @@ async function saveBasicSettings() { async function saveAdvancedSettings() { cleanEmptyFields(SystemSettings.value.Advanced, ['LOG_FILE_FORMAT']) - if (await saveSystemSetting(SystemSettings.value.Advanced)) { + // 同时保存高级设置和刮削开关设置 + const advancedResult = await saveSystemSetting(SystemSettings.value.Advanced) + const scrapingResult = await saveScrapingSwitchs() + + if (advancedResult && scrapingResult) { advancedDialog.value = false $toast.success(t('setting.system.advancedSaveSuccess')) } @@ -380,11 +406,41 @@ const moviePilotAutoUpdate = computed({ }, }) +// 加载刮削开关设置 +async function loadScrapingSwitchs() { + try { + const result: { [key: string]: any } = await api.get('system/setting/ScrapingSwitchs') + if (result.success && result.data?.value) { + ScrapingSwitchs.value = { ...ScrapingSwitchs.value, ...result.data.value } + } + } catch (error) { + console.log(error) + } +} + +// 保存刮削开关设置 +async function saveScrapingSwitchs() { + try { + const result: { [key: string]: any } = await api.post('system/setting/ScrapingSwitchs', ScrapingSwitchs.value) + if (result.success) { + return true + } else { + $toast.error(t('setting.system.scrapingSwitchSaveFailed', { message: result?.message })) + return false + } + } catch (error) { + console.log(error) + $toast.error(t('setting.system.scrapingSwitchSaveError')) + return false + } +} + // 加载数据 onMounted(() => { loadDownloaderSetting() loadMediaServerSetting() loadSystemSettings() + loadScrapingSwitchs() }) onActivated(async () => { @@ -655,11 +711,14 @@ onDeactivated(() => { :fullscreen="!display.mdAndUp.value" > - - + + {{ t('setting.system.advancedSettings') }} {{ t('setting.system.advancedSettingsDesc') }} + @@ -686,64 +745,42 @@ onDeactivated(() => { - + - + @@ -757,8 +794,6 @@ onDeactivated(() => { v-model="SystemSettings.Advanced.TMDB_API_DOMAIN" :label="t('setting.system.tmdbApiDomain')" :placeholder="t('setting.system.tmdbApiDomainPlaceholder')" - :hint="t('setting.system.tmdbApiDomainHint')" - persistent-hint :items="['api.themoviedb.org', 'api.tmdb.org']" :rules="[(v: string) => !!v || t('setting.system.tmdbApiDomainRequired')]" prepend-inner-icon="mdi-api" @@ -769,8 +804,6 @@ onDeactivated(() => { v-model="SystemSettings.Advanced.TMDB_IMAGE_DOMAIN" :label="t('setting.system.tmdbImageDomain')" :placeholder="t('setting.system.tmdbImageDomainPlaceholder')" - :hint="t('setting.system.tmdbImageDomainHint')" - persistent-hint :items="['image.tmdb.org', 'static-mdb.v.geilijiasu.com']" :rules="[(v: string) => !!v || t('setting.system.tmdbImageDomainRequired')]" prepend-inner-icon="mdi-image" @@ -781,8 +814,6 @@ onDeactivated(() => { v-model="SystemSettings.Advanced.TMDB_LOCALE" :label="t('setting.system.tmdbLocale')" :placeholder="t('setting.system.tmdbLocalePlaceholder')" - :hint="t('setting.system.tmdbLocaleHint')" - persistent-hint :items="tmdbLanguageItems" prepend-inner-icon="mdi-translate" /> @@ -791,8 +822,6 @@ onDeactivated(() => { { - + + + + + + + + + + + + + + + + {{ t('setting.system.movie') }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ t('setting.system.tv') }} + + + + + + + + + + + + + + + + + + + + + + + + + + {{ t('setting.system.season') }} + + + + + + + + + + + + + + + + + {{ t('setting.system.episode') }} + + + + + + + + + + + @@ -902,43 +1035,46 @@ onDeactivated(() => { - - - - {{ t('setting.system.securityImageDomains') }} - {{ t('setting.system.securityImageDomainsHint') }} - - -
- - {{ domain }} - - - {{ t('setting.system.noSecurityImageDomains') }} - -
-
- - - -
-
-
+ + + + + + +
+ + {{ domain }} + + + {{ t('setting.system.noSecurityImageDomains') }} + +
+
+ + + +
+
+
+