@ikenxuan/amagi 1.5.4 → 1.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,123 +1,109 @@
1
1
  import { BilibiliResult } from '../business/bilibili/index.js';
2
2
  import { DouyinResult } from '../business/douyin/index.js';
3
3
  import fastify from 'fastify';
4
- import fastifySwaggerUi from '@fastify/swagger-ui';
5
- import fastifySwagger from '@fastify/swagger';
6
- import { dirPath } from '../model/index.js';
7
- import fs from 'node:fs';
8
4
  export class client {
9
- douyin;
10
- bilibili;
11
- /**
5
+ douyin;
6
+ bilibili;
7
+ /**
12
8
  *
13
9
  * @param cookies 包含抖音和B站cookie的参数对象
14
10
  */
15
- constructor(cookies) {
16
- /** 抖音ck */
17
- this.douyin = cookies.douyin;
18
- /** B站ck */
19
- this.bilibili = cookies.bilibili;
20
- }
21
- /**
11
+ constructor(cookies) {
12
+ /** 抖音ck */
13
+ this.douyin = cookies.douyin;
14
+ /** B站ck */
15
+ this.bilibili = cookies.bilibili;
16
+ }
17
+ /**
22
18
  * 初始化 fastify 实例
23
19
  * @param log 是否启用日志
24
20
  * @returns fastify 实例
25
21
  */
