mirror of
https://github.com/EstrellaXD/Auto_Bangumi.git
synced 2026-04-13 18:11:03 +08:00
fix: rss api bug. fix ui.
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<BangumiRule & { status?: string }>(
|
||||
'api/v1/download/analysis',
|
||||
{
|
||||
rss_link,
|
||||
}
|
||||
async analysis(rss_item: RSS) {
|
||||
const { data } = await axios.post<BangumiAPI>(
|
||||
'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<ApiSuccess>(
|
||||
'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<ApiSuccess>(
|
||||
'api/v1/download/subscribe',
|
||||
bangumiData
|
||||
'api/v1/rss/subscribe',
|
||||
postData
|
||||
);
|
||||
return data;
|
||||
},
|
||||
|
||||
@@ -18,8 +18,9 @@ const rule = ref<BangumiRule>(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() {
|
||||
|
||||
<template>
|
||||
<ab-popup v-model:show="show" :title="$t('topbar.add.title')" css="w-360px">
|
||||
<div v-if="!analysis.next" space-y-12px>
|
||||
<div v-if="!window.next" space-y-12px>
|
||||
<ab-setting
|
||||
v-model:data="rss.url"
|
||||
:label="$t('topbar.add.rss_link')"
|
||||
@@ -148,14 +150,14 @@ async function subscribe() {
|
||||
<div flex="~ justify-end">
|
||||
<ab-button
|
||||
size="small"
|
||||
:loading="analysis.loading"
|
||||
:loading="window.loading"
|
||||
@click="addRss"
|
||||
>{{ $t('topbar.add.button') }}</ab-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-else>
|
||||
<div v-else-if="window.rule">
|
||||
<ab-rule v-model:rule="rule"></ab-rule>
|
||||
|
||||
<div flex="~ justify-end" space-x-10px>
|
||||
|
||||
Reference in New Issue
Block a user