diff --git a/src/api/types.ts b/src/api/types.ts index 477f7300..39db6fec 100644 --- a/src/api/types.ts +++ b/src/api/types.ts @@ -481,7 +481,7 @@ export interface NotExistMediaInfo { episodes: number[] // 总集数 - total_episodes: number + total_episode: number // 开始集 start_episode: number @@ -635,7 +635,7 @@ export interface MetaInfo { end_season?: number // 总集数 - total_episodes: number + total_episode: number // 识别的开始集 begin_episode?: number @@ -848,3 +848,50 @@ export interface Setting { // Plex Token PLEX_TOKEN: string } + +// 自定义订阅 +export interface Rss { + id?: number + // 名称 + name?: string + // RSS地址 + url?: string + // 类型 + type?: string + // 标题 + title?: string + // 年份 + year?: string + // TMDBID + tmdbid?: number + // 季号 + season?: number + // 海报 + poster?: string + // 背景图 + backdrop?: string + // 评分 + vote?: number + // 简介 + description?: string + // 总集数 + total_episode?: number + // 包含 + include?: string + // 排除 + exclude?: string + // 洗版 + best_version?: number + // 是否使用代理服务器 + proxy?: number + // 保存路径 + save_path?: string + // 已处理数量 + processed?: number + // 附加信息 + note?: string + // 最后更新时间 + last_update?: string + // 状态 0-停用,1-启用 + state?: number +} diff --git a/src/components/cards/MediaCard.vue b/src/components/cards/MediaCard.vue index 00e2e630..15598196 100644 --- a/src/components/cards/MediaCard.vue +++ b/src/components/cards/MediaCard.vue @@ -261,7 +261,7 @@ async function checkSeasonsNotExists() { let state = 0 if (item.episodes.length === 0) state = 2 - else if (item.episodes.length < item.total_episodes) + else if (item.episodes.length < item.total_episode) state = 1 seasonsNotExisted.value[item.season] = state diff --git a/src/components/cards/RssCard.vue b/src/components/cards/RssCard.vue new file mode 100644 index 00000000..c6e0ff13 --- /dev/null +++ b/src/components/cards/RssCard.vue @@ -0,0 +1,440 @@ + + + diff --git a/src/components/cards/SubscribeCard.vue b/src/components/cards/SubscribeCard.vue index 1a51949d..d015a766 100644 --- a/src/components/cards/SubscribeCard.vue +++ b/src/components/cards/SubscribeCard.vue @@ -11,12 +11,12 @@ const props = defineProps({ media: Object as PropType, }) +// 定义触发的自定义事件 +const emit = defineEmits(['remove', 'save']) + // 提示框 const $toast = useToast() -// 是否显示卡片 -const cardState = ref(true) - // 图片是否加载完成 const imageLoaded = ref(false) @@ -112,8 +112,10 @@ async function removeSubscribe() { `subscribe/${props.media?.id}`, ) - if (result.success) - cardState.value = false + if (result.success) { + // 通知父组件刷新 + emit('remove') + } } catch (e) { console.log(e) @@ -143,10 +145,12 @@ async function updateSubscribeInfo() { const result: { [key: string]: any } = await api.put('subscribe', subscribeForm) // 提示 - if (result.success) + if (result.success) { $toast.success(`${props.media?.name} 更新成功!`) - else - $toast.error(`${props.media?.name} 更新失败:${result.message}!`) + // 通知父组件刷新 + emit('remove') + } + else { $toast.error(`${props.media?.name} 更新失败:${result.message}!`) } } catch (e) { console.log(e) @@ -220,7 +224,6 @@ const dropdownItems = ref([ diff --git a/src/views/subscribe/RssListView.vue b/src/views/subscribe/RssListView.vue new file mode 100644 index 00000000..0009baff --- /dev/null +++ b/src/views/subscribe/RssListView.vue @@ -0,0 +1,320 @@ + + + + + diff --git a/src/views/subscribe/SubscribeListView.vue b/src/views/subscribe/SubscribeListView.vue index 083fe3b6..cbfd763d 100644 --- a/src/views/subscribe/SubscribeListView.vue +++ b/src/views/subscribe/SubscribeListView.vue @@ -70,6 +70,8 @@ const filteredDataList = computed(() => { v-for="data in filteredDataList" :key="data.id" :media="data" + @remove="fetchData" + @save="fetchData" />