26
- async initServer(log = false) {
27
- const client = fastify({ logger: log });
28
- const data = JSON.parse(fs.readFileSync(dirPath + '/amagi.openapi.json', 'utf8'));
29
- await client.register(fastifySwagger, {
30
- openapi: data
31
- });
32
- await client.register(fastifySwaggerUi, {
33
- routePrefix: '/docs',
34
- uiConfig: {
35
- docExpansion: 'full',
36
- },
37
- });
38
- client.get('/api/douyin/aweme', async (request, reply) => {
39
- const url = request.query.url;
40
- reply.type('application/json').send(await new DouyinResult("VideoData" /* DouyinDataType['单个视频作品数据'] */, this.douyin).result({ url }));
41
- });
42
- client.get('/api/douyin/comments', async (request, reply) => {
43
- const url = request.query.url;
44
- reply.type('application/json').send(await new DouyinResult("CommentData" /* DouyinDataType['评论数据'] */, this.douyin).result({ url }));
45
- });
46
- client.get('/api/douyin/comments/reply', async (request, reply) => {
47
- const { aweme_id, comment_id } = request.query;
48
- reply.type('application/json').send(await new DouyinResult("CommentReplyData" /* DouyinDataType['二级评论数据'] */, this.douyin).result({ aweme_id, comment_id }));
49
- });
50
- client.get('/api/douyin/userinfo', async (request, reply) => {
51
- const sec_uid = request.query.sec_uid;
52
- reply.type('application/json').send(await new DouyinResult("UserInfoData" /* DouyinDataType['用户主页数据'] */, this.douyin).result({ sec_uid }));
53
- });
54
- client.get('/api/douyin/uservideoslist', async (request, reply) => {
55
- const sec_uid = request.query.sec_uid;
56
- reply.type('application/json').send(await new DouyinResult("UserVideosListData" /* DouyinDataType['用户主页视频列表数据'] */, this.douyin).result({ sec_uid }));
57
- });
58
- client.get('/api/douyin/suggestwords', async (request, reply) => {
59
- const query = request.query.query;
60
- reply.type('application/json').send(await new DouyinResult("SuggestWordsData" /* DouyinDataType['热点词数据'] */, this.douyin).result({ query }));
61
- });
62
- client.get('/api/douyin/search', async (request, reply) => {
63
- const query = request.query.query;
64
- reply.type('application/json').send(await new DouyinResult("SearchData" /* DouyinDataType['搜索数据'] */, this.douyin).result({ query }));
65
- });
66
- client.get('/api/douyin/emoji', async (_request, reply) => {
67
- reply.type('application/json').send(await new DouyinResult("EmojiData" /* DouyinDataType['官方emoji数据'] */, this.douyin).result());
68
- });
69
- client.get('/api/douyin/expressionplus', async (_request, reply) => {
70
- reply.type('application/json').send(await new DouyinResult("ExpressionPlusData" /* DouyinDataType['动态表情数据'] */, this.douyin).result());
71
- });
72
- client.get('/api/douyin/music', async (request, reply) => {
73
- const music_id = request.query.music_id;
74
- reply.type('application/json').send(await new DouyinResult("MusicData" /* DouyinDataType['音乐数据'] */, this.douyin).result({ music_id }));
75
- });
76
- // bilibili
77
- client.get('/api/bilibili/work', async (request, reply) => {
78
- const url = request.query.url;
79
- reply.type('application/json').send(await new BilibiliResult("VideoData" /* BilibiliDataType['单个视频作品数据'] */, this.bilibili).result({ url }));
80
- });
81
- client.get('/api/bilibili/comment', async (request, reply) => {
82
- const bvid = request.query.bvid;
83
- reply.type('application/json').send(await new BilibiliResult("CommentData" /* BilibiliDataType['评论数据'] */, this.bilibili).result({ bvid }));
84
- });
85
- client.get('/api/bilibili/emoji', async (_request, reply) => {
86
- reply.type('application/json').send(await new BilibiliResult("EmojiData" /* BilibiliDataType['emoji数据'] */, this.bilibili).result());
87
- });
88
- client.get('/api/bilibili/bangumivideoinfo', async (request, reply) => {
89
- const url = request.query.url;
90
- reply.type('application/json').send(await new BilibiliResult("BangumiVideoData" /* BilibiliDataType['番剧基本信息数据'] */, this.bilibili).result({ url }));
91
- });
92
- client.get('/api/bilibili/bangumivideodownloadlink', async (request, reply) => {
93
- const { cid, ep_id } = request.query;
94
- reply.type('application/json').send(await new BilibiliResult("BangumiVideoDownloadLinkData" /* BilibiliDataType['番剧下载信息数据'] */, this.bilibili).result({ cid, ep_id }));
95
- });
96
- client.get('/api/bilibili/dynamiclist', async (request, reply) => {
97
- const host_mid = request.query.host_mid;
98
- reply.type('application/json').send(await new BilibiliResult("UserDynamicListData" /* BilibiliDataType['用户主页动态列表数据'] */, this.bilibili).result({ host_mid }));
99
- });
100
- client.get('/api/bilibili/dynamicinfo', async (request, reply) => {
101
- const dynamic_id = request.query.dynamic_id;
102
- reply.type('application/json').send(await new BilibiliResult("DynamicInfoData" /* BilibiliDataType['动态详情数据'] */, this.bilibili).result({ dynamic_id }));
103
- });
104
- client.get('/api/bilibili/dynamicdard', async (request, reply) => {
105
- const dynamic_id = request.query.dynamic_id;
106
- reply.type('application/json').send(await new BilibiliResult("DynamicCardData" /* BilibiliDataType['动态卡片数据'] */, this.bilibili).result({ dynamic_id }));
107
- });
108
- client.get('/api/bilibili/userinfo', async (request, reply) => {
109
- const host_mid = request.query.host_mid;
110
- reply.type('application/json').send(await new BilibiliResult("UserInfoData" /* BilibiliDataType['用户主页数据'] */, this.bilibili).result({ host_mid }));
111
- });
112
- client.get('/api/bilibili/liveroominfo', async (request, reply) => {
113
- const room_id = request.query.room_id;
114
- reply.type('application/json').send(await new BilibiliResult("LiveRoomInfoData" /* BilibiliDataType['直播间信息'] */, this.bilibili).result({ room_id }));
115
- });
116
- client.get('/api/bilibili/liveroominit', async (request, reply) => {
117
- const room_id = request.query.room_id;
118
- reply.type('application/json').send(await new BilibiliResult("LiveRoomInitData" /* BilibiliDataType['直播间初始化信息'] */, this.bilibili).result({ room_id }));
119
- });
120
- // 返回 fastify 实例
121
- return client;
122
- }
22
+ async initServer(log = false) {
23
+ const client = fastify({ logger: log });
24
+ client.get('/api/douyin/aweme', async (request, reply) => {
25
+ const url = request.query.url;
26
+ reply.type('application/json').send(await new DouyinResult("VideoData" /* DouyinDataType['单个视频作品数据'] */, this.douyin).result({ url }));
27
+ });
28
+ client.get('/api/douyin/comments', async (request, reply) => {
29
+ const url = request.query.url;
30
+ reply.type('application/json').send(await new DouyinResult("CommentData" /* DouyinDataType['评论数据'] */, this.douyin).result({ url }));
31
+ });
32
+ client.get('/api/douyin/comments/reply', async (request, reply) => {
33
+ const { aweme_id, comment_id } = request.query;
34
+ reply.type('application/json').send(await new DouyinResult("CommentReplyData" /* DouyinDataType['二级评论数据'] */, this.douyin).result({ aweme_id, comment_id }));
35
+ });
36
+ client.get('/api/douyin/userinfo', async (request, reply) => {
37
+ const sec_uid = request.query.sec_uid;
38
+ reply.type('application/json').send(await new DouyinResult("UserInfoData" /* DouyinDataType['用户主页数据'] */, this.douyin).result({ sec_uid }));
39
+ });
40
+ client.get('/api/douyin/uservideoslist', async (request, reply) => {
41
+ const sec_uid = request.query.sec_uid;
42
+ reply.type('application/json').send(await new DouyinResult("UserVideosListData" /* DouyinDataType['用户主页视频列表数据'] */, this.douyin).result({ sec_uid }));
43
+ });
44
+ client.get('/api/douyin/suggestwords', async (request, reply) => {
45
+ const query = request.query.query;
46
+ reply.type('application/json').send(await new DouyinResult("SuggestWordsData" /* DouyinDataType['热点词数据'] */, this.douyin).result({ query }));
47
+ });
48
+ client.get('/api/douyin/search', async (request, reply) => {
49
+ const query = request.query.query;
50
+ reply.type('application/json').send(await new DouyinResult("SearchData" /* DouyinDataType['搜索数据'] */, this.douyin).result({ query }));
51
+ });
52
+ client.get('/api/douyin/emoji', async (_request, reply) => {
53
+ reply.type('application/json').send(await new DouyinResult("EmojiData" /* DouyinDataType['官方emoji数据'] */, this.douyin).result());
54
+ });
55
+ client.get('/api/douyin/expressionplus', async (_request, reply) => {
56
+ reply.type('application/json').send(await new DouyinResult("ExpressionPlusData" /* DouyinDataType['动态表情数据'] */, this.douyin).result());
57
+ });
58
+ client.get('/api/douyin/music', async (request, reply) => {
59
+ const music_id = request.query.music_id;
60
+ reply.type('application/json').send(await new DouyinResult("MusicData" /* DouyinDataType['音乐数据'] */, this.douyin).result({ music_id }));
61
+ });
62
+ // bilibili
63
+ client.get('/api/bilibili/work', async (request, reply) => {
64
+ const url = request.query.url;
65
+ reply.type('application/json').send(await new BilibiliResult("VideoData" /* BilibiliDataType['单个视频作品数据'] */, this.bilibili).result({ url }));
66
+ });
67
+ client.get('/api/bilibili/comment', async (request, reply) => {
68
+ const bvid = request.query.bvid;
69
+ reply.type('application/json').send(await new BilibiliResult("CommentData" /* BilibiliDataType['评论数据'] */, this.bilibili).result({ bvid }));
70
+ });
71
+ client.get('/api/bilibili/emoji', async (_request, reply) => {
72
+ reply.type('application/json').send(await new BilibiliResult("EmojiData" /* BilibiliDataType['emoji数据'] */, this.bilibili).result());
73
+ });
74
+ client.get('/api/bilibili/bangumivideoinfo', async (request, reply) => {
75
+ const url = request.query.url;
76
+ reply.type('application/json').send(await new BilibiliResult("BangumiVideoData" /* BilibiliDataType['番剧基本信息数据'] */, this.bilibili).result({ url }));
77
+ });
78
+ client.get('/api/bilibili/bangumivideodownloadlink', async (request, reply) => {
79
+ const { cid, ep_id } = request.query;
80
+ reply.type('application/json').send(await new BilibiliResult("BangumiVideoDownloadLinkData" /* BilibiliDataType['番剧下载信息数据'] */, this.bilibili).result({ cid, ep_id }));
81
+ });
82
+ client.get('/api/bilibili/dynamiclist', async (request, reply) => {
83
+ const host_mid = request.query.host_mid;
84
+ reply.type('application/json').send(await new BilibiliResult("UserDynamicListData" /* BilibiliDataType['用户主页动态列表数据'] */, this.bilibili).result({ host_mid }));
85
+ });
86
+ client.get('/api/bilibili/dynamicinfo', async (request, reply) => {
87
+ const dynamic_id = request.query.dynamic_id;
88
+ reply.type('application/json').send(await new BilibiliResult("DynamicInfoData" /* BilibiliDataType['动态详情数据'] */, this.bilibili).result({ dynamic_id }));
89
+ });
90
+ client.get('/api/bilibili/dynamicdard', async (request, reply) => {
91
+ const dynamic_id = request.query.dynamic_id;
92
+ reply.type('application/json').send(await new BilibiliResult("DynamicCardData" /* BilibiliDataType['动态卡片数据'] */, this.bilibili).result({ dynamic_id }));
93
+ });
94
+ client.get('/api/bilibili/userinfo', async (request, reply) => {
95
+ const host_mid = request.query.host_mid;
96
+ reply.type('application/json').send(await new BilibiliResult("UserInfoData" /* BilibiliDataType['用户主页数据'] */, this.bilibili).result({ host_mid }));
97
+ });
98
+ client.get('/api/bilibili/liveroominfo', async (request, reply) => {
99
+ const room_id = request.query.room_id;
100
+ reply.type('application/json').send(await new BilibiliResult("LiveRoomInfoData" /* BilibiliDataType['直播间信息'] */, this.bilibili).result({ room_id }));
101
+ });
102
+ client.get('/api/bilibili/liveroominit', async (request, reply) => {
103
+ const room_id = request.query.room_id;
104
+ reply.type('application/json').send(await new BilibiliResult("LiveRoomInitData" /* BilibiliDataType['直播间初始化信息'] */, this.bilibili).result({ room_id }));
105
+ });
106
+ // 返回 fastify 实例
107
+ return client;
108
+ }
123
109
  }
