diff --git a/components.d.ts b/components.d.ts
index 8e98add8..b23956da 100644
--- a/components.d.ts
+++ b/components.d.ts
@@ -8,18 +8,29 @@ export {}
declare module '@vue/runtime-core' {
export interface GlobalComponents {
ElAside: typeof import('element-plus/es')['ElAside']
+ ElButton: typeof import('element-plus/es')['ElButton']
+ ElCard: typeof import('element-plus/es')['ElCard']
ElCol: typeof import('element-plus/es')['ElCol']
+ ElCollapse: typeof import('element-plus/es')['ElCollapse']
+ ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
ElContainer: typeof import('element-plus/es')['ElContainer']
+ ElDialog: typeof import('element-plus/es')['ElDialog']
ElHeader: typeof import('element-plus/es')['ElHeader']
ElIcon: typeof import('element-plus/es')['ElIcon']
+ ElInput: typeof import('element-plus/es')['ElInput']
ElMain: typeof import('element-plus/es')['ElMain']
ElMenu: typeof import('element-plus/es')['ElMenu']
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElMenuItemGroup: typeof import('element-plus/es')['ElMenuItemGroup']
ElRow: typeof import('element-plus/es')['ElRow']
+ ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
+ ElSpace: typeof import('element-plus/es')['ElSpace']
ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
+ ElTable: typeof import('element-plus/es')['ElTable']
+ ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
+ ShowResults: typeof import('./src/components/ShowResults.vue')['default']
}
}
diff --git a/index.html b/index.html
index 7b590dc2..b19d2d17 100644
--- a/index.html
+++ b/index.html
@@ -4,7 +4,7 @@
-
Vite + Vue + TS
+ Auto_Bangumi
diff --git a/package.json b/package.json
index a8e612c7..315071bb 100644
--- a/package.json
+++ b/package.json
@@ -9,8 +9,10 @@
"preview": "vite preview"
},
"dependencies": {
+ "axios": "^0.27.2",
"element-plus": "^2.2.10",
"modern-normalize": "^1.1.0",
+ "pinia": "^2.0.16",
"vue": "^3.2.37",
"vue-global-api": "^0.4.1",
"vue-router": "4"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6a40411d..80c45e21 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -5,8 +5,10 @@ specifiers:
'@vicons/carbon': ^0.12.0
'@vicons/utils': ^0.1.4
'@vitejs/plugin-vue': ^3.0.0
+ axios: ^0.27.2
element-plus: ^2.2.10
modern-normalize: ^1.1.0
+ pinia: ^2.0.16
sass: ^1.54.0
typescript: ^4.6.4
unplugin-auto-import: ^0.10.0
@@ -18,8 +20,10 @@ specifiers:
vue-tsc: ^0.38.4
dependencies:
+ axios: 0.27.2
element-plus: 2.2.10_vue@3.2.37
modern-normalize: 1.1.0
+ pinia: 2.0.16_j6bzmzd4ujpabbp5objtwxyjp4
vue: 3.2.37
vue-global-api: 0.4.1_vue@3.2.37
vue-router: 4.1.2_vue@3.2.37
@@ -334,6 +338,19 @@ packages:
resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
dev: false
+ /asynckit/0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+ dev: false
+
+ /axios/0.27.2:
+ resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==}
+ dependencies:
+ follow-redirects: 1.15.1
+ form-data: 4.0.0
+ transitivePeerDependencies:
+ - debug
+ dev: false
+
/balanced-match/1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
@@ -371,6 +388,13 @@ packages:
fsevents: 2.3.2
dev: true
+ /combined-stream/1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ delayed-stream: 1.0.0
+ dev: false
+
/css-render/0.13.9:
resolution: {integrity: sha512-n3C4ZH59rveBrUlAD7n0Ze9/gUMKa4dlH1C9CWKpGcIHR/xRcIVXzBGy1iw8WWq2ySmn2/ZqOpySQNAK5Pb6sw==}
dependencies:
@@ -402,6 +426,11 @@ packages:
ms: 2.1.2
dev: true
+ /delayed-stream/1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+ dev: false
+
/element-plus/2.2.10_vue@3.2.37:
resolution: {integrity: sha512-hJ+LlbRN3POu4Idl1LXB+SHSWdi+wwmdsoDXdQT2ynGuwzZsMYiusOooYXyEsPlrizeLibdnNGNDx4TIjXQvUg==}
peerDependencies:
@@ -675,6 +704,25 @@ packages:
to-regex-range: 5.0.1
dev: true
+ /follow-redirects/1.15.1:
+ resolution: {integrity: sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+ dev: false
+
+ /form-data/4.0.0:
+ resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
+ engines: {node: '>= 6'}
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: 2.1.35
+ dev: false
+
/fsevents/2.3.2:
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
@@ -793,6 +841,18 @@ packages:
picomatch: 2.3.1
dev: true
+ /mime-db/1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /mime-types/2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ mime-db: 1.52.0
+ dev: false
+
/minimatch/5.1.0:
resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==}
engines: {node: '>=10'}
@@ -846,6 +906,24 @@ packages:
engines: {node: '>=8.6'}
dev: true
+ /pinia/2.0.16_j6bzmzd4ujpabbp5objtwxyjp4:
+ resolution: {integrity: sha512-9/LMVO+/epny1NBfC77vnps4g3JRezxhhoF1xLUk8mZkUIxVnwfEAIRiAX8mYBTD/KCwZqnDMqXc8w3eU0FQGg==}
+ peerDependencies:
+ '@vue/composition-api': ^1.4.0
+ typescript: '>=4.4.4'
+ vue: ^2.6.14 || ^3.2.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+ typescript:
+ optional: true
+ dependencies:
+ '@vue/devtools-api': 6.2.1
+ typescript: 4.7.4
+ vue: 3.2.37
+ vue-demi: 0.13.5_vue@3.2.37
+ dev: false
+
/pkg-types/0.3.3:
resolution: {integrity: sha512-6AJcCMnjUQPQv/Wk960w0TOmjhdjbeaQJoSKWRQv9N3rgkessCu6J0Ydsog/nw1MbpnxHuPzYbfOn2KmlZO1FA==}
dependencies:
@@ -952,7 +1030,6 @@ packages:
resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==}
engines: {node: '>=4.2.0'}
hasBin: true
- dev: true
/unimport/0.6.2_vite@3.0.2:
resolution: {integrity: sha512-dttI/EFWqIqc27Gdh6ptGZDBYPoPXVrj+cW1BVzccePSqSFONIL6yA1WmjG40yJlHX7HeFEZ7ZXF2/Yo+KoSHA==}
diff --git a/src/api/bangumi.ts b/src/api/bangumi.ts
new file mode 100644
index 00000000..cb99d026
--- /dev/null
+++ b/src/api/bangumi.ts
@@ -0,0 +1,35 @@
+import axios from "axios";
+
+
+/**
+ * 添加番剧订阅
+ * @param type 'new' 添加新番, ’old‘ 添加旧番
+ * @param rss_link
+ */
+const addBangumi = (type: string, rss_link: string) => {
+ if(type === 'new') {
+ return axios.post('/api/v1/subscribe', { rss_link });
+ } else if(type === 'old') {
+ return axios.post('/api/v1/collection', { rss_link });
+ } else {
+ console.error('type错误, type应为 new 或 old');
+ return false;
+ }
+}
+
+/**
+ * 获取AB存储的数据
+ */
+const getABData = () => axios.get('/api/v1/data');
+
+/**
+ * 删除番剧规则
+ * @param {string} name 番名 (title_raw)
+ */
+const removeRule = (name: string) => axios.get(`/api/v1/removeRule/${name}`);
+
+export {
+ addBangumi,
+ getABData,
+ removeRule
+}
\ No newline at end of file
diff --git a/src/api/debug.ts b/src/api/debug.ts
new file mode 100644
index 00000000..4ca902f0
--- /dev/null
+++ b/src/api/debug.ts
@@ -0,0 +1,16 @@
+import axios from 'axios'
+
+/**
+ * 获取AB的日志
+ */
+const getABLog = () => axios.get('/api/v1/log');
+
+/**
+ * 重置 AB 的数据,程序会在下一轮检索中重新添加 RSS 订阅信息。
+ */
+const resetRule = () => axios.get('/api/v1/resetRule');
+
+export {
+ getABLog,
+ resetRule,
+}
\ No newline at end of file
diff --git a/src/components/ShowResults.vue b/src/components/ShowResults.vue
new file mode 100644
index 00000000..c7807d90
--- /dev/null
+++ b/src/components/ShowResults.vue
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+ {{ results === null ? 'null' : results }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/YBangumi.vue b/src/pages/YBangumi.vue
deleted file mode 100644
index 6b8ab86c..00000000
--- a/src/pages/YBangumi.vue
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/pages/YLayout.vue b/src/pages/YLayout.vue
index ab7ac67b..29a1cce2 100644
--- a/src/pages/YLayout.vue
+++ b/src/pages/YLayout.vue
@@ -13,13 +13,15 @@ import YMenu from './YMenu.vue';
>
-
+
-
+
+
+
diff --git a/src/pages/bangumi/components/AddBangumi.vue b/src/pages/bangumi/components/AddBangumi.vue
new file mode 100644
index 00000000..bbc5528b
--- /dev/null
+++ b/src/pages/bangumi/components/AddBangumi.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 订阅
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/bangumi/components/BangumiData.vue b/src/pages/bangumi/components/BangumiData.vue
new file mode 100644
index 00000000..ef6253a2
--- /dev/null
+++ b/src/pages/bangumi/components/BangumiData.vue
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+ 注: 目前只能管理mikan源, 如通过api添加其他来源的新番将不过出现在此处
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/bangumi/index.vue b/src/pages/bangumi/index.vue
new file mode 100644
index 00000000..6f45cebe
--- /dev/null
+++ b/src/pages/bangumi/index.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/YDebug.vue b/src/pages/debug/index.vue
similarity index 100%
rename from src/pages/YDebug.vue
rename to src/pages/debug/index.vue
diff --git a/src/router/index.ts b/src/router/index.ts
index 5a416b8c..6ded7f63 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -1,8 +1,8 @@
import { createRouter, createWebHashHistory } from 'vue-router';
const YLayout = () => import('../pages/YLayout.vue');
-const YBangumi = () => import('../pages/YBangumi.vue');
-const YDebug = () => import('../pages/YDebug.vue');
+const YBangumi = () => import('../pages/bangumi/index.vue');
+const YDebug = () => import('../pages/debug/index.vue');
const routes = [
{
diff --git a/vite.config.ts b/vite.config.ts
index 2ef7ffb5..e6384581 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -25,7 +25,7 @@ export default defineConfig({
server: {
proxy: {
'/api': {
- target: 'http://192.168.0.2',
+ target: 'http://127.0.0.1:7892',
changeOrigin: true,
rewrite: path => path.replace(/^\/api/, '/api')
}