mirror of
https://github.com/EstrellaXD/Auto_Bangumi.git
synced 2026-04-23 18:11:37 +08:00
feat: lint & format
This commit is contained in:
@@ -1,137 +1,136 @@
|
||||
import type {BangumiAPI, BangumiRule} from '#/bangumi';
|
||||
import type {ApiSuccess} from '#/api';
|
||||
|
||||
import type { BangumiAPI, BangumiRule } from '#/bangumi';
|
||||
import type { ApiSuccess } from '#/api';
|
||||
|
||||
export const apiBangumi = {
|
||||
/**
|
||||
* 获取所有 bangumi 数据
|
||||
* @returns 所有 bangumi 数据
|
||||
*/
|
||||
async getAll() {
|
||||
const {data} = await axios.get<BangumiAPI[]>('api/v1/bangumi/get/all');
|
||||
const result: BangumiRule[] = data.map((bangumi) => (
|
||||
{
|
||||
...bangumi,
|
||||
filter: bangumi.filter.split(','),
|
||||
rss_link: bangumi.rss_link.split(','),
|
||||
}
|
||||
));
|
||||
return result;
|
||||
},
|
||||
/**
|
||||
* 获取所有 bangumi 数据
|
||||
* @returns 所有 bangumi 数据
|
||||
*/
|
||||
async getAll() {
|
||||
const { data } = await axios.get<BangumiAPI[]>('api/v1/bangumi/get/all');
|
||||
const result: BangumiRule[] = data.map((bangumi) => ({
|
||||
...bangumi,
|
||||
filter: bangumi.filter.split(','),
|
||||
rss_link: bangumi.rss_link.split(','),
|
||||
}));
|
||||
return result;
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取指定 bangumiId 的规则
|
||||
* @param bangumiId bangumi id
|
||||
* @returns 指定 bangumi 的规则
|
||||
*/
|
||||
async getRule(bangumiId: number) {
|
||||
const {data} = await axios.get<BangumiAPI>(
|
||||
`api/v1/bangumi/get/${bangumiId}`
|
||||
);
|
||||
const result: BangumiRule = {
|
||||
...data,
|
||||
filter: data.filter.split(','),
|
||||
rss_link: data.rss_link.split(','),
|
||||
}
|
||||
return result;
|
||||
},
|
||||
/**
|
||||
* 获取指定 bangumiId 的规则
|
||||
* @param bangumiId bangumi id
|
||||
* @returns 指定 bangumi 的规则
|
||||
*/
|
||||
async getRule(bangumiId: number) {
|
||||
const { data } = await axios.get<BangumiAPI>(
|
||||
`api/v1/bangumi/get/${bangumiId}`
|
||||
);
|
||||
const result: BangumiRule = {
|
||||
...data,
|
||||
filter: data.filter.split(','),
|
||||
rss_link: data.rss_link.split(','),
|
||||
};
|
||||
return result;
|
||||
},
|
||||
|
||||
/**
|
||||
* 更新指定 bangumiId 的规则
|
||||
* @param bangumiId - 需要更新的 bangumi 的 id
|
||||
* @param bangumiRule
|
||||
* @returns axios 请求返回的数据
|
||||
*/
|
||||
async updateRule(bangumiId: number, bangumiRule: BangumiRule) {
|
||||
const rule: BangumiAPI = {
|
||||
...bangumiRule,
|
||||
filter: bangumiRule.filter.join(','),
|
||||
rss_link: bangumiRule.rss_link.join(','),
|
||||
}
|
||||
const post = omit(rule, ['id'])
|
||||
const {data} = await axios.patch<ApiSuccess>(
|
||||
`api/v1/bangumi/update/${bangumiId}`,
|
||||
post
|
||||
);
|
||||
return data;
|
||||
},
|
||||
/**
|
||||
* 更新指定 bangumiId 的规则
|
||||
* @param bangumiId - 需要更新的 bangumi 的 id
|
||||
* @param bangumiRule
|
||||
* @returns axios 请求返回的数据
|
||||
*/
|
||||
async updateRule(bangumiId: number, bangumiRule: BangumiRule) {
|
||||
const rule: BangumiAPI = {
|
||||
...bangumiRule,
|
||||
filter: bangumiRule.filter.join(','),
|
||||
rss_link: bangumiRule.rss_link.join(','),
|
||||
};
|
||||
const post = omit(rule, ['id']);
|
||||
const { data } = await axios.patch<ApiSuccess>(
|
||||
`api/v1/bangumi/update/${bangumiId}`,
|
||||
post
|
||||
);
|
||||
return data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 删除指定 bangumiId 的数据库规则,会在重新匹配到后重建
|
||||
* @param bangumiId - 需要删除的 bangumi 的 id
|
||||
* @param file - 是否同时删除关联文件。
|
||||
* @returns axios 请求返回的数据
|
||||
*/
|
||||
async deleteRule(bangumiId: number | number[], file: boolean) {
|
||||
let url = 'api/v1/bangumi/delete';
|
||||
let ids: undefined | number[];
|
||||
/**
|
||||
* 删除指定 bangumiId 的数据库规则,会在重新匹配到后重建
|
||||
* @param bangumiId - 需要删除的 bangumi 的 id
|
||||
* @param file - 是否同时删除关联文件。
|
||||
* @returns axios 请求返回的数据
|
||||
*/
|
||||
async deleteRule(bangumiId: number | number[], file: boolean) {
|
||||
let url = 'api/v1/bangumi/delete';
|
||||
let ids: undefined | number[];
|
||||
|
||||
if (typeof bangumiId === 'number') {
|
||||
url = `${url}/${bangumiId}`;
|
||||
} else {
|
||||
url = `${url}/many`;
|
||||
ids = bangumiId;
|
||||
}
|
||||
|
||||
const {data} = await axios.delete<ApiSuccess>(url, {
|
||||
data: ids,
|
||||
params: {
|
||||
file,
|
||||
},
|
||||
});
|
||||
return data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 删除指定 bangumiId 的规则。如果 file 为 true,则同时删除关联文件。
|
||||
* @param bangumiId - 需要删除规则的 bangumi 的 id。
|
||||
* @param file - 是否同时删除关联文件。
|
||||
* @returns axios 请求返回的数据
|
||||
*/
|
||||
async disableRule(bangumiId: number | number[], file: boolean) {
|
||||
let url = 'api/v1/bangumi/disable';
|
||||
let ids: undefined | number[];
|
||||
|
||||
if (typeof bangumiId === 'number') {
|
||||
url = `${url}/${bangumiId}`;
|
||||
} else {
|
||||
url = `${url}/many`;
|
||||
ids = bangumiId;
|
||||
}
|
||||
|
||||
const {data} = await axios.delete<ApiSuccess>(url, {
|
||||
data: ids,
|
||||
params: {
|
||||
file,
|
||||
},
|
||||
});
|
||||
return data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 启用指定 bangumiId 的规则
|
||||
* @param bangumiId - 需要启用的 bangumi 的 id
|
||||
*/
|
||||
async enableRule(bangumiId: number) {
|
||||
const {data} = await axios.get<ApiSuccess>(
|
||||
`api/v1/bangumi/enable/${bangumiId}`
|
||||
);
|
||||
return data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 重置所有 bangumi 数据
|
||||
*/
|
||||
async resetAll() {
|
||||
const {data} = await axios.get<ApiSuccess>('api/v1/bangumi/reset/all');
|
||||
return data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 刷新所有没有海报的 bangumi 海报
|
||||
*/
|
||||
async refreshPoster() {
|
||||
const {data} = await axios.get<ApiSuccess>('api/v1/bangumi/refresh/poster/all');
|
||||
return data;
|
||||
if (typeof bangumiId === 'number') {
|
||||
url = `${url}/${bangumiId}`;
|
||||
} else {
|
||||
url = `${url}/many`;
|
||||
ids = bangumiId;
|
||||
}
|
||||
|
||||
const { data } = await axios.delete<ApiSuccess>(url, {
|
||||
data: ids,
|
||||
params: {
|
||||
file,
|
||||
},
|
||||
});
|
||||
return data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 删除指定 bangumiId 的规则。如果 file 为 true,则同时删除关联文件。
|
||||
* @param bangumiId - 需要删除规则的 bangumi 的 id。
|
||||
* @param file - 是否同时删除关联文件。
|
||||
* @returns axios 请求返回的数据
|
||||
*/
|
||||
async disableRule(bangumiId: number | number[], file: boolean) {
|
||||
let url = 'api/v1/bangumi/disable';
|
||||
let ids: undefined | number[];
|
||||
|
||||
if (typeof bangumiId === 'number') {
|
||||
url = `${url}/${bangumiId}`;
|
||||
} else {
|
||||
url = `${url}/many`;
|
||||
ids = bangumiId;
|
||||
}
|
||||
|
||||
const { data } = await axios.delete<ApiSuccess>(url, {
|
||||
data: ids,
|
||||
params: {
|
||||
file,
|
||||
},
|
||||
});
|
||||
return data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 启用指定 bangumiId 的规则
|
||||
* @param bangumiId - 需要启用的 bangumi 的 id
|
||||
*/
|
||||
async enableRule(bangumiId: number) {
|
||||
const { data } = await axios.get<ApiSuccess>(
|
||||
`api/v1/bangumi/enable/${bangumiId}`
|
||||
);
|
||||
return data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 重置所有 bangumi 数据
|
||||
*/
|
||||
async resetAll() {
|
||||
const { data } = await axios.get<ApiSuccess>('api/v1/bangumi/reset/all');
|
||||
return data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 刷新所有没有海报的 bangumi 海报
|
||||
*/
|
||||
async refreshPoster() {
|
||||
const { data } = await axios.get<ApiSuccess>(
|
||||
'api/v1/bangumi/refresh/poster/all'
|
||||
);
|
||||
return data;
|
||||
},
|
||||
};
|
||||
|
||||
@@ -6,5 +6,4 @@ export const apiCheck = {
|
||||
const { data } = await axios.get<Boolean>('api/v1/check/downloader');
|
||||
return data;
|
||||
},
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { BangumiAPI, BangumiRule } from '#/bangumi';
|
||||
import type { RSS } from '#/rss';
|
||||
import type { ApiError, ApiSuccess } from '#/api';
|
||||
import type { ApiSuccess } from '#/api';
|
||||
|
||||
export const apiDownload = {
|
||||
/**
|
||||
@@ -10,14 +10,14 @@ export const apiDownload = {
|
||||
async analysis(rss_item: RSS) {
|
||||
const { data } = await axios.post<BangumiAPI>(
|
||||
'api/v1/rss/analysis',
|
||||
rss_item
|
||||
rss_item
|
||||
);
|
||||
|
||||
const result: BangumiRule = {
|
||||
...data,
|
||||
filter: data.filter.split(','),
|
||||
rss_link: data.rss_link.split(','),
|
||||
}
|
||||
...data,
|
||||
filter: data.filter.split(','),
|
||||
rss_link: data.rss_link.split(','),
|
||||
};
|
||||
return result;
|
||||
},
|
||||
|
||||
@@ -30,7 +30,7 @@ export const apiDownload = {
|
||||
...bangumiData,
|
||||
filter: bangumiData.filter.join(','),
|
||||
rss_link: bangumiData.rss_link.join(','),
|
||||
}
|
||||
};
|
||||
const { data } = await axios.post<ApiSuccess>(
|
||||
'api/v1/rss/collect',
|
||||
postData
|
||||
@@ -44,10 +44,10 @@ export const apiDownload = {
|
||||
*/
|
||||
async subscribe(bangumiData: BangumiRule) {
|
||||
const postData: BangumiAPI = {
|
||||
...bangumiData,
|
||||
filter: bangumiData.filter.join(','),
|
||||
rss_link: bangumiData.rss_link.join(','),
|
||||
}
|
||||
...bangumiData,
|
||||
filter: bangumiData.filter.join(','),
|
||||
rss_link: bangumiData.rss_link.join(','),
|
||||
};
|
||||
const { data } = await axios.post<ApiSuccess>(
|
||||
'api/v1/rss/subscribe',
|
||||
postData
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { ApiSuccess } from "#/api";
|
||||
import type { ApiSuccess } from '#/api';
|
||||
|
||||
export const apiLog = {
|
||||
async getLog() {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import type { ApiSuccess } from "#/api";
|
||||
|
||||
import type { ApiSuccess } from '#/api';
|
||||
|
||||
export const apiProgram = {
|
||||
/**
|
||||
|
||||
@@ -14,32 +14,48 @@ export const apiRSS = {
|
||||
},
|
||||
|
||||
async delete(rss_id: number) {
|
||||
const { data } = await axios.delete<ApiSuccess>(`api/v1/rss/delete/${rss_id}`);
|
||||
const { data } = await axios.delete<ApiSuccess>(
|
||||
`api/v1/rss/delete/${rss_id}`
|
||||
);
|
||||
return data!;
|
||||
},
|
||||
|
||||
async deleteMany(rss_list: number[]) {
|
||||
const { data } = await axios.post<ApiSuccess>(`api/v1/rss/delete/many`, rss_list);
|
||||
const { data } = await axios.post<ApiSuccess>(
|
||||
`api/v1/rss/delete/many`,
|
||||
rss_list
|
||||
);
|
||||
return data!;
|
||||
},
|
||||
|
||||
async disable(rss_id: number) {
|
||||
const { data } = await axios.patch<ApiSuccess>(`api/v1/rss/disable/${rss_id}`);
|
||||
const { data } = await axios.patch<ApiSuccess>(
|
||||
`api/v1/rss/disable/${rss_id}`
|
||||
);
|
||||
return data!;
|
||||
},
|
||||
|
||||
async disableMany(rss_list: number[]) {
|
||||
const { data } = await axios.post<ApiSuccess>(`api/v1/rss/disable/many`, rss_list);
|
||||
const { data } = await axios.post<ApiSuccess>(
|
||||
`api/v1/rss/disable/many`,
|
||||
rss_list
|
||||
);
|
||||
return data!;
|
||||
},
|
||||
|
||||
async update(rss_id: number, rss: RSS) {
|
||||
const { data } = await axios.patch<ApiSuccess>(`api/v1/rss/update/${rss_id}`, rss);
|
||||
const { data } = await axios.patch<ApiSuccess>(
|
||||
`api/v1/rss/update/${rss_id}`,
|
||||
rss
|
||||
);
|
||||
return data!;
|
||||
},
|
||||
|
||||
async enableMany(rss_list: number[]) {
|
||||
const { data } = await axios.post<ApiSuccess>(`api/v1/rss/enable/many`, rss_list);
|
||||
const { data } = await axios.post<ApiSuccess>(
|
||||
`api/v1/rss/enable/many`,
|
||||
rss_list
|
||||
);
|
||||
return data!;
|
||||
},
|
||||
|
||||
@@ -49,7 +65,9 @@ export const apiRSS = {
|
||||
},
|
||||
|
||||
async refresh(rss_id: number) {
|
||||
const { data } = await axios.get<ApiSuccess>(`api/v1/rss/refresh/${rss_id}`);
|
||||
const { data } = await axios.get<ApiSuccess>(
|
||||
`api/v1/rss/refresh/${rss_id}`
|
||||
);
|
||||
return data!;
|
||||
},
|
||||
|
||||
|
||||
@@ -1,37 +1,47 @@
|
||||
import {
|
||||
Observable,
|
||||
} from 'rxjs';
|
||||
import { Observable } from 'rxjs';
|
||||
|
||||
import type { BangumiRule, BangumiAPI } from '#/bangumi';
|
||||
import type { BangumiAPI, BangumiRule } from '#/bangumi';
|
||||
|
||||
export const apiSearch = {
|
||||
/**
|
||||
* 番剧搜索接口是 Server Send 流式数据,每条是一个 Bangumi JSON 字符串,
|
||||
* 使用接口方式是监听连接消息后,转为 Observable 配合外层调用时 switchMap 订阅使用
|
||||
*/
|
||||
get(keyword: string, site = 'mikan'): Observable<BangumiRule> {
|
||||
const bangumiInfo$ = new Observable<BangumiRule>(observer => {
|
||||
get(keyword: string, site = 'mikan'): Observable<BangumiRule> {
|
||||
const bangumiInfo$ = new Observable<BangumiRule>((observer) => {
|
||||
const eventSource = new EventSource(
|
||||
`api/v1/search/bangumi?site=${site}&keywords=${encodeURIComponent(keyword)}`,
|
||||
{ withCredentials: true },
|
||||
`api/v1/search/bangumi?site=${site}&keywords=${encodeURIComponent(
|
||||
keyword
|
||||
)}`,
|
||||
{ withCredentials: true }
|
||||
);
|
||||
|
||||
eventSource.onmessage = ev => {
|
||||
eventSource.onmessage = (ev) => {
|
||||
try {
|
||||
const apiData: BangumiAPI = JSON.parse(ev.data);
|
||||
const data: BangumiRule = {
|
||||
...apiData,
|
||||
filter: apiData.filter.split(','),
|
||||
rss_link: apiData.rss_link.split(','),
|
||||
}
|
||||
const data: BangumiRule = {
|
||||
...apiData,
|
||||
filter: apiData.filter.split(','),
|
||||
rss_link: apiData.rss_link.split(','),
|
||||
};
|
||||
observer.next(data);
|
||||
} catch (error) {
|
||||
console.error('[/search/bangumi] Parse Error |', { keyword }, 'response:', ev.data)
|
||||
console.error(
|
||||
'[/search/bangumi] Parse Error |',
|
||||
{ keyword },
|
||||
'response:',
|
||||
ev.data
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
eventSource.onerror = ev => {
|
||||
console.error('[/search/bangumi] Server Error |', { keyword }, 'error:', ev)
|
||||
eventSource.onerror = (ev) => {
|
||||
console.error(
|
||||
'[/search/bangumi] Server Error |',
|
||||
{ keyword },
|
||||
'error:',
|
||||
ev
|
||||
);
|
||||
// 目前后端搜索完成关闭连接时会触发 error 事件,前端手动调用 close 不再自动重连
|
||||
eventSource.close();
|
||||
};
|
||||
@@ -47,6 +57,5 @@ export const apiSearch = {
|
||||
async getProvider() {
|
||||
const { data } = await axios.get<string[]>('api/v1/search/provider');
|
||||
return data;
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user