@@ -6,9 +6,9 @@ import { logger } from '../model/index.js';
6
6
  * @returns
7
7
  */
8
8
  export const StartClient = async (client, options) => {
9
- return client.listen({ port: options.port, host: '::' }, (_err, _address) => {
10
- if (_err)
11
- logger.error(_err);
12
- logger.info(`amagi server listening on http://localhost:${options.port}`);
13
- });
9
+ return client.listen({ port: options.port, host: '::' }, (_err, _address) => {
10
+ if (_err)
11
+ logger.error(_err);
12
+ logger.info(`amagi server listening on ${options.port} port. API docs: https://amagi.apifox.cn`);
13
+ });
14
14
  };
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@ikenxuan/amagi",
3
- "version": "1.5.4",
3
+ "version": "1.5.6",
4
4
  "type": "module",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
7
7
  "homepage": "https://github.com/ikenxuan/amagi",
8
8
  "scripts": {
9
9
  "dev": "tsx lib/dev.js",
10
- "build": "tsc --project tsconfig.json && tsc-alias -p tsconfig.json"
10
+ "fix": "eslint lib/**/*.js --fix && eslint lib/**/*.d.ts --fix",
11
+ "build": "tsc --project tsconfig.json && tsc-alias -p tsconfig.json && npm run fix"
11
12
  },
