From ce8baff938fe643da08f3b2218f66f88a3bd9633 Mon Sep 17 00:00:00 2001 From: EstrellaXD Date: Tue, 29 Aug 2023 21:27:18 +0800 Subject: [PATCH] fix: rss api bug. fix ui. --- backend/src/module/api/rss.py | 1 + backend/src/module/parser/title_parser.py | 2 +- webui/src/api/download.ts | 45 ++++++++++++++--------- webui/src/components/ab-add-bangumi.vue | 28 +++++++------- 4 files changed, 44 insertions(+), 32 deletions(-) diff --git a/backend/src/module/api/rss.py b/backend/src/module/api/rss.py index 1cccfe3b..8f61ee24 100644 --- a/backend/src/module/api/rss.py +++ b/backend/src/module/api/rss.py @@ -138,6 +138,7 @@ async def download_collection(data: Bangumi, current_user=Depends(get_current_us resp = collector.collect_season(data, data.rss_link[0]) return u_response(resp) + @router.post("/subscribe", response_model=APIResponse) async def subscribe(data: Bangumi, current_user=Depends(get_current_user)): if not current_user: diff --git a/backend/src/module/parser/title_parser.py b/backend/src/module/parser/title_parser.py index 6214bb55..d08dca6c 100644 --- a/backend/src/module/parser/title_parser.py +++ b/backend/src/module/parser/title_parser.py @@ -71,7 +71,7 @@ class TitleParser: subtitle=episode.sub, eps_collect=False if episode.episode > 1 else True, offset=0, - filter=settings.rss_parser.filter, + filter=",".join(settings.rss_parser.filter), ) logger.debug(f"RAW:{raw} >> {title_raw}") return data diff --git a/webui/src/api/download.ts b/webui/src/api/download.ts index 2aec1206..780284e9 100644 --- a/webui/src/api/download.ts +++ b/webui/src/api/download.ts @@ -1,25 +1,24 @@ -import type { BangumiRule } from '#/bangumi'; -import type { ApiSuccess } from '#/api'; +import type { BangumiAPI, BangumiRule } from '#/bangumi'; +import type { RSS } from '#/rss'; +import type { ApiError, ApiSuccess } from '#/api'; export const apiDownload = { /** * 解析 RSS 链接 - * @param rss_link - RSS 链接 + * @param rss_item - RSS 链接 */ - async analysis(rss_link: string) { - const { data } = await axios.post( - 'api/v1/download/analysis', - { - rss_link, - } + async analysis(rss_item: RSS) { + const { data } = await axios.post( + 'api/v1/rss/analysis', + rss_item ); - // 解析失败抛出错误 - if (data.status) { - throw data; + const result: BangumiRule = { + ...data, + filter: data.filter.split(','), + rss_link: data.rss_link.split(','), } - - return data; + return result; }, /** @@ -27,9 +26,14 @@ export const apiDownload = { * @param bangumiData - Bangumi 数据 */ async collection(bangumiData: BangumiRule) { + const postData: BangumiAPI = { + ...bangumiData, + filter: bangumiData.filter.join(','), + rss_link: bangumiData.rss_link.join(','), + } const { data } = await axios.post( - 'api/v1/download/collection', - bangumiData + 'api/v1/rss/collection', + postData ); return data; }, @@ -39,9 +43,14 @@ export const apiDownload = { * @param bangumiData - Bangumi 数据 */ async subscribe(bangumiData: BangumiRule) { + const postData: BangumiAPI = { + ...bangumiData, + filter: bangumiData.filter.join(','), + rss_link: bangumiData.rss_link.join(','), + } const { data } = await axios.post( - 'api/v1/download/subscribe', - bangumiData + 'api/v1/rss/subscribe', + postData ); return data; }, diff --git a/webui/src/components/ab-add-bangumi.vue b/webui/src/components/ab-add-bangumi.vue index 7c6668c8..acc072be 100644 --- a/webui/src/components/ab-add-bangumi.vue +++ b/webui/src/components/ab-add-bangumi.vue @@ -18,8 +18,9 @@ const rule = ref(ruleTemplate); const parserType = ['mikan', 'tmdb', 'parser']; -const analysis = reactive({ +const window = reactive({ loading: false, + rule: false, next: false, }); const loading = reactive({ @@ -31,7 +32,7 @@ watch(show, (val) => { if (!val) { rss.value = rssTemplate; setTimeout(() => { - analysis.next = false; + window.next = false; }, 300); } }); @@ -41,10 +42,10 @@ async function addRss() { message.error('Please enter the RSS link!'); } else if (rss.value.aggregate) { try { - analysis.loading = true; + window.loading = true; const data = await apiRSS.add(rss.value); - analysis.loading = false; - analysis.next = true; + window.loading = false; + window.next = true; message.success(data.msg_en); show.value = false; console.log('rss', data); @@ -52,16 +53,17 @@ async function addRss() { const err = error as ApiError; message.error(err.msg_en); console.log('error', err.msg_en); - analysis.loading = false; + window.loading = false; } } else { try { - analysis.loading = true; - const data = await apiDownload.analysis(rss.value.url); - analysis.loading = false; + window.loading = true; + const data = await apiDownload.analysis(rss.value); + window.loading = false; rule.value = data; - analysis.next = true; + window.next = true; + window.rule = true; console.log('rule', data); } catch (error) { const err = error as ApiError; @@ -113,7 +115,7 @@ async function subscribe() {