12
13
  "files": [
13
- "/lib/**/*.js",
14
- "/lib/**/*.d.ts",
15
- "amagi.openapi.json",
14
+ "lib/**/*.js",
15
+ "lib/**/*.d.ts",
16
16
  "LICENSE",
17
17
  "package.json",
18
18
  "README.md"
@@ -29,8 +29,6 @@
29
29
  "registry": "https://registry.npmjs.org"
30
30
  },
31
31
  "dependencies": {
32
- "@fastify/swagger": "^8.15.0",
33
- "@fastify/swagger-ui": "^4.0.1",
34
32
  "chalk": "^5.3.0",
35
33
  "chokidar": "^3.6.0",
36
34
  "fastify": "^4.28.1",
@@ -38,18 +36,18 @@
38
36
  "loglevel": "^1.9.1",
39
37
  "loglevel-plugin-prefix": "^0.8.4",
40
38
  "md5": "^2.3.0",
41
- "node-fetch": "^3.3.2",
42
- "sm-crypto-v2": "^1.9.1"
39
+ "node-fetch": "^3.3.2"
43
40
  },
44
41
  "devDependencies": {
45
42
  "@types/lodash": "latest",
46
43
  "@types/md5": "latest",
47
44
  "@types/node": "latest",
48
- "eslint": "latest",
49
- "neostandard": "latest",
45
+ "@typescript-eslint/parser": "^8.0.1",
46
+ "eslint": "^9.8.0",
47
+ "globals": "^15.9.0",
50
48
  "ts-node": "latest",
51
49
  "tsc-alias": "latest",
52
50
  "tsx": "latest",
53
- "typescript": "latest"
51
+ "typescript": "^5.5.3"
54
52
  }
55
53
  }