From 3582e0edf1230b78d352febab6619d221c45694d Mon Sep 17 00:00:00 2001 From: ikenxuan <2066855608@qq.com> Date: Fri, 4 Oct 2024 13:32:29 +0000 Subject: [PATCH] . --- amagi/lib/lib/business/bilibili/API.d.ts | 22 + amagi/lib/lib/business/bilibili/API.js | 51 ++ amagi/lib/lib/business/bilibili/getdata.d.ts | 9 + amagi/lib/lib/business/bilibili/getdata.js | 275 +++++++++++ amagi/lib/lib/business/bilibili/getid.d.ts | 6 + amagi/lib/lib/business/bilibili/getid.js | 43 ++ amagi/lib/lib/business/bilibili/index.d.ts | 8 + amagi/lib/lib/business/bilibili/index.js | 9 + amagi/lib/lib/business/bilibili/qtparam.d.ts | 13 + amagi/lib/lib/business/bilibili/qtparam.js | 17 + amagi/lib/lib/business/bilibili/result.d.ts | 15 + amagi/lib/lib/business/bilibili/result.js | 78 +++ .../bilibili/sign/CorrespondPath.d.ts | 1 + .../business/bilibili/sign/CorrespondPath.js | 12 + .../lib/lib/business/bilibili/sign/bv2av.d.ts | 2 + amagi/lib/lib/business/bilibili/sign/bv2av.js | 27 + amagi/lib/lib/business/bilibili/sign/wbi.d.ts | 1 + amagi/lib/lib/business/bilibili/sign/wbi.js | 56 +++ amagi/lib/lib/business/douyin/API.d.ts | 19 + amagi/lib/lib/business/douyin/API.js | 46 ++ amagi/lib/lib/business/douyin/getdata.d.ts | 9 + amagi/lib/lib/business/douyin/getdata.js | 200 ++++++++ amagi/lib/lib/business/douyin/getid.d.ts | 13 + amagi/lib/lib/business/douyin/getid.js | 50 ++ amagi/lib/lib/business/douyin/index.d.ts | 6 + amagi/lib/lib/business/douyin/index.js | 7 + amagi/lib/lib/business/douyin/result.d.ts | 9 + amagi/lib/lib/business/douyin/result.js | 50 ++ .../lib/lib/business/douyin/sign/a_bogus.d.ts | 2 + amagi/lib/lib/business/douyin/sign/a_bogus.js | 464 ++++++++++++++++++ amagi/lib/lib/business/douyin/sign/index.d.ts | 8 + amagi/lib/lib/business/douyin/sign/index.js | 29 ++ amagi/lib/lib/business/index.d.ts | 3 + amagi/lib/lib/business/index.js | 4 + amagi/lib/lib/business/xiaohongshu/AIP.d.ts | 14 + amagi/lib/lib/business/xiaohongshu/AIP.js | 17 + .../lib/lib/business/xiaohongshu/getdata.d.ts | 13 + amagi/lib/lib/business/xiaohongshu/getdata.js | 58 +++ amagi/lib/lib/business/xiaohongshu/index.d.ts | 5 + amagi/lib/lib/business/xiaohongshu/index.js | 6 + .../lib/lib/business/xiaohongshu/result.d.ts | 9 + amagi/lib/lib/business/xiaohongshu/result.js | 19 + .../xiaohongshu/sign/generateX_S.d.ts | 2 + .../business/xiaohongshu/sign/generateX_S.js | 207 ++++++++ .../xiaohongshu/sign/generateX_S_Common.d.ts | 6 + .../xiaohongshu/sign/generateX_S_Common.js | 141 ++++++ .../lib/business/xiaohongshu/sign/index.d.ts | 16 + .../lib/business/xiaohongshu/sign/index.js | 29 ++ amagi/lib/lib/index.d.ts | 6 + amagi/lib/lib/index.js | 7 + amagi/lib/lib/model/DataFetchers.d.ts | 40 ++ amagi/lib/lib/model/DataFetchers.js | 50 ++ amagi/lib/lib/model/dir.d.ts | 5 + amagi/lib/lib/model/dir.js | 10 + amagi/lib/lib/model/index.d.ts | 4 + amagi/lib/lib/model/index.js | 5 + amagi/lib/lib/model/logger.d.ts | 17 + amagi/lib/lib/model/logger.js | 56 +++ amagi/lib/lib/model/networks.d.ts | 32 ++ amagi/lib/lib/model/networks.js | 142 ++++++ amagi/lib/lib/server/client.d.ts | 50 ++ amagi/lib/lib/server/client.js | 245 +++++++++ amagi/lib/lib/server/index.d.ts | 2 + amagi/lib/lib/server/index.js | 3 + amagi/lib/lib/server/listen.d.ts | 13 + amagi/lib/lib/server/listen.js | 20 + amagi/lib/lib/test.d.ts | 1 + amagi/lib/lib/test.js | 19 + amagi/lib/lib/types/BilibiliAPIParams.d.ts | 103 ++++ amagi/lib/lib/types/BilibiliAPIParams.js | 2 + amagi/lib/lib/types/ConfigType.d.ts | 10 + amagi/lib/lib/types/ConfigType.js | 2 + amagi/lib/lib/types/DataType.d.ts | 47 ++ amagi/lib/lib/types/DataType.js | 2 + amagi/lib/lib/types/DouyinAPIParams.d.ts | 83 ++++ amagi/lib/lib/types/DouyinAPIParams.js | 2 + amagi/lib/lib/types/GetDataResponseType.d.ts | 17 + amagi/lib/lib/types/GetDataResponseType.js | 2 + amagi/lib/lib/types/NetworksConfigType.d.ts | 30 ++ amagi/lib/lib/types/NetworksConfigType.js | 2 + amagi/lib/lib/types/OptionsType.d.ts | 131 +++++ amagi/lib/lib/types/OptionsType.js | 2 + amagi/lib/lib/types/Request.d.ts | 8 + amagi/lib/lib/types/Request.js | 2 + amagi/lib/lib/types/XiaohongshuAPIParams.d.ts | 13 + amagi/lib/lib/types/XiaohongshuAPIParams.js | 2 + amagi/lib/lib/types/index.d.ts | 10 + amagi/lib/lib/types/index.js | 2 + 88 files changed, 3305 insertions(+) create mode 100644 amagi/lib/lib/business/bilibili/API.d.ts create mode 100644 amagi/lib/lib/business/bilibili/API.js create mode 100644 amagi/lib/lib/business/bilibili/getdata.d.ts create mode 100644 amagi/lib/lib/business/bilibili/getdata.js create mode 100644 amagi/lib/lib/business/bilibili/getid.d.ts create mode 100644 amagi/lib/lib/business/bilibili/getid.js create mode 100644 amagi/lib/lib/business/bilibili/index.d.ts create mode 100644 amagi/lib/lib/business/bilibili/index.js create mode 100644 amagi/lib/lib/business/bilibili/qtparam.d.ts create mode 100644 amagi/lib/lib/business/bilibili/qtparam.js create mode 100644 amagi/lib/lib/business/bilibili/result.d.ts create mode 100644 amagi/lib/lib/business/bilibili/result.js create mode 100644 amagi/lib/lib/business/bilibili/sign/CorrespondPath.d.ts create mode 100644 amagi/lib/lib/business/bilibili/sign/CorrespondPath.js create mode 100644 amagi/lib/lib/business/bilibili/sign/bv2av.d.ts create mode 100644 amagi/lib/lib/business/bilibili/sign/bv2av.js create mode 100644 amagi/lib/lib/business/bilibili/sign/wbi.d.ts create mode 100644 amagi/lib/lib/business/bilibili/sign/wbi.js create mode 100644 amagi/lib/lib/business/douyin/API.d.ts create mode 100644 amagi/lib/lib/business/douyin/API.js create mode 100644 amagi/lib/lib/business/douyin/getdata.d.ts create mode 100644 amagi/lib/lib/business/douyin/getdata.js create mode 100644 amagi/lib/lib/business/douyin/getid.d.ts create mode 100644 amagi/lib/lib/business/douyin/getid.js create mode 100644 amagi/lib/lib/business/douyin/index.d.ts create mode 100644 amagi/lib/lib/business/douyin/index.js create mode 100644 amagi/lib/lib/business/douyin/result.d.ts create mode 100644 amagi/lib/lib/business/douyin/result.js create mode 100644 amagi/lib/lib/business/douyin/sign/a_bogus.d.ts create mode 100644 amagi/lib/lib/business/douyin/sign/a_bogus.js create mode 100644 amagi/lib/lib/business/douyin/sign/index.d.ts create mode 100644 amagi/lib/lib/business/douyin/sign/index.js create mode 100644 amagi/lib/lib/business/index.d.ts create mode 100644 amagi/lib/lib/business/index.js create mode 100644 amagi/lib/lib/business/xiaohongshu/AIP.d.ts create mode 100644 amagi/lib/lib/business/xiaohongshu/AIP.js create mode 100644 amagi/lib/lib/business/xiaohongshu/getdata.d.ts create mode 100644 amagi/lib/lib/business/xiaohongshu/getdata.js create mode 100644 amagi/lib/lib/business/xiaohongshu/index.d.ts create mode 100644 amagi/lib/lib/business/xiaohongshu/index.js create mode 100644 amagi/lib/lib/business/xiaohongshu/result.d.ts create mode 100644 amagi/lib/lib/business/xiaohongshu/result.js create mode 100644 amagi/lib/lib/business/xiaohongshu/sign/generateX_S.d.ts create mode 100644 amagi/lib/lib/business/xiaohongshu/sign/generateX_S.js create mode 100644 amagi/lib/lib/business/xiaohongshu/sign/generateX_S_Common.d.ts create mode 100644 amagi/lib/lib/business/xiaohongshu/sign/generateX_S_Common.js create mode 100644 amagi/lib/lib/business/xiaohongshu/sign/index.d.ts create mode 100644 amagi/lib/lib/business/xiaohongshu/sign/index.js create mode 100644 amagi/lib/lib/index.d.ts create mode 100644 amagi/lib/lib/index.js create mode 100644 amagi/lib/lib/model/DataFetchers.d.ts create mode 100644 amagi/lib/lib/model/DataFetchers.js create mode 100644 amagi/lib/lib/model/dir.d.ts create mode 100644 amagi/lib/lib/model/dir.js create mode 100644 amagi/lib/lib/model/index.d.ts create mode 100644 amagi/lib/lib/model/index.js create mode 100644 amagi/lib/lib/model/logger.d.ts create mode 100644 amagi/lib/lib/model/logger.js create mode 100644 amagi/lib/lib/model/networks.d.ts create mode 100644 amagi/lib/lib/model/networks.js create mode 100644 amagi/lib/lib/server/client.d.ts create mode 100644 amagi/lib/lib/server/client.js create mode 100644 amagi/lib/lib/server/index.d.ts create mode 100644 amagi/lib/lib/server/index.js create mode 100644 amagi/lib/lib/server/listen.d.ts create mode 100644 amagi/lib/lib/server/listen.js create mode 100644 amagi/lib/lib/test.d.ts create mode 100644 amagi/lib/lib/test.js create mode 100644 amagi/lib/lib/types/BilibiliAPIParams.d.ts create mode 100644 amagi/lib/lib/types/BilibiliAPIParams.js create mode 100644 amagi/lib/lib/types/ConfigType.d.ts create mode 100644 amagi/lib/lib/types/ConfigType.js create mode 100644 amagi/lib/lib/types/DataType.d.ts create mode 100644 amagi/lib/lib/types/DataType.js create mode 100644 amagi/lib/lib/types/DouyinAPIParams.d.ts create mode 100644 amagi/lib/lib/types/DouyinAPIParams.js create mode 100644 amagi/lib/lib/types/GetDataResponseType.d.ts create mode 100644 amagi/lib/lib/types/GetDataResponseType.js create mode 100644 amagi/lib/lib/types/NetworksConfigType.d.ts create mode 100644 amagi/lib/lib/types/NetworksConfigType.js create mode 100644 amagi/lib/lib/types/OptionsType.d.ts create mode 100644 amagi/lib/lib/types/OptionsType.js create mode 100644 amagi/lib/lib/types/Request.d.ts create mode 100644 amagi/lib/lib/types/Request.js create mode 100644 amagi/lib/lib/types/XiaohongshuAPIParams.d.ts create mode 100644 amagi/lib/lib/types/XiaohongshuAPIParams.js create mode 100644 amagi/lib/lib/types/index.d.ts create mode 100644 amagi/lib/lib/types/index.js diff --git a/amagi/lib/lib/business/bilibili/API.d.ts b/amagi/lib/lib/business/bilibili/API.d.ts new file mode 100644 index 00000000..991ceba0 --- /dev/null +++ b/amagi/lib/lib/business/bilibili/API.d.ts @@ -0,0 +1,22 @@ +import { BilibiliDataOptionsMapKeys } from '../../types/index.js'; +declare class BiLiBiLiAPI { + 登录基本信息(): string; + 视频详细信息(data: BilibiliDataOptionsMapKeys['VideoInfoParams']): string; + 视频流信息(data: BilibiliDataOptionsMapKeys['VideoStreamParams']): string; + /** type参数详见https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/docs/comment/readme.md#评论区类型代码 */ + 评论区明细(data: BilibiliDataOptionsMapKeys['CommentParams']): string; + 表情列表(): string; + 番剧明细(data: BilibiliDataOptionsMapKeys['BangumiInfoParams']): string; + 番剧视频流信息(data: BilibiliDataOptionsMapKeys['BangumiStreamParams']): string; + 用户空间动态(data: BilibiliDataOptionsMapKeys['UserParams']): string; + 动态详情(data: BilibiliDataOptionsMapKeys['DynamicParams']): string; + 动态卡片信息(data: BilibiliDataOptionsMapKeys['DynamicParams']): string; + 用户名片信息(data: BilibiliDataOptionsMapKeys['UserParams']): string; + 直播间信息(data: BilibiliDataOptionsMapKeys['LiveRoomParams']): string; + 直播间初始化信息(data: BilibiliDataOptionsMapKeys['LiveRoomParams']): string; + 申请二维码(): string; + 二维码状态(data: BilibiliDataOptionsMapKeys['QrcodeParams']): string; +} +/** 该类下的所有方法只会返回拼接好参数后的 Url 地址,需要手动请求该地址以获取数据 */ +declare const _default: BiLiBiLiAPI; +export default _default; diff --git a/amagi/lib/lib/business/bilibili/API.js b/amagi/lib/lib/business/bilibili/API.js new file mode 100644 index 00000000..4f1c415f --- /dev/null +++ b/amagi/lib/lib/business/bilibili/API.js @@ -0,0 +1,51 @@ +class BiLiBiLiAPI { + 登录基本信息() { + return 'https://api.bilibili.com/x/web-interface/nav'; + } + 视频详细信息(data) { + return `https://api.bilibili.com/x/web-interface/view?${data.id_type === 'bvid' ? 'bvid=' + data.id : 'aid=' + data.id}`; + } + 视频流信息(data) { + return `https://api.bilibili.com/x/player/playurl?avid=${data.avid}&cid=${data.cid}`; + } + /** type参数详见https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/docs/comment/readme.md#评论区类型代码 */ + 评论区明细(data) { + return `https://api.bilibili.com/x/v2/reply?sort=1&ps=${data.number || 20}&type=${data.type}&oid=${data.oid}&pn=${data.pn}`; + } + 表情列表() { + return 'https://api.bilibili.com/x/emote/user/panel/web?business=reply&web_location=0.0'; + } + 番剧明细(data) { + return `https://api.bilibili.com/pgc/view/web/season?${data.isep ? 'ep_id' : 'season_id'}=${data.id}`; + } + 番剧视频流信息(data) { + return `https://api.bilibili.com/pgc/player/web/playurl?cid=${data.cid}&ep_id=${data.ep_id}`; + } + 用户空间动态(data) { + return `https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/space?host_mid=${data.host_mid}`; + } + 动态详情(data) { + return `https://api.bilibili.com/x/polymer/web-dynamic/v1/detail?id=${data.dynamic_id}`; + } + 动态卡片信息(data) { + return `https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/get_dynamic_detail?dynamic_id=${data.dynamic_id}`; + } + 用户名片信息(data) { + return `https://api.bilibili.com/x/web-interface/card?mid=${data.host_mid}&photo=true`; + } + 直播间信息(data) { + return `https://api.live.bilibili.com/room/v1/Room/get_info?room_id=${data.room_id}`; + } + 直播间初始化信息(data) { + return `https://api.live.bilibili.com/room/v1/Room/room_init?id=${data.room_id}`; + } + 申请二维码() { + return 'https://passport.bilibili.com/x/passport-login/web/qrcode/generate'; + } + 二维码状态(data) { + return `https://passport.bilibili.com/x/passport-login/web/qrcode/poll?qrcode_key=${data.qrcode_key}`; + } +} +/** 该类下的所有方法只会返回拼接好参数后的 Url 地址,需要手动请求该地址以获取数据 */ +export default new BiLiBiLiAPI(); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVBJLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1c2luZXNzL2JpbGliaWxpL0FQSS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFdBQVc7SUFFZixNQUFNO1FBQ0osT0FBTyw4Q0FBOEMsQ0FBQTtJQUN2RCxDQUFDO0lBRUQsTUFBTSxDQUFFLElBQW1EO1FBQ3pELE9BQU8saURBQWlELElBQUksQ0FBQyxPQUFPLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQTtJQUMxSCxDQUFDO0lBRUQsS0FBSyxDQUFFLElBQXFEO1FBQzFELE9BQU8sa0RBQWtELElBQUksQ0FBQyxJQUFJLFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ3RGLENBQUM7SUFFRCxnSEFBZ0g7SUFDaEgsS0FBSyxDQUFFLElBQWlEO1FBQ3RELE9BQU8saURBQWlELElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxTQUFTLElBQUksQ0FBQyxJQUFJLFFBQVEsSUFBSSxDQUFDLEdBQUcsT0FBTyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUE7SUFDN0gsQ0FBQztJQUVELElBQUk7UUFDRixPQUFPLGlGQUFpRixDQUFBO0lBQzFGLENBQUM7SUFFRCxJQUFJLENBQUUsSUFBcUQ7UUFDekQsT0FBTyxnREFBZ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFBO0lBQ3ZHLENBQUM7SUFFRCxPQUFPLENBQUUsSUFBdUQ7UUFDOUQsT0FBTyx1REFBdUQsSUFBSSxDQUFDLEdBQUcsVUFBVSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDOUYsQ0FBQztJQUVELE1BQU0sQ0FBRSxJQUE4QztRQUNwRCxPQUFPLHlFQUF5RSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDakcsQ0FBQztJQUVELElBQUksQ0FBRSxJQUFpRDtRQUNyRCxPQUFPLCtEQUErRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDekYsQ0FBQztJQUVELE1BQU0sQ0FBRSxJQUFpRDtRQUN2RCxPQUFPLHdGQUF3RixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDbEgsQ0FBQztJQUVELE1BQU0sQ0FBRSxJQUE4QztRQUNwRCxPQUFPLHFEQUFxRCxJQUFJLENBQUMsUUFBUSxhQUFhLENBQUE7SUFDeEYsQ0FBQztJQUVELEtBQUssQ0FBRSxJQUFrRDtRQUN2RCxPQUFPLCtEQUErRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDdEYsQ0FBQztJQUVELFFBQVEsQ0FBRSxJQUFrRDtRQUMxRCxPQUFPLDJEQUEyRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDbEYsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLG9FQUFvRSxDQUFBO0lBQzdFLENBQUM7SUFFRCxLQUFLLENBQUUsSUFBZ0Q7UUFDckQsT0FBTyw2RUFBNkUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQ3ZHLENBQUM7Q0FDRjtBQUNELGdEQUFnRDtBQUNoRCxlQUFlLElBQUksV0FBVyxFQUFFLENBQUEifQ== \ No newline at end of file diff --git a/amagi/lib/lib/business/bilibili/getdata.d.ts b/amagi/lib/lib/business/bilibili/getdata.d.ts new file mode 100644 index 00000000..d15b8bde --- /dev/null +++ b/amagi/lib/lib/business/bilibili/getdata.d.ts @@ -0,0 +1,9 @@ +import { BilibiliDataType, BilibiliOptionsType, NetworksConfigType } from '../../types/index.js'; +export default class BilibiliData { + type: keyof typeof BilibiliDataType; + headers: any; + URL: string | undefined; + constructor(type: keyof typeof BilibiliDataType, cookie: string | undefined); + GetData(data?: BilibiliOptionsType): Promise; + GlobalGetData(options: NetworksConfigType): Promise; +} diff --git a/amagi/lib/lib/business/bilibili/getdata.js b/amagi/lib/lib/business/bilibili/getdata.js new file mode 100644 index 00000000..10e4d589 --- /dev/null +++ b/amagi/lib/lib/business/bilibili/getdata.js @@ -0,0 +1,275 @@ +import { BiLiBiLiAPI, qtparam, } from '../../business/bilibili/index.js'; +import { Networks, logger } from '../../model/index.js'; +export default class BilibiliData { + type; + headers; + URL; + constructor(type, cookie) { + this.type = type; + this.headers = {}; + this.headers.Referer = 'https://api.bilibili.com/'; + this.headers.Cookie = cookie ? cookie.replace(/\s+/g, '') : ''; + this.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0'; + } + async GetData(data = {}) { + let result; + switch (this.type) { + case '单个视频作品数据': { + const INFODATA = await this.GlobalGetData({ url: BiLiBiLiAPI.视频详细信息({ id_type: 'bvid', id: data.id }) }); + return INFODATA; + } + case '单个视频下载信息数据': { + const BASEURL = BiLiBiLiAPI.视频流信息({ avid: data.avid, cid: data.cid }); + const SIGN = await qtparam(BASEURL, this.headers.Cookie); + const DATA = await this.GlobalGetData({ + url: BiLiBiLiAPI.视频流信息({ avid: data.avid, cid: data.cid }) + SIGN.QUERY, + headers: this.headers + }); + return DATA; + } + case '评论数据': { + let fetchedComments = []; + let pn = data.pn || 1; // 页码从1开始 + const maxRequestCount = 100; // 设置一个最大请求次数限制 + const commentGrowthStabilized = 5; // 设置一个连续几次请求评论增长相同的阈值 + let lastFetchedCount = 0; // 上一次请求获取的评论数量 + let stabilizedCount = 0; // 连续几次请求评论增长相同的计数器 + let requestCount = 0; // 初始化请求计数器 + let tmpresp; + if (!data.bvid) { + while (fetchedComments.length < Number(data.number || 20) && requestCount < maxRequestCount) { + if (data.number === 0) { + // 如果请求的评论数量为0,那么不需要进行请求 + requestCount = 0; + } + else { + // 否则,计算需要请求的评论数量 + requestCount = Math.min(20, Number(data.number) - fetchedComments.length); + } + const url = BiLiBiLiAPI.评论区明细({ + type: data.type, + oid: data.oid, + number: requestCount, + pn + }); + const response = await this.GlobalGetData({ + url: url, + headers: this.headers + }); + tmpresp = response; + // 当请求0条评论的时候,replies为null,需额外判断 + const currentCount = response.data.replies ? response.data.replies.length : 0; + fetchedComments.push(...(response.data.replies || [])); + // 检查评论增长是否稳定 + if (currentCount === lastFetchedCount) { + stabilizedCount++; + } + else { + stabilizedCount = 0; + } + lastFetchedCount = currentCount; + // 如果增长稳定,并且增长量为0,或者请求次数达到最大值,则停止请求 + if (stabilizedCount >= commentGrowthStabilized || requestCount >= maxRequestCount) { + break; + } + pn++; + requestCount++; + } + } + else { + const INFODATA = await this.GlobalGetData({ url: BiLiBiLiAPI.视频详细信息({ id_type: 'bvid', id: data.bvid }) }); + while (fetchedComments.length < Number(data.number || 20) && requestCount < maxRequestCount) { + let requestCount = Math.min(20, Number(data.number) - fetchedComments.length); + const url = BiLiBiLiAPI.评论区明细({ + type: data.type, + oid: INFODATA.data.oid, + number: requestCount, + pn + }); + const response = await this.GlobalGetData({ + url: url, + headers: this.headers + }); + tmpresp = response; + // 当请求0条评论的时候,replies为null,需额外判断 + const currentCount = response.data.replies ? response.data.replies.length : 0; + fetchedComments.push(...(response.data.replies || [])); + // 检查评论增长是否稳定 + if (currentCount === lastFetchedCount) { + stabilizedCount++; + } + else { + stabilizedCount = 0; + } + lastFetchedCount = currentCount; + // 如果增长稳定,并且增长量为0,或者请求次数达到最大值,则停止请求 + if (stabilizedCount >= commentGrowthStabilized || requestCount >= maxRequestCount) { + break; + } + pn++; + requestCount++; + } + } + const finalResponse = { + ...tmpresp, + data: { + ...tmpresp.data, + // 去重 + replies: Array.from(new Map(fetchedComments.map(item => [item.rpid, item])).values()).slice(0, Number(data.number)) + } + }; + return finalResponse; + } + case 'emoji数据': + return await this.GlobalGetData({ url: BiLiBiLiAPI.表情列表() }); + case '番剧基本信息数据': { + let isep; + if (data?.id?.startsWith('ss')) { + data.id = data.id.replace('ss', ''); + isep = false; + } + else if (data?.id?.startsWith('ep')) { + data.id = data?.id?.replace('ep', ''); + isep = true; + } + const INFO = await this.GlobalGetData({ + url: BiLiBiLiAPI.番剧明细({ id: data.id, isep }), + headers: this.headers + }); + return INFO; + } + case '番剧下载信息数据': + return await this.GlobalGetData({ url: BiLiBiLiAPI.番剧视频流信息({ cid: data.cid, ep_id: data.ep_id }) }); + case '用户主页动态列表数据': + delete this.headers.Referer; + result = await this.GlobalGetData({ + url: BiLiBiLiAPI.用户空间动态({ host_mid: data.host_mid }), + headers: this.headers + }); + return result; + case '动态详情数据': { + delete this.headers.Referer; + const dynamicINFO = await this.GlobalGetData({ + url: BiLiBiLiAPI.动态详情({ dynamic_id: data.dynamic_id }), + headers: this.headers + }); + return dynamicINFO; + } + case '动态卡片数据': { + delete this.headers.Referer; + const dynamicINFO_CARD = await this.GlobalGetData({ + url: BiLiBiLiAPI.动态卡片信息({ dynamic_id: data.dynamic_id }), + headers: this.headers + }); + return dynamicINFO_CARD; + } + case '用户主页数据': { + result = await this.GlobalGetData({ + url: BiLiBiLiAPI.用户名片信息({ host_mid: data.host_mid }), + headers: this.headers + }); + return result; + } + case '直播间信息': { + result = await this.GlobalGetData({ + url: BiLiBiLiAPI.直播间信息({ room_id: data.room_id }), + headers: this.headers + }); + return result; + } + case '直播间初始化信息': { + result = await this.GlobalGetData({ + url: BiLiBiLiAPI.直播间初始化信息({ room_id: data.room_id }), + headers: this.headers + }); + return result; + } + case '申请二维码': { + result = await this.GlobalGetData({ + url: BiLiBiLiAPI.申请二维码(), + headers: this.headers + }); + return result; + } + case '二维码状态': { + result = await new Networks({ + url: BiLiBiLiAPI.二维码状态({ qrcode_key: data.qrcode_key }), + headers: this.headers + }).getHeadersAndData(); + return result; + } + case '登录基本信息': { + result = await this.GlobalGetData({ + url: BiLiBiLiAPI.登录基本信息(), + headers: this.headers + }); + return result; + } + default: + return null; + } + } + async GlobalGetData(options) { + const result = await new Networks(options).getData(); + if (result && result.code !== 0) { + const errorMessage = errorMap[result.code] || '未知错误'; + logger.warn(`获取响应数据失败!\n请求接口类型:${this.type}\n请求URL:${options.url}\n错误代码:${result.code},\n含义:${errorMessage}`); + return result; + } + else { + return result; + } + } +} +const errorMap = { + '-1': '应用程序不存在或已被封禁', + '-2': 'Access Key 错误', + '-3': 'API 校验密匙错误', + '-4': '调用方对该 Method 没有权限', + '-101': '账号未登录', + '-102': '账号被封停', + '-103': '积分不足', + '-104': '硬币不足', + '-105': '验证码错误', + '-106': '账号非正式会员或在适应期', + '-107': '应用不存在或者被封禁', + '-108': '未绑定手机', + '-110': '未绑定手机', + '-111': 'csrf 校验失败', + '-112': '系统升级中', + '-113': '账号尚未实名认证', + '-114': '请先绑定手机', + '-115': '请先完成实名认证', + '-304': '木有改动', + '-307': '撞车跳转', + '-352': '风控校验失败 (UA 或 wbi 参数不合法)', + '-400': '请求错误', + '-401': '未认证 (或非法请求)', + '-403': '访问权限不足', + '-404': '啥都木有', + '-405': '不支持该方法', + '-409': '冲突', + '-412': '请求被拦截 (客户端 ip 被服务端风控)', + '-500': '服务器错误', + '-503': '过载保护,服务暂不可用', + '-504': '服务调用超时', + '-509': '超出限制', + '-616': '上传文件不存在', + '-617': '上传文件太大', + '-625': '登录失败次数太多', + '-626': '用户不存在', + '-628': '密码太弱', + '-629': '用户名或密码错误', + '-632': '操作对象数量限制', + '-643': '被锁定', + '-650': '用户等级太低', + '-652': '重复的用户', + '-658': 'Token 过期', + '-662': '密码时间戳过期', + '-688': '地理区域限制', + '-689': '版权限制', + '-701': '扣节操失败', + '-799': '请求过于频繁,请稍后再试', + '-8888': '对不起,服务器开小差了~ (ಥ﹏ಥ)' +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0ZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9idXNpbmVzcy9iaWxpYmlsaS9nZXRkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxHQUFHLE1BQU0seUJBQXlCLENBQUE7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFPOUMsTUFBTSxDQUFDLE9BQU8sT0FBTyxZQUFZO0lBQy9CLElBQUksQ0FBK0I7SUFDbkMsT0FBTyxDQUFLO0lBQ1osR0FBRyxDQUFvQjtJQUN2QixZQUFhLElBQW1DLEVBQUUsTUFBMEI7UUFDMUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsMkJBQTJCLENBQUE7UUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQzlELElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsK0hBQStILENBQUE7SUFDOUosQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUUsT0FBTyxFQUF5QjtRQUM3QyxJQUFJLE1BQVcsQ0FBQTtRQUNmLFFBQVEsSUFBSSxDQUFDLElBQXFDLEVBQUUsQ0FBQztZQUNuRCxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hCLE1BQU0sUUFBUSxHQUFRLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUs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 \ No newline at end of file diff --git a/amagi/lib/lib/business/bilibili/getid.d.ts b/amagi/lib/lib/business/bilibili/getid.d.ts new file mode 100644 index 00000000..7733289e --- /dev/null +++ b/amagi/lib/lib/business/bilibili/getid.d.ts @@ -0,0 +1,6 @@ +/** + * return aweme_id + * @param {string} url 分享连接 + * @returns + */ +export default function GetBilibiliID(url: string): Promise; diff --git a/amagi/lib/lib/business/bilibili/getid.js b/amagi/lib/lib/business/bilibili/getid.js new file mode 100644 index 00000000..1ce02808 --- /dev/null +++ b/amagi/lib/lib/business/bilibili/getid.js @@ -0,0 +1,43 @@ +import { Networks, logger } from '../../model/index.js'; +/** + * return aweme_id + * @param {string} url 分享连接 + * @returns + */ +export default async function GetBilibiliID(url) { + const longLink = await new Networks({ url }).getLongLink(); + let result = {}; + switch (true) { + case /video\/([A-Za-z0-9]+)/.test(longLink): { + const bvideoMatch = longLink.match(/video\/([A-Za-z0-9]+)/); + result = { + type: "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E" /* BilibiliDataType.单个视频作品数据 */, + id: bvideoMatch ? bvideoMatch[1] : '' + }; + break; + } + case /play\/(\S+?)\??/.test(longLink): { + const playMatch = longLink.match(/play\/(\w+)/); + result = { + type: "\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E" /* BilibiliDataType.番剧基本信息数据 */, + id: playMatch ? playMatch[1] : '' + }; + break; + } + case /^https:\/\/t\.bilibili\.com\/(\d+)/.test(longLink) || /^https:\/\/www\.bilibili\.com\/opus\/(\d+)/.test(longLink): { + const tMatch = longLink.match(/^https:\/\/t\.bilibili\.com\/(\d+)/); + const opusMatch = longLink.match(/^https:\/\/www\.bilibili\.com\/opus\/(\d+)/); + const dynamic_id = tMatch || opusMatch; + result = { + type: "\u52A8\u6001\u8BE6\u60C5\u6570\u636E" /* BilibiliDataType.动态详情数据 */, + dynamic_id: dynamic_id ? dynamic_id[1] : '' + }; + break; + } + default: + break; + } + logger.mark(result); + return result; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0aWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVzaW5lc3MvYmlsaWJpbGkvZ2V0aWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFzQjlDOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssVUFBVSxhQUFhLENBQUUsR0FBVztJQUN0RCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUMxRCxJQUFJLE1BQU0sR0FBRyxFQUFpQixDQUFBO0lBRTlCLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDYixLQUFLLHVCQUF1QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1lBQzNELE1BQU0sR0FBRztnQkFDUCxJQUFJLG9GQUEyQjtnQkFDL0IsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2FBQ3RDLENBQUE7WUFDRCxNQUFLO1FBQ1AsQ0FBQztRQUNELEtBQUssaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBQy9DLE1BQU0sR0FBRztnQkFDUCxJQUFJLG9GQUEyQjtnQkFDL0IsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2FBQ2xDLENBQUE7WUFDRCxNQUFLO1FBQ1AsQ0FBQztRQUNELEtBQUssb0NBQW9DLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLDRDQUE0QyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEgsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFBO1lBQ25FLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQTtZQUM5RSxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksU0FBUyxDQUFBO1lBQ3RDLE1BQU0sR0FBRztnQkFDUCxJQUFJLHNFQUF5QjtnQkFDN0IsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2FBQzVDLENBQUE7WUFDRCxNQUFLO1FBQ1AsQ0FBQztRQUNEO1lBQ0UsTUFBSztJQUNULENBQUM7SUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ25CLE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyJ9 \ No newline at end of file diff --git a/amagi/lib/lib/business/bilibili/index.d.ts b/amagi/lib/lib/business/bilibili/index.d.ts new file mode 100644 index 00000000..fe2b5ea4 --- /dev/null +++ b/amagi/lib/lib/business/bilibili/index.d.ts @@ -0,0 +1,8 @@ +import BiLiBiLiAPI from './API.js'; +import BilibiliData from './getdata.js'; +import GetBilibiliID from './getid.js'; +import qtparam from './qtparam.js'; +import BilibiliResult from './result.js'; +import wbi_sign from './sign/wbi.js'; +export { av2bv, bv2av } from './sign/bv2av.js'; +export { BiLiBiLiAPI, BilibiliData, BilibiliResult, GetBilibiliID, qtparam, wbi_sign }; diff --git a/amagi/lib/lib/business/bilibili/index.js b/amagi/lib/lib/business/bilibili/index.js new file mode 100644 index 00000000..a98a019c --- /dev/null +++ b/amagi/lib/lib/business/bilibili/index.js @@ -0,0 +1,9 @@ +import BiLiBiLiAPI from './API.js'; +import BilibiliData from './getdata.js'; +import GetBilibiliID from './getid.js'; +import qtparam from './qtparam.js'; +import BilibiliResult from './result.js'; +import wbi_sign from './sign/wbi.js'; +export { av2bv, bv2av } from './sign/bv2av.js'; +export { BiLiBiLiAPI, BilibiliData, BilibiliResult, GetBilibiliID, qtparam, wbi_sign }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVzaW5lc3MvYmlsaWJpbGkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxXQUFXLE1BQU0sT0FBTyxDQUFBO0FBQy9CLE9BQU8sWUFBWSxNQUFNLFdBQVcsQ0FBQTtBQUNwQyxPQUFPLGFBQWEsTUFBTSxTQUFTLENBQUE7QUFDbkMsT0FBTyxPQUFPLE1BQU0sV0FBVyxDQUFBO0FBQy9CLE9BQU8sY0FBYyxNQUFNLFVBQVUsQ0FBQTtBQUNyQyxPQUFPLFFBQVEsTUFBTSxZQUFZLENBQUE7QUFFakMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUEifQ== \ No newline at end of file diff --git a/amagi/lib/lib/business/bilibili/qtparam.d.ts b/amagi/lib/lib/business/bilibili/qtparam.d.ts new file mode 100644 index 00000000..5b5a2a10 --- /dev/null +++ b/amagi/lib/lib/business/bilibili/qtparam.d.ts @@ -0,0 +1,13 @@ +export default function qtparam(BASEURL: string, cookie: string): Promise<{ + QUERY: string; + STATUS: string; + isvip?: undefined; +} | { + QUERY: string; + STATUS: string; + isvip: true; +} | { + QUERY: string; + STATUS: string; + isvip: false; +}>; diff --git a/amagi/lib/lib/business/bilibili/qtparam.js b/amagi/lib/lib/business/bilibili/qtparam.js new file mode 100644 index 00000000..15248ad9 --- /dev/null +++ b/amagi/lib/lib/business/bilibili/qtparam.js @@ -0,0 +1,17 @@ +import { BiLiBiLiAPI, wbi_sign } from '../../business/bilibili/index.js'; +import { Networks } from '../../model/index.js'; +export default async function qtparam(BASEURL, cookie) { + if (cookie == '') + return { QUERY: '&platform=html5', STATUS: '!isLogin' }; + const logininfo = await new Networks({ url: BiLiBiLiAPI.登录基本信息(), headers: { Cookie: cookie } }).getData(); + const sign = await wbi_sign(BASEURL, cookie); + const qn = [6, 16, 32, 64, 74, 80, 112, 116, 120, 125, 126, 127]; + let isvip; + logininfo.data.vipStatus === 1 ? (isvip = true) : (isvip = false); + if (isvip) { + return { QUERY: `&fnval=16&fourk=1&${sign}`, STATUS: 'isLogin', isvip }; + } + else + return { QUERY: `&qn=${qn[3]}&fnval=16`, STATUS: 'isLogin', isvip }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXRwYXJhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9idXNpbmVzcy9iaWxpYmlsaS9xdHBhcmFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV0QyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssVUFBVSxPQUFPLENBQUUsT0FBZSxFQUFFLE1BQWM7SUFDcEUsSUFBSSxNQUFNLElBQUksRUFBRTtRQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFBO0lBQ3pFLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDMUcsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBRTVDLE1BQU0sRUFBRSxHQUFHLENBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUUsQ0FBQTtJQUNsRSxJQUFJLEtBQUssQ0FBQTtJQUNULFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFBO0lBQ2pFLElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFBO0lBQ3pFLENBQUM7O1FBQU0sT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUE7QUFDNUUsQ0FBQyJ9 \ No newline at end of file diff --git a/amagi/lib/lib/business/bilibili/result.d.ts b/amagi/lib/lib/business/bilibili/result.d.ts new file mode 100644 index 00000000..d3ac41c1 --- /dev/null +++ b/amagi/lib/lib/business/bilibili/result.d.ts @@ -0,0 +1,15 @@ +import { BilibiliDataType, BilibiliOptionsType, GetDataResponseType } from '../../types/index.js'; +interface configParams { + /** 请求数据的类型 */ + type: keyof typeof BilibiliDataType; + /** B站用户ck */ + cookie: string | undefined; +} +/** + * + * @param options + * @param config + * @returns + */ +export default function BilibiliResult(config?: configParams, options?: BilibiliOptionsType): Promise; +export {}; diff --git a/amagi/lib/lib/business/bilibili/result.js b/amagi/lib/lib/business/bilibili/result.js new file mode 100644 index 00000000..02ebe53d --- /dev/null +++ b/amagi/lib/lib/business/bilibili/result.js @@ -0,0 +1,78 @@ +import { BilibiliData, GetBilibiliID, av2bv, bv2av } from '../../business/bilibili/index.js'; +/** + * + * @param options + * @param config + * @returns + */ +export default async function BilibiliResult(config = { cookie: '' }, options) { + let data; + switch (config.type) { + case "\u7528\u6237\u4E3B\u9875\u6570\u636E" /* BilibiliDataType.用户主页数据 */: + case "emoji\u6570\u636E" /* BilibiliDataType.emoji数据 */: + case "\u8BC4\u8BBA\u6570\u636E" /* BilibiliDataType.评论数据 */: + case "\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E" /* BilibiliDataType.番剧下载信息数据 */: + case "\u7528\u6237\u4E3B\u9875\u52A8\u6001\u5217\u8868\u6570\u636E" /* BilibiliDataType.用户主页动态列表数据 */: + case "\u52A8\u6001\u8BE6\u60C5\u6570\u636E" /* BilibiliDataType.动态详情数据 */: + case "\u52A8\u6001\u5361\u7247\u6570\u636E" /* BilibiliDataType.动态卡片数据 */: + case "\u76F4\u64AD\u95F4\u4FE1\u606F" /* BilibiliDataType.直播间信息 */: + case "\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F" /* BilibiliDataType.直播间初始化信息 */: + case "\u4E8C\u7EF4\u7801\u72B6\u6001" /* BilibiliDataType.二维码状态 */: + case "\u7533\u8BF7\u4E8C\u7EF4\u7801" /* BilibiliDataType.申请二维码 */: + case "\u767B\u5F55\u57FA\u672C\u4FE1\u606F" /* BilibiliDataType.登录基本信息 */: { + data = await new BilibiliData(config.type, config.cookie).GetData(options); + break; + } + case "\u5355\u4E2A\u89C6\u9891\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E" /* BilibiliDataType.单个视频下载信息数据 */: { + if (!options?.url) { + data = await new BilibiliData(config.type, config.cookie).GetData(options); + } + else { + const iddata = await GetBilibiliID(options?.url); + const infoData = await new BilibiliData("\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E" /* BilibiliDataType.单个视频作品数据 */, config.cookie).GetData(iddata); + data = await new BilibiliData(config.type, config.cookie).GetData({ avid: infoData.data.aid, cid: infoData.data.cid }); + } + break; + } + case "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E" /* BilibiliDataType.单个视频作品数据 */: { + if (!options?.url) { + data = await new BilibiliData(config.type, config.cookie).GetData(options); + } + else { + const iddata = await GetBilibiliID(options?.url); + data = await new BilibiliData(config.type, config.cookie).GetData(iddata); + } + break; + } + case "\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E" /* BilibiliDataType.番剧基本信息数据 */: { + const hasid = options?.id || null; + if (hasid) { + data = await new BilibiliData(config.type, config.cookie).GetData({ id: options?.id }); + } + else { + const iddata = await GetBilibiliID(options?.url); + data = await new BilibiliData(config.type, config.cookie).GetData(iddata); + } + break; + } + case 'AV转BV': { + const replaceavid = options?.avid?.toString() ? (options?.avid?.toString()).replace(/^av/i, '') : ''; + data = av2bv(Number(replaceavid)); + break; + } + case 'BV转AV': { + const bvid = options?.bvid || ''; + data = 'av' + bv2av(bvid); + break; + } + default: + data = ''; + break; + } + return { + code: data !== '' ? 200 : 503, + message: data !== '' ? 'success' : 'error', + data: data !== '' ? data : null + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1c2luZXNzL2JpbGliaWxpL3Jlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFXbkY7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssVUFBVSxjQUFjLENBQzFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFrQixFQUN2QyxPQUE2QjtJQUM3QixJQUFJLElBQVMsQ0FBQTtJQUNiLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLDBFQUE2QjtRQUM3Qix3REFBOEI7UUFDOUIsNERBQTJCO1FBQzNCLHdGQUErQjtRQUMvQixzR0FBaUM7UUFDakMsMEVBQTZCO1FBQzdCLDBFQUE2QjtRQUM3QixtRUFBNEI7UUFDNUIsd0ZBQStCO1FBQy9CLG1FQUE0QjtRQUM1QixtRUFBNEI7UUFDNUIseUVBQTRCLENBQUMsQ0FBQyxDQUFDO1lBQzdCLElBQUksR0FBRyxNQUFNLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDcEYsTUFBSztRQUNQLENBQUM7UUFDRCxxR0FBZ0MsQ0FBQyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxHQUFHLE1BQU0sSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUN0RixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxNQUFNLEdBQUcsTUFBTSxhQUFhLENBQUMsT0FBTyxFQUFFLEdBQWEsQ0FBQyxDQUFBO2dCQUMxRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksWUFBWSxxRkFBNEIsTUFBTSxDQUFDLE1BQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7Z0JBQzNHLElBQUksR0FBRyxNQUFNLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQTtZQUVsSSxDQUFDO1lBQ0QsTUFBSztRQUNQLENBQUM7UUFDRCx1RkFBOEIsQ0FBQyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxHQUFHLE1BQU0sSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUN0RixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxNQUFNLEdBQUcsTUFBTSxhQUFhLENBQUMsT0FBTyxFQUFFLEdBQWEsQ0FBQyxDQUFBO2dCQUMxRCxJQUFJLEdBQUcsTUFBTSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ3JGLENBQUM7WUFDRCxNQUFLO1FBQ1AsQ0FBQztRQUNELHVGQUE4QixDQUFDLENBQUMsQ0FBQztZQUMvQixNQUFNLEtBQUssR0FBRyxPQUFPLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQTtZQUNqQyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLElBQUksR0FBRyxNQUFNLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDbEcsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUFDLE9BQU8sRUFBRSxHQUFhLENBQUMsQ0FBQTtnQkFDMUQsSUFBSSxHQUFHLE1BQU0sSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNyRixDQUFDO1lBQ0QsTUFBSztRQUNQLENBQUM7UUFDRCxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDYixNQUFNLFdBQVcsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFhLENBQUEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7WUFDOUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQTtZQUNqQyxNQUFLO1FBQ1AsQ0FBQztRQUNELEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNiLE1BQU0sSUFBSSxHQUFHLE9BQU8sRUFBRSxJQUFJLElBQUksRUFBRSxDQUFBO1lBQ2hDLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3pCLE1BQUs7UUFDUCxDQUFDO1FBQ0Q7WUFDRSxJQUFJLEdBQUcsRUFBRSxDQUFBO1lBQ1QsTUFBSztJQUNULENBQUM7SUFDRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRztRQUM3QixPQUFPLEVBQUUsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPO1FBQzFDLElBQUksRUFBRSxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7S0FDaEMsQ0FBQTtBQUNILENBQUMifQ== \ No newline at end of file diff --git a/amagi/lib/lib/business/bilibili/sign/CorrespondPath.d.ts b/amagi/lib/lib/business/bilibili/sign/CorrespondPath.d.ts new file mode 100644 index 00000000..ee303aed --- /dev/null +++ b/amagi/lib/lib/business/bilibili/sign/CorrespondPath.d.ts @@ -0,0 +1 @@ +export default function getCorrespondPath(timestamp: number): Promise; diff --git a/amagi/lib/lib/business/bilibili/sign/CorrespondPath.js b/amagi/lib/lib/business/bilibili/sign/CorrespondPath.js new file mode 100644 index 00000000..f5ea8bd5 --- /dev/null +++ b/amagi/lib/lib/business/bilibili/sign/CorrespondPath.js @@ -0,0 +1,12 @@ +import crypto from 'crypto'; +const publicKey = await crypto.subtle.importKey('jwk', { + kty: 'RSA', + n: 'y4HdjgJHBlbaBN04VERG4qNBIFHP6a3GozCl75AihQloSWCXC5HDNgyinEnhaQ_4-gaMud_GF50elYXLlCToR9se9Z8z433U3KjM-3Yx7ptKkmQNAMggQwAVKgq3zYAoidNEWuxpkY_mAitTSRLnsJW-NCTa0bqBFF6Wm1MxgfE', + e: 'AQAB' +}, { name: 'RSA-OAEP', hash: 'SHA-256' }, true, ['encrypt']); +export default async function getCorrespondPath(timestamp) { + const data = new TextEncoder().encode(`refresh_${timestamp}`); + const encrypted = new Uint8Array(await crypto.subtle.encrypt({ name: 'RSA-OAEP' }, publicKey, data)); + return encrypted.reduce((str, c) => str + c.toString(16).padStart(2, '0'), ''); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29ycmVzcG9uZFBhdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYnVzaW5lc3MvYmlsaWJpbGkvc2lnbi9Db3JyZXNwb25kUGF0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUE7QUFFM0IsTUFBTSxTQUFTLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FDN0MsS0FBSyxFQUNMO0lBQ0UsR0FBRyxFQUFFLEtBQUs7SUFDVixDQUFDLEVBQUUsNktBQTZLO0lBQ2hMLENBQUMsRUFBRSxNQUFNO0NBQ1YsRUFDRCxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUNyQyxJQUFJLEVBQ0osQ0FBRSxTQUFTLENBQUUsQ0FDZCxDQUFBO0FBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBQUUsU0FBaUI7SUFDaEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQzdELE1BQU0sU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDcEcsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUNoRixDQUFDIn0= \ No newline at end of file diff --git a/amagi/lib/lib/business/bilibili/sign/bv2av.d.ts b/amagi/lib/lib/business/bilibili/sign/bv2av.d.ts new file mode 100644 index 00000000..70b3cfa8 --- /dev/null +++ b/amagi/lib/lib/business/bilibili/sign/bv2av.d.ts @@ -0,0 +1,2 @@ +export declare function av2bv(aid: number): `BV1${string}`; +export declare function bv2av(bvid: string): number; diff --git a/amagi/lib/lib/business/bilibili/sign/bv2av.js b/amagi/lib/lib/business/bilibili/sign/bv2av.js new file mode 100644 index 00000000..bf49bf98 --- /dev/null +++ b/amagi/lib/lib/business/bilibili/sign/bv2av.js @@ -0,0 +1,27 @@ +const XOR_CODE = 23442827791579n; +const MASK_CODE = 2251799813685247n; +const MAX_AID = 1n << 51n; +const BASE = 58n; +const data = 'FcwAPNKTMug3GV5Lj7EJnHpWsx4tb8haYeviqBz6rkCy12mUSDQX9RdoZf'; +export function av2bv(aid) { + const bytes = ['B', 'V', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0']; + let bvIndex = bytes.length - 1; + let tmp = (MAX_AID | BigInt(aid)) ^ XOR_CODE; + while (tmp > 0) { + bytes[bvIndex] = data[Number(tmp % BigInt(BASE))]; + tmp = tmp / BASE; + bvIndex -= 1; + } + [bytes[3], bytes[9]] = [bytes[9], bytes[3]]; + [bytes[4], bytes[7]] = [bytes[7], bytes[4]]; + return bytes.join(''); +} +export function bv2av(bvid) { + const bvidArr = Array.from(bvid); + [bvidArr[3], bvidArr[9]] = [bvidArr[9], bvidArr[3]]; + [bvidArr[4], bvidArr[7]] = [bvidArr[7], bvidArr[4]]; + bvidArr.splice(0, 3); + const tmp = bvidArr.reduce((pre, bvidChar) => pre * BASE + BigInt(data.indexOf(bvidChar)), 0n); + return Number((tmp & MASK_CODE) ^ XOR_CODE); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnYyYXYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYnVzaW5lc3MvYmlsaWJpbGkvc2lnbi9idjJhdi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUE7QUFDaEMsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUE7QUFDbkMsTUFBTSxPQUFPLEdBQUcsRUFBRSxJQUFJLEdBQUcsQ0FBQTtBQUN6QixNQUFNLElBQUksR0FBRyxHQUFHLENBQUE7QUFFaEIsTUFBTSxJQUFJLEdBQUcsNERBQTRELENBQUE7QUFFekUsTUFBTSxVQUFVLEtBQUssQ0FBRSxHQUFXO0lBQ2hDLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUMxRSxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtJQUM5QixJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUE7SUFDNUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDZixLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNqRCxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQTtRQUNoQixPQUFPLElBQUksQ0FBQyxDQUFBO0lBQ2QsQ0FBQztJQUNELENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzNDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQW1CLENBQUE7QUFDekMsQ0FBQztBQUVELE1BQU0sVUFBVSxLQUFLLENBQUUsSUFBWTtJQUNqQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ25ELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3BCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDOUYsT0FBTyxNQUFNLENBQUMsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUE7QUFDN0MsQ0FBQyJ9 \ No newline at end of file diff --git a/amagi/lib/lib/business/bilibili/sign/wbi.d.ts b/amagi/lib/lib/business/bilibili/sign/wbi.d.ts new file mode 100644 index 00000000..42f02b8d --- /dev/null +++ b/amagi/lib/lib/business/bilibili/sign/wbi.d.ts @@ -0,0 +1 @@ +export default function wbi_sign(BASEURL: string | URL, cookie: string): Promise; diff --git a/amagi/lib/lib/business/bilibili/sign/wbi.js b/amagi/lib/lib/business/bilibili/sign/wbi.js new file mode 100644 index 00000000..463a8329 --- /dev/null +++ b/amagi/lib/lib/business/bilibili/sign/wbi.js @@ -0,0 +1,56 @@ +import axios from 'axios'; +import crypto from 'crypto'; +const mixinKeyEncTab = [ + 46, 47, 18, 2, 53, 8, 23, 32, 15, 50, 10, 31, 58, 3, 45, 35, 27, 43, 5, 49, 33, 9, 42, 19, 29, 28, 14, 39, 12, 38, 41, 13, 37, 48, 7, 16, 24, 55, 40, 61, 26, + 17, 0, 1, 60, 51, 30, 4, 22, 25, 54, 21, 56, 59, 6, 63, 57, 62, 11, 36, 20, 34, 44, 52 +]; +// 对 imgKey 和 subKey 进行字符顺序打乱编码 +const getMixinKey = (orig) => mixinKeyEncTab + .map((n) => orig[n]) + .join('') + .slice(0, 32); +// 为请求参数进行 wbi 签名 +function encWbi(params, img_key, sub_key) { + const mixin_key = getMixinKey(img_key + sub_key); + const curr_time = Math.round(Date.now() / 1000); + const chr_filter = /[!'()*]/g; + Object.assign(params, { wts: curr_time }); // 添加 wts 字段 + // 按照 key 重排参数 + const query = Object.keys(params) + .sort() + .map((key) => { + // 过滤 value 中的 "!'()*" 字符 + const value = params[key].toString().replace(chr_filter, ''); + return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`; + }) + .join('&'); + const wbi_sign = crypto.createHash('md5').update(query + mixin_key).digest('hex'); // 计算 w_rid + return `&wts=${curr_time}` + `&w_rid=${wbi_sign}`; +} +// 获取最新的 img_key 和 sub_key +async function getWbiKeys(cookie) { + const res = await axios('https://api.bilibili.com/x/web-interface/nav', { + headers: { + Cookie: cookie + } + }); + const responseJson = res.data; + const response = responseJson; // 类型断言 + // 确保response是ResponseData类型后再解构 + const { data: { wbi_img: { img_url, sub_url } } } = response; + return { + img_key: img_url.slice(img_url.lastIndexOf('/') + 1, img_url.lastIndexOf('.')), + sub_key: sub_url.slice(sub_url.lastIndexOf('/') + 1, sub_url.lastIndexOf('.')) + }; +} +export default async function wbi_sign(BASEURL, cookie) { + const web_keys = await getWbiKeys(cookie); + const url = new URL(BASEURL); + const params = {}; + for (const [key, value] of url.searchParams.entries()) { + params[key] = value; + } + const query = encWbi(params, web_keys.img_key, web_keys.sub_key); + return query; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2JpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2J1c2luZXNzL2JpbGliaWxpL3NpZ24vd2JpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUN6QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUE7QUFFM0IsTUFBTSxjQUFjLEdBQUc7SUFDckIsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDNUosRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7Q0FDdkYsQ0FBQTtBQUVELCtCQUErQjtBQUMvQixNQUFNLFdBQVcsR0FBRyxDQUFD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 \ No newline at end of file diff --git a/amagi/lib/lib/business/douyin/API.d.ts b/amagi/lib/lib/business/douyin/API.d.ts new file mode 100644 index 00000000..96848060 --- /dev/null +++ b/amagi/lib/lib/business/douyin/API.d.ts @@ -0,0 +1,19 @@ +import { DouyinDataOptionsMapKeys } from '../../types/index.js'; +declare class DouyinAPI { + 视频或图集(data: DouyinDataOptionsMapKeys['WorkParams']): string; + 评论(data: DouyinDataOptionsMapKeys['CommentParams']): string; + 二级评论(data: DouyinDataOptionsMapKeys['CommentReplyParams']): string; + 动图(data: DouyinDataOptionsMapKeys['WorkParams']): string; + 表情(): string; + 用户主页视频(data: DouyinDataOptionsMapKeys['UserParams']): string; + 用户主页信息(data: DouyinDataOptionsMapKeys['UserParams']): string; + 热点词(data: DouyinDataOptionsMapKeys['SearchParams']): string; + 搜索(data: DouyinDataOptionsMapKeys['SearchParams']): string; + 互动表情(): string; + 背景音乐(data: DouyinDataOptionsMapKeys['MusicParams']): string; + 直播间信息(data: DouyinDataOptionsMapKeys['LiveRoomParams']): string; + 申请二维码(data: DouyinDataOptionsMapKeys['QrcodeParams']): string; +} +/** 该类下的所有方法只会返回拼接好参数后的 Url 地址,需要手动请求该地址以获取数据 */ +declare const _default: DouyinAPI; +export default _default; diff --git a/amagi/lib/lib/business/douyin/API.js b/amagi/lib/lib/business/douyin/API.js new file mode 100644 index 00000000..5ffc176b --- /dev/null +++ b/amagi/lib/lib/business/douyin/API.js @@ -0,0 +1,46 @@ +import Sign from './sign/index.js'; +const fp = Sign.VerifyFpManager(); +class DouyinAPI { + 视频或图集(data) { + return `https://www.douyin.com/aweme/v1/web/aweme/detail/?device_platform=webapp&aid=6383&channel=channel_pc_web&aweme_id=${data.aweme_id}&update_version_code=170400&pc_client_type=1&version_code=190500&version_name=19.5.0&cookie_enabled=true&screen_width=2328&screen_height=1310&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=125.0.0.0&browser_online=true&engine_name=Blink&engine_version=125.0.0.0&os_name=Windows&os_version=10&cpu_core_num=16&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=150&webid=7351848354471872041&msToken=${Sign.Mstoken(116)}&verifyFp=${fp}&fp=${fp}`; + } + 评论(data) { + return `https://www.douyin.com/aweme/v1/web/comment/list/?device_platform=webapp&aid=6383&channel=channel_pc_web&aweme_id=${data.aweme_id}&cursor=${data.cursor || 0}&count=${data.number || 50}&item_type=0&insert_ids=&whale_cut_token=&cut_version=1&rcFT=&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1552&screen_height=970&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=125.0.0.0&browser_online=true&engine_name=Blink&engine_version=125.0.0.0&os_name=Windows&os_version=10&cpu_core_num=16&device_memory=8&platform=PC&downlink=10&effective_type=4g&msToken=${Sign.Mstoken(116)}&verifyFp=${fp}&fp=${fp}`; + } + 二级评论(data) { + return `https://www.douyin.com/aweme/v1/web/comment/list/reply/?device_platform=webapp&aid=6383&channel=channel_pc_web&item_id=${data.aweme_id}&comment_id=${data.comment_id}&cut_version=1&cursor=0&count=10&item_type=0&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1552&screen_height=970&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=126.0.0.0&browser_online=true&engine_name=Blink&engine_version=126.0.0.0&os_name=Windows&os_version=10&cpu_core_num=16&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=0&webid=7326516708850599434&msToken=${Sign.Mstoken(116)}&verifyFp=${fp}&fp=${fp}`; + } + 动图(data) { + return `https://www.iesdouyin.com/web/api/v2/aweme/slidesinfo/?reflow_source=reflow_page&web_id=7326472315356857893&device_id=7326472315356857893&aweme_ids=[${data.aweme_id}]&request_source=200&msToken=${Sign.Mstoken(116)}&verifyFp=${fp}&fp=${fp}`; + } + 表情() { + return 'https://www.douyin.com/aweme/v1/web/emoji/list'; + } + 用户主页视频(data) { + return `https://www.douyin.com/aweme/v1/web/aweme/post/?device_platform=webapp&aid=6383&channel=channel_pc_web&sec_user_id=${data.sec_uid}&max_cursor=0&locate_query=false&show_live_replay_strategy=1&need_time_list=1&time_list_query=0&whale_cut_token=&cut_version=1&count=18&publish_video_strategy_type=2&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1552&screen_height=970&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=125.0.0.0&browser_online=true&engine_name=Blink&engine_version=125.0.0.0&os_name=Windows&os_version=10&cpu_core_num=16&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=50&webid=7338423850134226495&msToken=${Sign.Mstoken(116)}&verifyFp=${fp}&fp=${fp}`; + } + 用户主页信息(data) { + return `https://www.douyin.com/aweme/v1/web/user/profile/other/?device_platform=webapp&aid=6383&channel=channel_pc_web&publish_video_strategy_type=2&source=channel_pc_web&sec_user_id=${data.sec_uid}&personal_center_strategy=1&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1552&screen_height=970&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=125.0.0.0&browser_online=true&engine_name=Blink&engine_version=125.0.0.0&os_name=Windows&os_version=10&cpu_core_num=16&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=0&webid=7327957959955580467&msToken=${Sign.Mstoken(116)}&verifyFp=${fp}&fp=${fp}`; + } + 热点词(data) { + return `https://www.douyin.com/aweme/v1/web/api/suggest_words/?device_platform=webapp&aid=6383&channel=channel_pc_web&query=${data.query}&business_id=30088&from_group_id=7129543174929812767&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1552&screen_height=970&browser_language=zh - CN&browser_platform=Win32&browser_name=Chrome&browser_version=125.0.0.0&browser_online=true&engine_name=Blink&engine_version=125.0.0.0&os_name=Windows&os_version=10&cpu_core_num=16&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=50&webid=7327957959955580467&msToken=${Sign.Mstoken(116)}&verifyFp=${fp}&fp=${fp}`; + } + 搜索(data) { + return `https://www.douyin.com/aweme/v1/web/general/search/single/?device_platform=webapp&aid=6383&channel=channel_pc_web&search_channel=aweme_general&sort_type=0&publish_time=0&keyword=${data.query}&search_source=normal_search&query_correct_type=1&is_filter_search=0&from_group_id=&offset=0&count=15&pc_client_type=1&version_code=190600&version_name=19.6.0&cookie_enabled=true&screen_width=1552&screen_height=970&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=125.0.0.0&browser_online=true&engine_name=Blink&engine_version=125.0.0.0&os_name=Windows&os_version=10&cpu_core_num=16&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=50&webid=7338423850134226495&msToken=${Sign.Mstoken(116)}&verifyFp=${fp}&fp=${fp}`; + } + 互动表情() { + return `https://www.douyin.com/aweme/v1/web/im/strategy/config?device_platform=webapp&aid=1128&channel=channel_pc_web&publish_video_strategy_type=2&app_id=1128&scenes=[%22interactive_resources%22]&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=2328&screen_height=1310&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=126.0.0.0&browser_online=true&engine_name=Blink&engine_version=126.0.0.0&os_name=Windows&os_version=10&cpu_core_num=16&device_memory=8&platform=PC&downlink=1.5&effective_type=4g&round_trip_time=350&webid=7347329698282833447&msToken=${Sign.Mstoken(116)}&verifyFp=${fp}&fp=${fp}`; + } + 背景音乐(data) { + return `https://www.douyin.com/aweme/v1/web/music/detail/?device_platform=webapp&aid=6383&channel=channel_pc_web&music_id=${data.music_id}&scene=1&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=2328&screen_height=1310&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=126.0.0.0&browser_online=true&engine_name=Blink&engine_version=126.0.0.0&os_name=Windows&os_version=10&cpu_core_num=16&device_memory=8&platform=PC&downlink=1.5&effective_type=4g&round_trip_time=350&webid=7347329698282833447&msToken=${Sign.Mstoken(116)}&verifyFp=${fp}&fp=${fp}`; + } + 直播间信息(data) { + return `https://live.douyin.com/webcast/room/web/enter/?aid=6383&app_name=douyin_web&live_id=1&device_platform=web&language=zh-CN&enter_from=web_share_link&cookie_enabled=true&screen_width=2048&screen_height=1152&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=125.0.0.0&web_rid=${data.web_rid}&room_id_str=${data.room_id}&enter_source=&is_need_double_stream=false&insert_task_id=&live_reason=&msToken=${Sign.Mstoken(116)}&verifyFp=${fp}&fp=${fp}`; + } + 申请二维码(data) { + return `https://sso.douyin.com/get_qrcode/?verifyFp=${data.verify_fp}&fp=${data.verify_fp}`; + } +} +/** 该类下的所有方法只会返回拼接好参数后的 Url 地址,需要手动请求该地址以获取数据 */ +export default new DouyinAPI(); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVBJLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1c2luZXNzL2RvdXlpbi9BUEkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxJQUFJLE1BQU0sUUFBUSxDQUFBO0FBRXpCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQTtBQUNqQyxNQUFNLFNBQVM7SUFDYixLQUFLLENBQUUsSUFBNEM7UUFDakQsT0FBTyxxSEFBcUgsSUFBSSxDQUFDLFFBQVEsMGNBQTBjLElBQUksQ0FBQyxPQUFPLENBQzdsQixHQUFHLENBQ0osYUFBYSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVELEVBQUUsQ0FBRSxJQUErQztRQUNqRCxPQUFPLHFIQUFxSCxJQUFJLENBQUMsUUFBUSxXQUFXLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSw2YkFBNmIsSUFBSSxDQUFDLE9BQU8sQ0FDdG9CLEdBQUcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsSUFBSSxDQUFFLElBQW9EO1FBQ3hELE9BQU8sMEhBQTBILElBQUksQ0FBQyxRQUFRLGVBQWUsSUFBSSxDQUFDLFVBQVUsd2RBQXdkLElBQUksQ0FBQyxPQUFPLENBQzlvQixHQUFHLENBQ0osYUFBYSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVELEVBQUUsQ0FBRSxJQUE0QztRQUM5QyxPQUFPLHdKQUF3SixJQUFJLENBQUMsUUFBUSxnQ0FBZ0MsSUFBSSxDQUFDLE9BQU8sQ0FDdE4sR0FBRyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFBO0lBQ2xDLENBQUM7SUFFRCxFQUFFO1FBQ0EsT0FBTyxnREFBZ0QsQ0FBQTtJQUN6RCxDQUFDO0lBRUQsTUFBTSxDQUFFLElBQTRDO1FBQ2xELE9BQU8sc0hBQXNILElBQUksQ0FBQyxPQUFPLGtsQkFBa2xCLElBQUksQ0FBQyxPQUFPLENBQ3J1QixHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUE7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBRSxJQUE0QztRQUNsRCxPQUFPLGtMQUFrTCxJQUFJLENBQUMsT0FBTyx1Y0FBdWMsSUFBSSxDQUFDLE9BQU8sQ0FDdHBCLEdBQUcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsR0FBRyxDQUFFLElBQThDO1FBQ2pELE9BQU8sdUhBQXVILElBQUksQ0FBQyxLQUFLLG1lQUFtZSxJQUFJLENBQUMsT0FBTyxDQUNybkIsR0FBRyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFBO0lBQ2xDLENBQUM7SUFFRCxFQUFFLENBQUUsSUFBOEM7UUFDaEQsT0FBTyxxTEFBcUwsSUFBSSxDQUFDLEtBQUssa2hCQUFraEIsSUFBSSxDQUFDLE9BQU8sQ0FDbHVCLEdBQUcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsSUFBSTtRQUNGLE9BQU8sNG1CQUE0bUIsSUFBSSxDQUFDLE9BQU8sQ0FDN25CLEdBQUcsQ0FDSixhQUFhLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBRUQsSUFBSSxDQUFFLElBQTZDO1FBQ2pELE9BQU8scUhBQXFILElBQUksQ0FBQyxRQUFRLHdiQUF3YixJQUFJLENBQUMsT0FBTyxDQUMza0IsR0FBRyxDQUNKLGFBQWEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFBO0lBQzdCLENBQUM7SUFFRCxLQUFLLENBQUUsSUFBZ0Q7UUFDckQsT0FBTyxvVEFBb1QsSUFBSSxDQUFDLE9BQU8sZ0JBQWdCLElBQUksQ0FBQyxPQUFPLG1GQUFtRixJQUFJLENBQUMsT0FBTyxDQUNoYyxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUE7SUFDbEMsQ0FBQztJQUVELEtBQUssQ0FBRSxJQUE4QztRQUNuRCxPQUFPLCtDQUErQyxJQUFJLENBQUMsU0FBUyxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUM3RixDQUFDO0NBQ0Y7QUFFRCxnREFBZ0Q7QUFDaEQsZUFBZSxJQUFJLFNBQVMsRUFBRSxDQUFBIn0= \ No newline at end of file diff --git a/amagi/lib/lib/business/douyin/getdata.d.ts b/amagi/lib/lib/business/douyin/getdata.d.ts new file mode 100644 index 00000000..fea26e06 --- /dev/null +++ b/amagi/lib/lib/business/douyin/getdata.d.ts @@ -0,0 +1,9 @@ +import { DouyinDataType, DouyinOptionsType, NetworksConfigType } from '../../types/index.js'; +export default class DouyinData { + type: keyof typeof DouyinDataType; + headers: any; + URL: string | undefined; + constructor(type: keyof typeof DouyinDataType, cookie: string | undefined); + GetData(data?: DouyinOptionsType): Promise; + GlobalGetData(options: NetworksConfigType): Promise; +} diff --git a/amagi/lib/lib/business/douyin/getdata.js b/amagi/lib/lib/business/douyin/getdata.js new file mode 100644 index 00000000..21c0e5a6 --- /dev/null +++ b/amagi/lib/lib/business/douyin/getdata.js @@ -0,0 +1,200 @@ +import { DouyinAPI, Sign } from '../../business/douyin/index.js'; +import { Networks } from '../../model/index.js'; +export default class DouyinData { + type; + headers; + URL; + constructor(type, cookie) { + this.type = type; + this.headers = { + Referer: 'https://www.douyin.com/', + Cookie: cookie ? cookie.replace(/\s+/g, '') : '', + Accept: '*/*', + 'Content-Type': 'application/json', + 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6', + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36' + }; + } + async GetData(data = {}) { + switch (this.type) { + case '单个视频作品数据': + case '图集作品数据': { + this.URL = DouyinAPI.视频或图集({ aweme_id: data.aweme_id }); + const VideoData = await this.GlobalGetData({ + url: `${this.URL}&a_bogus=${Sign.AB(this.URL)}`, + method: 'GET', + headers: this.headers + }); + return VideoData; + } + case '评论数据': { + let cursor = data.cursor || 50; // 初始游标值 + const maxPageSize = 50; // 接口单次请求的最大评论数量 + let fetchedComments = []; // 用于存储实际获取的所有评论 + let tmpresp = {}; + // 循环直到获取到足够数量的评论 + while (fetchedComments.length < Number(data.number || 50)) { + // 计算本次请求需要获取的评论数量,确保不超过剩余需要获取的数量 + const requestCount = Math.min(Number(data.number || 50) - fetchedComments.length, maxPageSize); + // 构建请求URL + const url = DouyinAPI.评论({ + aweme_id: data.aweme_id, + number: requestCount, + cursor + }); + // 发起请求获取评论数据 + const response = await this.GlobalGetData({ + url: `${url}&a_bogus=${Sign.AB(url)}`, + headers: this.headers + }); + if (!response.comments) { + response.comments = []; + } + // 将获取到的评论数据添加到数组中 + fetchedComments.push(...response.comments); + // 更新tmpresp为最后一次请求的响应 + tmpresp = response; + // 如果本次请求的评论数量小于请求的数量,说明已经没有更多评论了 + if (response.comments.length < requestCount) { + break; + } + // 更新游标值,准备下一次请求 + cursor = response.cursor; + } + // 使用最后一次请求的接口响应格式,替换其中的评论数据 + const finalResponse = { + ...tmpresp, + comments: data.number === 0 ? [] : fetchedComments.slice(0, Number(data.number || 50)), + cursor: data.number === 0 ? 0 : fetchedComments.length + }; + return finalResponse; + } + case '二级评论数据': { + this.URL = DouyinAPI.二级评论({ aweme_id: data.aweme_id, comment_id: data.comment_id }); + const CommentReplyData = await this.GlobalGetData({ + url: `${this.URL}&a_bogus=${Sign.AB(this.URL)}`, + headers: this.headers + }); + return CommentReplyData; + } + case '用户主页数据': { + this.URL = DouyinAPI.用户主页信息({ sec_uid: data.sec_uid }); + const UserInfoData = await this.GlobalGetData({ + url: `${this.URL}&a_bogus=${Sign.AB(this.URL)}`, + headers: { + ...this.headers, + Referer: `https://www.douyin.com/user/${data.sec_uid}` + } + }); + return UserInfoData; + } + case '官方emoji数据': { + this.URL = DouyinAPI.表情(); + const EmojiData = await this.GlobalGetData({ + url: this.URL, + headers: this.headers + }); + return EmojiData; + } + case '用户主页视频列表数据': { + this.URL = DouyinAPI.用户主页视频({ sec_uid: data.sec_uid }); + const UserVideoListData = await this.GlobalGetData({ + url: `${this.URL}&a_bogus=${Sign.AB(this.URL)}`, + headers: { + ...this.headers, + Referer: `https://www.douyin.com/user/${data.sec_uid}` + } + }); + return UserVideoListData; + } + case '热点词数据': { + this.URL = DouyinAPI.热点词({ query: data.query }); + const SuggestWordsData = await this.GlobalGetData({ + url: `${this.URL}&a_bogus=${Sign.AB(this.URL)}`, + headers: { + ...this.headers, + Referer: `https://www.douyin.com/search/${encodeURIComponent(String(data.query))}` + } + }); + return SuggestWordsData; + } + case '搜索数据': { + this.URL = DouyinAPI.搜索({ query: data.query }); + const SearchData = await this.GlobalGetData({ + url: `${this.URL}&a_bogus=${Sign.AB(this.URL)}`, + headers: { + ...this.headers, + Referer: `https://www.douyin.com/search/${encodeURIComponent(String(data.query))}` + } + }); + return SearchData; + } + case '动态表情数据': { + this.URL = DouyinAPI.互动表情(); + const ExpressionPlusData = await this.GlobalGetData({ + url: `${this.URL}&a_bogus=${Sign.AB(this.URL)}`, + headers: this.headers + }); + return ExpressionPlusData; + } + case '音乐数据': { + this.URL = DouyinAPI.背景音乐({ music_id: data.music_id }); + const MusicData = await this.GlobalGetData({ + url: `${this.URL}&a_bogus=${Sign.AB(this.URL)}`, + headers: this.headers + }); + return MusicData; + } + case '实况图片图集数据': { + this.URL = DouyinAPI.动图({ aweme_id: data.aweme_id }); + const LiveImages = await this.GlobalGetData({ + url: `${this.URL}&a_bogus=${Sign.AB(this.URL)}`, + headers: { + ...this.headers, + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1 Edg/126.0.0.0' + } + }); + return LiveImages; + } + case '直播间信息数据': { + this.URL = DouyinAPI.用户主页信息({ sec_uid: data.sec_uid }); + const UserInfoData = await this.GlobalGetData({ + url: `${this.URL}&a_bogus=${Sign.AB(this.URL)}`, + headers: { + ...this.headers, + Referer: `https://www.douyin.com/user/${data.sec_uid}` + } + }); + if (UserInfoData.user.live_status !== 1) + throw new Error(UserInfoData.user.nickname + '未开启直播!'); + const room_data = JSON.parse(UserInfoData.user.room_data); + this.URL = DouyinAPI.直播间信息({ room_id: UserInfoData.user.room_id_str, web_rid: room_data.owner.web_rid }); + const LiveRoomData = await this.GlobalGetData({ + url: `${this.URL}&a_bogus=${Sign.AB(this.URL)}`, + headers: { + ...this.headers, + Referer: `https://live.douyin.com/${room_data.owner.web_rid}` + } + }); + return LiveRoomData; + } + case '申请二维码数据': { + this.URL = DouyinAPI.申请二维码({ verify_fp: data.verify_fp }); + const LoginQrcodeStatusData = await this.GlobalGetData({ + url: `${this.URL}&a_bogus=${Sign.AB(this.URL)}`, + headers: this.headers + }); + } + default: + break; + } + } + async GlobalGetData(options) { + const ResponseData = await new Networks(options).getData(); + if (ResponseData === '') { + throw new Error('获取响应数据失败!接口返回内容为空\n你的抖音ck可能已经失效!\n请求类型:' + this.type + '\n请求URL:' + options.url); + } + return ResponseData; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0ZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9idXNpbmVzcy9kb3V5aW4vZ2V0ZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFHdEMsTUFBTSxDQUFDLE9BQU8sT0FBTyxVQUFVO0lBQzdCLElBQUksQ0FBNkI7SUFDakMsT0FBTyxDQUFLO0lBQ1osR0FBRyxDQUFvQjtJQUN2QixZQUFhLElBQWlDLEVBQUUsTUFBMEI7UUFDeEUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLE9BQU8sRUFBRSx5QkFBeUI7WUFDbEMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEQsTUFBTSxFQUFFLEtBQUs7WUFDYixjQUFjLEVBQUUsa0JBQWtCO1lBQ2xDLGlCQUFpQixFQUFFLGlEQUFpRDtZQUNwRSxZQUFZLEVBQUUsaUhBQWlIO1NBQ2hJLENBQUE7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBRSxPQUFPLEVBQXVCO1FBQzNDLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDZCxJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQWtCLEVBQUUsQ0FBQyxDQUFBO2dCQUNqRSxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUM7b0JBQ3pDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQy9DLE1BQU0sRUFBRSxLQUFLO29CQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztpQkFDdEIsQ0FBQyxDQUFBO2dCQUNGLE9BQU8sU0FBUyxDQUFBO1lBQ2xCLENBQUM7WUFFRCxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ1osSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUEsQ0FBQyxRQUFRO2dCQUN2QyxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUEsQ0FBQyxnQkFBZ0I7Z0JBQ3ZDLElBQUksZUFBZSxHQUFVLEVBQUUsQ0FBQSxDQUFDLGdCQUFnQjtnQkFDaEQsSUFBSSxPQUFPLEdBQVEsRUFBRSxDQUFBO2dCQUVyQixpQkFBaUI7Z0JBQ2pCLE9BQU8sZUFBZSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUMxRCxpQ0FBaUM7b0JBQ2pDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQTtvQkFFOUYsVUFBVTtvQkFDVixNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDO3dCQUN2QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7d0JBQ3ZCLE1BQU0sRUFBRSxZQUFZO3dCQUNwQixNQUFNO3FCQUNQLENBQUMsQ0FBQTtvQkFFRixhQUFhO29CQUNiLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQzt3QkFDeEMsR0FBRyxFQUFFLEdBQUcsR0FBRyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQ3JDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztxQkFDdEIsQ0FBQyxDQUFBO29CQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3ZCLFFBQVEsQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFBO29CQUN4QixDQUFDO29CQUNELGtCQUFrQjtvQkFDbEIsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtvQkFFMUMsc0JBQXNCO29CQUN0QixPQUFPLEdBQUcsUUFBUSxDQUFBO29CQUVsQixpQ0FBaUM7b0JBQ2pDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLENBQUM7d0JBQzVDLE1BQUs7b0JBQ1AsQ0FBQztvQkFFRCxnQkFBZ0I7b0JBQ2hCLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFBO2dCQUMxQixDQUFDO2dCQUVELDRCQUE0QjtnQkFDNUIsTUFBTSxhQUFhLEdBQUc7b0JBQ3BCLEdBQUcsT0FBTztvQkFDVixRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQ3RGLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsTUFBTTtpQkFDdkQsQ0FBQTtnQkFDRCxPQUFPLGFBQWEsQ0FBQTtZQUN0QixDQUFDO1lBRUQsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNkLElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBa0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQW9CLEVBQUUsQ0FBQyxDQUFBO2dCQUN2RyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQztvQkFDaEQsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDL0MsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2lCQUN0QixDQUFDLENBQUE7Z0JBQ0YsT0FBTyxnQkFBZ0IsQ0FBQTtZQUN6QixDQUFDO1lBRUQsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNkLElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBaUIsRUFBRSxDQUFDLENBQUE7Z0JBQ2hFLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQztvQkFDNUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDL0MsT0FBTyxFQUFFO3dCQUNQLEdBQUcsSUFBSSxDQUFDLE9BQU87d0JBQ2YsT0FBTyxFQUFFLCtCQUErQixJQUFJLENBQUMsT0FBTyxFQUFFO3FCQUN2RDtpQkFDRixDQUFDLENBQUE7Z0JBQ0YsT0FBTyxZQUFZLENBQUE7WUFDckIsQ0FBQztZQUVELEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDakIsSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUE7Z0JBQ3pCLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQztvQkFDekMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO29CQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztpQkFDdEIsQ0FBQyxDQUFBO2dCQUNGLE9BQU8sU0FBUyxDQUFBO1lBQ2xCLENBQUM7WUFFRCxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBaUIsRUFBRSxDQUFDLENBQUE7Z0JBQ2hFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDO29CQUNqRCxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMvQyxPQUFPLEVBQUU7d0JBQ1AsR0FBRyxJQUFJLENBQUMsT0FBTzt3QkFDZixPQUFPLEVBQUUsK0JBQStCLElBQUksQ0FBQyxPQUFPLEVBQUU7cUJBQ3ZEO2lCQUNGLENBQUMsQ0FBQTtnQkFDRixPQUFPLGlCQUFpQixDQUFBO1lBQzFCLENBQUM7WUFFRCxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFlLEVBQUUsQ0FBQyxDQUFBO2dCQUN6RCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQztvQkFDaEQsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDL0MsT0FBTyxFQUFFO3dCQUNQLEdBQUcsSUFBSSxDQUFDLE9BQU87d0JBQ2YsT0FBTyxFQUFFLGlDQUFpQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7cUJBQ25GO2lCQUNGLENBQUMsQ0FBQTtnQkFDRixPQUFPLGdCQUFnQixDQUFBO1lBQ3pCLENBQUM7WUFFRCxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ1osSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFlLEVBQUUsQ0FBQyxDQUFBO2dCQUN4RCxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUM7b0JBQzFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQy9DLE9BQU8sRUFBRTt3QkFDUCxHQUFHLElBQUksQ0FBQyxPQUFPO3dCQUNmLE9BQU8sRUFBRSxpQ0FBaUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO3FCQUNuRjtpQkFDRixDQUFDLENBQUE7Z0JBQ0YsT0FBTyxVQUFVLENBQUE7WUFDbkIsQ0FBQztZQUVELEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDZCxJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtnQkFDM0IsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUM7b0JBQ2xELEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQy9DLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztpQkFDdEIsQ0FBQyxDQUFBO2dCQUNGLE9BQU8sa0JBQWtCLENBQUE7WUFDM0IsQ0FBQztZQUVELEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDWixJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQWtCLEVBQUUsQ0FBQyxDQUFBO2dCQUNoRSxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUM7b0JBQ3pDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQy9DLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztpQkFDdEIsQ0FBQyxDQUFBO2dCQUNGLE9BQU8sU0FBUyxDQUFBO1lBQ2xCLENBQUM7WUFFRCxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBa0IsRUFBRSxDQUFDLENBQUE7Z0JBQzlELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQztvQkFDMUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDL0MsT0FBTyxFQUFFO3dCQUNQLEdBQUcsSUFBSSxDQUFDLE9BQU87d0JBQ2YsWUFBWSxFQUFFLHVKQUF1SjtxQkFDdEs7aUJBQ0YsQ0FBQyxDQUFBO2dCQUNGLE9BQU8sVUFBVSxDQUFBO1lBQ25CLENBQUM7WUFFRCxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFpQixFQUFFLENBQUMsQ0FBQTtnQkFDaEUsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDO29CQUM1QyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMvQyxPQUFPLEVBQUU7d0JBQ1AsR0FBRyxJQUFJLENBQUMsT0FBTzt3QkFDZixPQUFPLEVBQUUsK0JBQStCLElBQUksQ0FBQyxPQUFPLEVBQUU7cUJBQ3ZEO2lCQUNGLENBQUMsQ0FBQTtnQkFDRixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLENBQUM7b0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQTtnQkFDL0YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO2dCQUN6RCxJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFxQixFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQWlCLEVBQUUsQ0FBQyxDQUFBO2dCQUM1SCxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUM7b0JBQzVDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQy9DLE9BQU8sRUFBRTt3QkFDUCxHQUFHLElBQUksQ0FBQyxPQUFPO3dCQUNmLE9BQU8sRUFBRSwyQkFBMkIsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7cUJBQzlEO2lCQUNGLENBQUMsQ0FBQTtnQkFDRixPQUFPLFlBQVksQ0FBQTtZQUNyQixDQUFDO1lBRUQsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUNmLElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBbUIsRUFBRSxDQUFDLENBQUE7Z0JBQ25FLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDO29CQUNyRCxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMvQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87aUJBQ3RCLENBQUMsQ0FBQTtZQUNKLENBQUM7WUFFRDtnQkFDRSxNQUFLO1FBQ1QsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFFLE9BQTJCO1FBQzlDLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDMUQsSUFBSSxZQUFZLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDbkcsQ0FBQztRQUNELE9BQU8sWUFBWSxDQUFBO0lBQ3JCLENBQUM7Q0FDRiJ9 \ No newline at end of file diff --git a/amagi/lib/lib/business/douyin/getid.d.ts b/amagi/lib/lib/business/douyin/getid.d.ts new file mode 100644 index 00000000..b68d2975 --- /dev/null +++ b/amagi/lib/lib/business/douyin/getid.d.ts @@ -0,0 +1,13 @@ +import { DouyinDataType } from '../../types/index.js'; +interface IDDataTypes { + type: DouyinDataType; + aweme_id?: string; + sec_uid?: string; +} +/** + * return aweme_id + * @param {string} url 视频分享连接 + * @returns + */ +export default function GetDouyinID(url: string): Promise; +export {}; diff --git a/amagi/lib/lib/business/douyin/getid.js b/amagi/lib/lib/business/douyin/getid.js new file mode 100644 index 00000000..ea3afd61 --- /dev/null +++ b/amagi/lib/lib/business/douyin/getid.js @@ -0,0 +1,50 @@ +import { logger, Networks } from '../../model/index.js'; +/** + * return aweme_id + * @param {string} url 视频分享连接 + * @returns + */ +export default async function GetDouyinID(url) { + const longLink = await new Networks({ url }).getLongLink(); + let result = {}; + switch (true) { + case /share\/slides\/(\d+)/.test(longLink): { + const newres = await new Networks({ url }).getLocation(); + const match = newres.match(/share\/slides\/(\d+)/); + result = { + type: "\u5B9E\u51B5\u56FE\u7247\u56FE\u96C6\u6570\u636E" /* DouyinDataType.实况图片图集数据 */, + aweme_id: match ? match[1] : '', + }; + break; + } + case /video\/(\d+)/.test(longLink): { + const videoMatch = longLink.match(/video\/(\d+)/); + result = { + type: "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E" /* DouyinDataType.单个视频作品数据 */, + aweme_id: videoMatch ? videoMatch[1] : '' + }; + break; + } + case /note\/(\d+)/.test(longLink): { + const noteMatch = longLink.match(/note\/(\d+)/); + result = { + type: "\u56FE\u96C6\u4F5C\u54C1\u6570\u636E" /* DouyinDataType.图集作品数据 */, + aweme_id: noteMatch ? noteMatch[1] : '' + }; + break; + } + case /user\/(\S+?)\?/.test(longLink): { + const userMatch = longLink.match(/user\/(\S+?)\?/); + result = { + type: "\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E" /* DouyinDataType.用户主页视频列表数据 */, + sec_uid: userMatch ? userMatch[1] : '' + }; + break; + } + default: + break; + } + logger.mark(result); + return result; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0aWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVzaW5lc3MvZG91eWluL2dldGlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBUzlDOzs7O0dBSUc7QUFFSCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssVUFBVSxXQUFXLENBQUUsR0FBVztJQUNwRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUMxRCxJQUFJLE1BQU0sR0FBRyxFQUFpQixDQUFBO0lBQzlCLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDYixLQUFLLHNCQUFzQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7WUFDeEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO1lBQ2xELE1BQU0sR0FBRztnQkFDUCxJQUFJLGtGQUF5QjtnQkFDN0IsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2FBQ2hDLENBQUE7WUFDRCxNQUFLO1FBQ1AsQ0FBQztRQUNELEtBQUssY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQTtZQUNqRCxNQUFNLEdBQUc7Z0JBQ1AsSUFBSSxrRkFBeUI7Z0JBQzdCLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTthQUMxQyxDQUFBO1lBQ0QsTUFBSztRQUNQLENBQUM7UUFFRCxLQUFLLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUE7WUFDL0MsTUFBTSxHQUFHO2dCQUNQLElBQUksb0VBQXVCO2dCQUMzQixRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7YUFDeEMsQ0FBQTtZQUNELE1BQUs7UUFDUCxDQUFDO1FBRUQsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtZQUNsRCxNQUFNLEdBQUc7Z0JBQ1AsSUFBSSxnR0FBMkI7Z0JBQy9CLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTthQUN2QyxDQUFBO1lBQ0QsTUFBSztRQUNQLENBQUM7UUFDRDtZQUNFLE1BQUs7SUFDVCxDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNuQixPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMifQ== \ No newline at end of file diff --git a/amagi/lib/lib/business/douyin/index.d.ts b/amagi/lib/lib/business/douyin/index.d.ts new file mode 100644 index 00000000..f49b52e8 --- /dev/null +++ b/amagi/lib/lib/business/douyin/index.d.ts @@ -0,0 +1,6 @@ +import DouyinAPI from './API.js'; +import DouyinData from './getdata.js'; +import GetDouyinID from './getid.js'; +import DouyinResult from './result.js'; +import Sign from './sign/index.js'; +export { DouyinAPI, DouyinData, DouyinResult, GetDouyinID, Sign }; diff --git a/amagi/lib/lib/business/douyin/index.js b/amagi/lib/lib/business/douyin/index.js new file mode 100644 index 00000000..000d1db2 --- /dev/null +++ b/amagi/lib/lib/business/douyin/index.js @@ -0,0 +1,7 @@ +import DouyinAPI from './API.js'; +import DouyinData from './getdata.js'; +import GetDouyinID from './getid.js'; +import DouyinResult from './result.js'; +import Sign from './sign/index.js'; +export { DouyinAPI, DouyinData, DouyinResult, GetDouyinID, Sign }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVzaW5lc3MvZG91eWluL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sU0FBUyxNQUFNLE9BQU8sQ0FBQTtBQUM3QixPQUFPLFVBQVUsTUFBTSxXQUFXLENBQUE7QUFDbEMsT0FBTyxXQUFXLE1BQU0sU0FBUyxDQUFBO0FBQ2pDLE9BQU8sWUFBWSxNQUFNLFVBQVUsQ0FBQTtBQUNuQyxPQUFPLElBQUksTUFBTSxRQUFRLENBQUE7QUFFekIsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQSJ9 \ No newline at end of file diff --git a/amagi/lib/lib/business/douyin/result.d.ts b/amagi/lib/lib/business/douyin/result.d.ts new file mode 100644 index 00000000..4c8fe271 --- /dev/null +++ b/amagi/lib/lib/business/douyin/result.d.ts @@ -0,0 +1,9 @@ +import { DouyinDataType, DouyinOptionsType, GetDataResponseType } from '../../types/index.js'; +interface configParams { + /** 请求数据的类型 */ + type: keyof typeof DouyinDataType; + /** 抖音用户ck */ + cookie: string | undefined; +} +export default function DouyinResult(config?: configParams, options?: DouyinOptionsType): Promise; +export {}; diff --git a/amagi/lib/lib/business/douyin/result.js b/amagi/lib/lib/business/douyin/result.js new file mode 100644 index 00000000..d64af1aa --- /dev/null +++ b/amagi/lib/lib/business/douyin/result.js @@ -0,0 +1,50 @@ +import { DouyinData, GetDouyinID } from '../../business/douyin/index.js'; +export default async function DouyinResult(config = { cookie: '' }, options = {}) { + let result; + switch (config.type) { + case "\u4E8C\u7EA7\u8BC4\u8BBA\u6570\u636E" /* DouyinDataType.二级评论数据 */: + case "\u7528\u6237\u4E3B\u9875\u6570\u636E" /* DouyinDataType.用户主页数据 */: + case "\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E" /* DouyinDataType.用户主页视频列表数据 */: + case "\u70ED\u70B9\u8BCD\u6570\u636E" /* DouyinDataType.热点词数据 */: + case "\u641C\u7D22\u6570\u636E" /* DouyinDataType.搜索数据 */: + case "\u5B98\u65B9emoji\u6570\u636E" /* DouyinDataType.官方emoji数据 */: + case "\u52A8\u6001\u8868\u60C5\u6570\u636E" /* DouyinDataType.动态表情数据 */: + case "\u97F3\u4E50\u6570\u636E" /* DouyinDataType.音乐数据 */: + case "\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E" /* DouyinDataType.直播间信息数据 */: + case "\u7533\u8BF7\u4E8C\u7EF4\u7801\u6570\u636E" /* DouyinDataType.申请二维码数据 */: { + result = await new DouyinData(config.type, config.cookie).GetData(options); + break; + } + case "\u8BC4\u8BBA\u6570\u636E" /* DouyinDataType.评论数据 */: { + if (!options?.url) { + result = await new DouyinData(config.type, config.cookie).GetData(options); + } + else { + const iddata = await GetDouyinID(String(options.url)); + result = await new DouyinData(config.type, config.cookie).GetData({ ...options, ...iddata }); + } + break; + } + case "\u5B9E\u51B5\u56FE\u7247\u56FE\u96C6\u6570\u636E" /* DouyinDataType.实况图片图集数据 */: + case "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E" /* DouyinDataType.单个视频作品数据 */: + case "\u56FE\u96C6\u4F5C\u54C1\u6570\u636E" /* DouyinDataType.图集作品数据 */: { + if (!options?.url) { + result = await new DouyinData(config.type, config.cookie).GetData(options); + } + else { + const iddata = await GetDouyinID(String(options.url)); + result = await new DouyinData(config.type, config.cookie).GetData({ ...options, ...iddata }); + } + break; + } + default: + result = ''; + break; + } + return { + code: result !== false && result !== '' ? 200 : 503, + message: result !== false && result !== '' ? 'success' : 'error', + data: result !== false && result !== '' ? result : null + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1c2luZXNzL2RvdXlpbi9yZXN1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQVEvRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssVUFBVSxZQUFZLENBQ3hDLFNBQXVCLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBa0IsRUFDckQsVUFBVSxFQUF1QjtJQUNqQyxJQUFJLE1BQVcsQ0FBQTtJQUNmLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLHdFQUEyQjtRQUMzQix3RUFBMkI7UUFDM0Isb0dBQStCO1FBQy9CLGlFQUEwQjtRQUMxQiwwREFBeUI7UUFDekIsb0VBQThCO1FBQzlCLHdFQUEyQjtRQUMzQiwwREFBeUI7UUFDekIsK0VBQTRCO1FBQzVCLDhFQUEyQixDQUFDLENBQUMsQ0FBQztZQUM1QixNQUFNLEdBQUcsTUFBTSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDMUUsTUFBSztRQUNQLENBQUM7UUFDRCx5REFBd0IsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQztnQkFDbEIsTUFBTSxHQUFHLE1BQU0sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQzVFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLE1BQU0sR0FBRyxNQUFNLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7Z0JBQ3JELE1BQU0sR0FBRyxNQUFNLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQTtZQUM5RixDQUFDO1lBQ0QsTUFBSztRQUNQLENBQUM7UUFDRCxzRkFBNkI7UUFDN0Isc0ZBQTZCO1FBQzdCLHVFQUEwQixDQUFDLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO2dCQUNsQixNQUFNLEdBQUcsTUFBTSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDNUUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtnQkFDckQsTUFBTSxHQUFHLE1BQU0sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1lBQzlGLENBQUM7WUFDRCxNQUFLO1FBQ1AsQ0FBQztRQUNEO1lBQ0UsTUFBTSxHQUFHLEVBQUUsQ0FBQTtZQUNYLE1BQUs7SUFDVCxDQUFDO0lBQ0QsT0FBTztRQUNMLElBQUksRUFBRSxNQUFNLEtBQUssS0FBSyxJQUFJLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRztRQUNuRCxPQUFPLEVBQUUsTUFBTSxLQUFLLEtBQUssSUFBSSxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU87UUFDaEUsSUFBSSxFQUFFLE1BQU0sS0FBSyxLQUFLLElBQUksTUFBTSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJO0tBQ3hELENBQUE7QUFFSCxDQUFDIn0= \ No newline at end of file diff --git a/amagi/lib/lib/business/douyin/sign/a_bogus.d.ts b/amagi/lib/lib/business/douyin/sign/a_bogus.d.ts new file mode 100644 index 00000000..124c937e --- /dev/null +++ b/amagi/lib/lib/business/douyin/sign/a_bogus.d.ts @@ -0,0 +1,2 @@ +declare const _default: (url: string, user_agent: string) => string; +export default _default; diff --git a/amagi/lib/lib/business/douyin/sign/a_bogus.js b/amagi/lib/lib/business/douyin/sign/a_bogus.js new file mode 100644 index 00000000..5e211a61 --- /dev/null +++ b/amagi/lib/lib/business/douyin/sign/a_bogus.js @@ -0,0 +1,464 @@ +// All the content in this article is only for learning and communication use, not for any other purpose, strictly prohibited for commercial use and illegal use, otherwise all the consequences are irrelevant to the author! +class SM3 { + reg; + chunk; + size; + constructor() { + this.reg = []; + this.chunk = []; + this.size = 0; + this.reset(); + } + reset() { + this.reg[0] = 1937774191; + this.reg[1] = 1226093241; + this.reg[2] = 388252375; + this.reg[3] = 3666478592; + this.reg[4] = 2842636476; + this.reg[5] = 372324522; + this.reg[6] = 3817729613; + this.reg[7] = 2969243214; + this.chunk = []; + this.size = 0; + } + write(e) { + const a = typeof e === 'string' ? this.stringToBytes(e) : e; + this.size += a.length; + let f = 64 - this.chunk.length; + if (a.length < f) { + this.chunk = this.chunk.concat(a); + } + else { + this.chunk = this.chunk.concat(a.slice(0, f)); + while (this.chunk.length >= 64) { + this._compress(this.chunk); + f < a.length ? (this.chunk = a.slice(f, Math.min(f + 64, a.length))) : (this.chunk = []); + f += 64; + } + } + } + sum(e, t) { + if (e) { + this.reset(); + this.write(e); + } + this._fill(); + for (let f = 0; f < this.chunk.length; f += 64) { + this._compress(this.chunk.slice(f, f + 64)); + } + let i = null; + if (t === 'hex') { + i = ''; + for (let f = 0; f < 8; f++) { + i += this.padHex(this.reg[f].toString(16), 8); + } + } + else { + i = new Array(32); + for (let f = 0; f < 8; f++) { + let c = this.reg[f]; + i[4 * f + 3] = (255 & c) >>> 0; + c >>>= 8; + i[4 * f + 2] = (255 & c) >>> 0; + c >>>= 8; + i[4 * f + 1] = (255 & c) >>> 0; + c >>>= 8; + i[4 * f] = (255 & c) >>> 0; + } + } + this.reset(); + return i; + } + _compress(t) { + if (t.length < 64) { + console.error('compress error: not enough data'); + } + else { + for (var f = ((e) => { + for (var r = new Array(132), t = 0; t < 16; t++) { + ; + (r[t] = e[4 * t] << 24), (r[t] |= e[4 * t + 1] << 16), (r[t] |= e[4 * t + 2] << 8), (r[t] |= e[4 * t + 3]), (r[t] >>>= 0); + } + for (var n = 16; n < 68; n++) { + let a = r[n - 16] ^ r[n - 9] ^ this.le(r[n - 3], 15); + (a = a ^ this.le(a, 15) ^ this.le(a, 23)), (r[n] = (a ^ this.le(r[n - 13], 7) ^ r[n - 6]) >>> 0); + } + for (n = 0; n < 64; n++) + r[n + 68] = (r[n] ^ r[n + 4]) >>> 0; + return r; + })(t), i = this.reg.slice(0), c = 0; c < 64; c++) { + let o = this.le(i[0], 12) + i[4] + this.le(this.de(c), c); + const s = ((o = this.le((o = (4294967295 & o) >>> 0), 7)) ^ this.le(i[0], 12)) >>> 0; + let u = this.pe(c, i[0], i[1], i[2]); + u = (4294967295 & (u = u + i[3] + s + f[c + 68])) >>> 0; + let b = this.he(c, i[4], i[5], i[6]); + (b = (4294967295 & (b = b + i[7] + o + f[c])) >>> 0), + (i[3] = i[2]), + (i[2] = this.le(i[1], 9)), + (i[1] = i[0]), + (i[0] = u), + (i[7] = i[6]), + (i[6] = this.le(i[5], 19)), + (i[5] = i[4]), + (i[4] = (b ^ this.le(b, 9) ^ this.le(b, 17)) >>> 0); + } + for (let l = 0; l < 8; l++) + this.reg[l] = (this.reg[l] ^ i[l]) >>> 0; + } + } + _fill() { + let a = 8 * this.size; + let f = this.chunk.push(128) % 64; + while (64 - f < 8) { + f -= 64; + } + while (f < 56) { + this.chunk.push(0); + f++; + } + for (let i = 0; i < 4; i++) { + const c = Math.floor(a / 0x100000000); + this.chunk.push((c >>> (8 * (3 - i))) & 255); + } + for (let i = 0; i < 4; i++) { + this.chunk.push((a >>> (8 * (3 - i))) & 255); + } + } + de(e) { + return 0 <= e && e < 16 ? 2043430169 : 16 <= e && e < 64 ? 2055708042 : (console.error('invalid j for constant Tj'), 0); + } + pe(e, r, t, n) { + return 0 <= e && e < 16 ? (r ^ t ^ n) >>> 0 : 16 <= e && e < 64 ? ((r & t) | (r & n) | (t & n)) >>> 0 : (console.error('invalid j for bool function FF'), 0); + } + he(e, r, t, n) { + return 0 <= e && e < 16 ? (r ^ t ^ n) >>> 0 : 16 <= e && e < 64 ? ((r & t) | (~r & n)) >>> 0 : (console.error('invalid j for bool function GG'), 0); + } + le(e, r) { + return ((e << (r %= 32)) | (e >>> (32 - r))) >>> 0; + } + stringToBytes(str) { + const n = encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (_, r) => String.fromCharCode(parseInt(r, 16))); + const a = new Array(n.length); + for (let i = 0; i < n.length; i++) { + a[i] = n.charCodeAt(i); + } + return a; + } + padHex(num, size) { + return num.padStart(size, '0'); + } +} +function rc4_encrypt(plaintext, key) { + const s = []; + for (var i = 0; i < 256; i++) { + s[i] = i; + } + var j = 0; + for (var i = 0; i < 256; i++) { + j = (j + s[i] + key.charCodeAt(i % key.length)) % 256; + var temp = s[i]; + s[i] = s[j]; + s[j] = temp; + } + var i = 0; + var j = 0; + const cipher = []; + for (let k = 0; k < plaintext.length; k++) { + i = (i + 1) % 256; + j = (j + s[i]) % 256; + var temp = s[i]; + s[i] = s[j]; + s[j] = temp; + const t = (s[i] + s[j]) % 256; + cipher.push(String.fromCharCode(s[t] ^ plaintext.charCodeAt(k))); + } + return cipher.join(''); +} +function result_encrypt(long_str, num) { + const s_obj = { + s0: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=', + s1: 'Dkdpgh4ZKsQB80/Mfvw36XI1R25+WUAlEi7NLboqYTOPuzmFjJnryx9HVGcaStCe=', + s2: 'Dkdpgh4ZKsQB80/Mfvw36XI1R25-WUAlEi7NLboqYTOPuzmFjJnryx9HVGcaStCe=', + s3: 'ckdp1h4ZKsUB80/Mfvw36XIgR25+WQAlEi7NLboqYTOPuzmFjJnryx9HVGDaStCe', + s4: 'Dkdpgh2ZmsQB80/MfvV36XI1R45-WUAlEixNLwoqYTOPuzKFjJnry79HbGcaStCe' + }; + const constant = { + '0': 16515072, + '1': 258048, + '2': 4032, + str: s_obj[num] + }; + let result = ''; + let lound = 0; + let long_int = get_long_int(lound, long_str); + for (let i = 0; i < (long_str.length / 3) * 4; i++) { + if (Math.floor(i / 4) !== lound) { + lound += 1; + long_int = get_long_int(lound, long_str); + } + let key = i % 4; + let temp_int; + switch (key) { + case 0: + temp_int = (long_int & constant['0']) >> 18; + result += constant['str'].charAt(temp_int); + break; + case 1: + temp_int = (long_int & constant['1']) >> 12; + result += constant['str'].charAt(temp_int); + break; + case 2: + temp_int = (long_int & constant['2']) >> 6; + result += constant['str'].charAt(temp_int); + break; + case 3: + temp_int = long_int & 63; + result += constant['str'].charAt(temp_int); + break; + default: + break; + } + } + return result; +} +function get_long_int(round, long_str) { + round = round * 3; + return (long_str.charCodeAt(round) << 16) | (long_str.charCodeAt(round + 1) << 8) | long_str.charCodeAt(round + 2); +} +function gener_random(random, option) { + return [ + (random & 255 & 170) | (option[0] & 85), // 163 + (random & 255 & 85) | (option[0] & 170), //87 + ((random >> 8) & 255 & 170) | (option[1] & 85), //37 + ((random >> 8) & 255 & 85) | (option[1] & 170) //41 + ]; +} +function generate_rc4_bb_str(url_search_params, user_agent, window_env_str, suffix = 'cus', Arguments = [0, 1, 14]) { + let sm3 = new SM3(); + let start_time = Date.now(); + // url_search_params两次sm3之的结果 + const url_search_params_list = sm3.sum(sm3.sum(url_search_params + suffix)); + // 对后缀两次sm3之的结果 + const cus = sm3.sum(sm3.sum(suffix)); + // 对ua处理之后的结果 + const ua = sm3.sum(result_encrypt(rc4_encrypt(user_agent, String.fromCharCode.apply(null, [0.00390625, 1, 14])), 's3')); + // + const end_time = Date.now(); + // b object initialization + let b = { + 8: 3, // 固定 + 10: end_time, // 3次加密结束时间 + 15: { + aid: 6383, + pageId: 6241, + boe: false, + ddrt: 7, + paths: { + include: [{}, {}, {}, {}, {}, {}, {}], + exclude: [] + }, + track: { + mode: 0, + delay: 300, + paths: [] + }, + dump: true, + rpU: '' + }, + 16: start_time, // 3次加密开始时间 + 18: 44, // 固定 + 19: [1, 0, 1, 5] + }; + // 3次加密开始时间 + b[20] = (b[16] >> 24) & 255; + b[21] = (b[16] >> 16) & 255; + b[22] = (b[16] >> 8) & 255; + b[23] = b[16] & 255; + b[24] = (b[16] / 256 / 256 / 256 / 256) >> 0; + b[25] = (b[16] / 256 / 256 / 256 / 256 / 256) >> 0; + // 参数Arguments [0, 1, 14, ...] + // let Arguments = [0, 1, 14] + b[26] = (Arguments[0] >> 24) & 255; + b[27] = (Arguments[0] >> 16) & 255; + b[28] = (Arguments[0] >> 8) & 255; + b[29] = Arguments[0] & 255; + b[30] = (Arguments[1] / 256) & 255; + b[31] = Arguments[1] % 256 & 255; + b[32] = (Arguments[1] >> 24) & 255; + b[33] = (Arguments[1] >> 16) & 255; + b[34] = (Arguments[2] >> 24) & 255; + b[35] = (Arguments[2] >> 16) & 255; + b[36] = (Arguments[2] >> 8) & 255; + b[37] = Arguments[2] & 255; + // (url_search_params + "cus") 两次sm3之的结果 + /** let url_search_params_list = [ + 91, 186, 35, 86, 143, 253, 6, 76, + 34, 21, 167, 148, 7, 42, 192, 219, + 188, 20, 182, 85, 213, 74, 213, 147, + 37, 155, 93, 139, 85, 118, 228, 213 + ] */ + b[38] = url_search_params_list[21]; + b[39] = url_search_params_list[22]; + // ("cus") 对后缀两次sm3之的结果 + /** + * let cus = [ + 136, 101, 114, 147, 58, 77, 207, 201, + 215, 162, 154, 93, 248, 13, 142, 160, + 105, 73, 215, 241, 83, 58, 51, 43, + 255, 38, 168, 141, 216, 194, 35, 236 + ] */ + b[40] = cus[21]; + b[41] = cus[22]; + // 对ua处理之后的结果 + /** + * let ua = [ + 129, 190, 70, 186, 86, 196, 199, 53, + 99, 38, 29, 209, 243, 17, 157, 69, + 147, 104, 53, 23, 114, 126, 66, 228, + 135, 30, 168, 185, 109, 156, 251, 88 + ] */ + b[42] = ua[23]; + b[43] = ua[24]; + // 3次加密结束时间 + b[44] = (b[10] >> 24) & 255; + b[45] = (b[10] >> 16) & 255; + b[46] = (b[10] >> 8) & 255; + b[47] = b[10] & 255; + b[48] = b[8]; + b[49] = (b[10] / 256 / 256 / 256 / 256) >> 0; + b[50] = (b[10] / 256 / 256 / 256 / 256 / 256) >> 0; + // object配置项 + b[51] = b[15].pageId; + b[52] = (b[15].pageId >> 24) & 255; + b[53] = (b[15].pageId >> 16) & 255; + b[54] = (b[15].pageId >> 8) & 255; + b[55] = b[15].pageId & 255; + b[56] = b[15].aid; + b[57] = b[15].aid & 255; + b[58] = (b[15].aid >> 8) & 255; + b[59] = (b[15].aid >> 16) & 255; + b[60] = (b[15].aid >> 24) & 255; + // 中间进行了环境检测 + // 代码索引: 2496 索引值: 17 (索引64关键条件) + // '1536|747|1536|834|0|30|0|0|1536|834|1536|864|1525|747|24|24|Win32'.charCodeAt()得到65位数组 + /** + * let window_env_list = [49, 53, 51, 54, 124, 55, 52, 55, 124, 49, 53, 51, 54, 124, 56, 51, 52, 124, 48, 124, 51, + * 48, 124, 48, 124, 48, 124, 49, 53, 51, 54, 124, 56, 51, 52, 124, 49, 53, 51, 54, 124, 56, + * 54, 52, 124, 49, 53, 50, 53, 124, 55, 52, 55, 124, 50, 52, 124, 50, 52, 124, 87, 105, 110, + * 51, 50] + */ + const window_env_list = []; + for (let index = 0; index < window_env_str.length; index++) { + window_env_list.push(window_env_str.charCodeAt(index)); + } + b[64] = window_env_list.length; + b[65] = b[64] & 255; + b[66] = (b[64] >> 8) & 255; + b[69] = [].length; + b[70] = b[69] & 255; + b[71] = (b[69] >> 8) & 255; + b[72] = + b[18] ^ + b[20] ^ + b[26] ^ + b[30] ^ + b[38] ^ + b[40] ^ + b[42] ^ + b[21] ^ + b[27] ^ + b[31] ^ + b[35] ^ + b[39] ^ + b[41] ^ + b[43] ^ + b[22] ^ + b[28] ^ + b[32] ^ + b[36] ^ + b[23] ^ + b[29] ^ + b[33] ^ + b[37] ^ + b[44] ^ + b[45] ^ + b[46] ^ + b[47] ^ + b[48] ^ + b[49] ^ + b[50] ^ + b[24] ^ + b[25] ^ + b[52] ^ + b[53] ^ + b[54] ^ + b[55] ^ + b[57] ^ + b[58] ^ + b[59] ^ + b[60] ^ + b[65] ^ + b[66] ^ + b[70] ^ + b[71]; + let bb = [ + b[18], + b[20], + b[52], + b[26], + b[30], + b[34], + b[58], + b[38], + b[40], + b[53], + b[42], + b[21], + b[27], + b[54], + b[55], + b[31], + b[35], + b[57], + b[39], + b[41], + b[43], + b[22], + b[28], + b[32], + b[60], + b[36], + b[23], + b[29], + b[33], + b[37], + b[44], + b[45], + b[59], + b[46], + b[47], + b[48], + b[49], + b[50], + b[24], + b[25], + b[65], + b[66], + b[70], + b[71] + ]; + bb = bb.concat(window_env_list).concat(b[72]); + return rc4_encrypt(String.fromCharCode.apply(null, bb), String.fromCharCode.apply(null, [121])); +} +function generate_random_str() { + let random_str_list = []; + random_str_list = random_str_list.concat(gener_random(Math.random() * 10000, [3, 45])); + random_str_list = random_str_list.concat(gener_random(Math.random() * 10000, [1, 0])); + random_str_list = random_str_list.concat(gener_random(Math.random() * 10000, [1, 5])); + return String.fromCharCode.apply(null, random_str_list); +} +export default (url, user_agent) => { + let result_str = generate_random_str() + generate_rc4_bb_str(new URLSearchParams(new URL(url).search).toString(), user_agent, '1536|747|1536|834|0|30|0|0|1536|834|1536|864|1525|747|24|24|Win32'); + return result_encrypt(result_str, 's4') + '='; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYV9ib2d1cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9idXNpbmVzcy9kb3V5aW4vc2lnbi9hX2JvZ3VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhOQUE4TjtBQUM5TixNQUFNLEdBQUc7SUFDUCxHQUFHLENBQVU7SUFDYixLQUFLLENBQVU7SUFDZixJQUFJLENBQVE7SUFFWjtRQUNFLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFBO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUE7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQTtRQUNiLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNkLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUE7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUE7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUE7UUFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUE7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUE7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUE7UUFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUE7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUE7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUE7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQTtJQUNmLENBQUM7SUFFRCxLQUFLLENBQUUsQ0FBb0I7UUFDekIsTUFBTSxDQUFDLEdBQWEsT0FB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QUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO2dCQUM3SCxDQUFDO2dCQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDbkQ7b0JBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtnQkFDcEcsQ0FBQztnQkFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7b0JBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUM1RCxPQUFPLENBQUMsQ0FBQTtZQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNMLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDckIsQ0FBQyxHQUFHLENBQUMsRUFDUCxDQUFDLEdBQUcsRUFBRSxFQUNOLENBQUMsRUFBRSxFQUNILENBQUM7Z0JBQ0QsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtnQkFDekQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ3BGLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ3BDLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ3ZELElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2pDO2dCQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUN4RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3pCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDYixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNiLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUMxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxD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QUssRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUM1QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ25ELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDaEMsS0FBSyxJQUFJLENBQUMsQ0FBQTtZQUNWLFFBQVEsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQzFDLENBQUM7UUFDRCxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ2YsSUFBSSxRQUFRLENBQUE7UUFDWixRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ1osS0FBSyxDQUFDO2dCQUNKLFFBQVEsR0FBRyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7Z0JBQzNDLE1BQU0sSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO2dCQUMxQyxNQUFLO1lBQ1AsS0FBSyxDQUFDO2dCQUNKLFFBQVEsR0FBRyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7Z0JBQzNDLE1BQU0sSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO2dCQUMxQyxNQUFLO1lBQ1AsS0FBSyxDQUFDO2dCQUNKLFFBQVEsR0FBRyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQzFDLE1BQU0sSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO2dCQUMxQyxNQUFLO1lBQ1AsS0FBSyxDQUFDO2dCQUNKLFFB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RyxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRWxELDhCQUE4QjtJQUM5Qiw2QkFBNkI7SUFDN0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtJQUNsQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFBO0lBQ2xDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUE7SUFDakMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUE7SUFFMUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtJQUNsQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUE7SUFDaEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtJQUNsQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFBO0lBRWxDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUE7SUFDbEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtJQUNsQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFBO0lBQ2pDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFBO0lBRTFCLHdDQUF3QztJQUN4Qzs7Ozs7U0FLSztJQUNMLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNsQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsc0JBQXNCLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFbEMsdUJBQXVCO0lBQ3ZCOzs7Ozs7U0FNSztJQUNMLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDZixDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRWYsYUFBYTtJQUNiOzs7Ozs7U0FNSztJQUNMLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDZCxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRWQsV0FBVztJQUNYLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUE7SUFDM0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtJQUMzQixDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFBO0lBQzFCLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFBO0lBQ25CLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDWixDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzVDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRWxELFlBQVk7SUFDWixDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQTtJQUNwQixDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtJQUNsQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtJQUNsQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtJQUNqQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUE7SUFFMUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUE7SUFDakIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFBO0lBQ3ZCLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFBO0lBQzlCLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFBO0lBQy9CLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFBO0lBRS9CLFlBQVk7SUFDWixrQ0FBa0M7SUFDbEMsMEZBQTBGO0lBQzFGOzs7OztPQUtHO0lBQ0gsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFBO0lBQzFCLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDM0QsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDeEQsQ0FBQztJQUNELENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFBO0lBQzlCLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFBO0lBQ25CLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUE7SUFFMUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUE7SUFDakIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUE7SUFDbkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtJQUUxQixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ1AsSUFBSSxFQUFFLEdBQUc7UUFDUCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUNOLENBQUE7SUFDRCxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDN0MsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFFLEdBQUcsQ0FBRSxDQUFDLENBQUMsQ0FBQTtBQUNuRyxDQUFDO0FBRUQsU0FBUyxtQkFBbUI7SUFDMUIsSUFBSSxlQUFlLEdBQVUsRUFBRSxDQUFBO0lBQy9CLGVBQWUsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUFDLENBQUMsQ0FBQTtJQUN4RixlQUFlLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUUsQ0FBQyxDQUFDLENBQUE7SUFDdkYsZUFBZSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3ZGLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFBO0FBQ3pELENBQUM7QUFFRCxlQUFlLENBQUMsR0FBVyxFQUFFLFVBQWtCLEVBQUUsRUFBRTtJQUNqRCxJQUFJLFVBQVUsR0FBRyxtQkFBbUIsRUFBRSxHQUFHLG1CQUFtQixDQUFDLElBQUksZUFBZSxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxtRUFBbUUsQ0FBQyxDQUFBO0lBQ2xNLE9BQU8sY0FBYyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUE7QUFDL0MsQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/amagi/lib/lib/business/douyin/sign/index.d.ts b/amagi/lib/lib/business/douyin/sign/index.d.ts new file mode 100644 index 00000000..9e5f4470 --- /dev/null +++ b/amagi/lib/lib/business/douyin/sign/index.d.ts @@ -0,0 +1,8 @@ +export default class sign { + /** 生成一个指定长度的随机字符串 */ + static Mstoken(length: number): string; + /** a_bogus 签名算法 */ + static AB(url: string): string; + /** 生成一个唯一的验证字符串 */ + static VerifyFpManager(): string; +} diff --git a/amagi/lib/lib/business/douyin/sign/index.js b/amagi/lib/lib/business/douyin/sign/index.js new file mode 100644 index 00000000..1852cb47 --- /dev/null +++ b/amagi/lib/lib/business/douyin/sign/index.js @@ -0,0 +1,29 @@ +import crypto from 'crypto'; +import a_bogus from './a_bogus.js'; +const headers = { + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36' +}; +export default class sign { + /** 生成一个指定长度的随机字符串 */ + static Mstoken(length) { + const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + const randomBytes = crypto.randomBytes(length); + return Array.from(randomBytes, (byte) => characters[byte % characters.length]).join(''); + } + /** a_bogus 签名算法 */ + static AB(url) { + return a_bogus(url, headers['User-Agent']); + } + /** 生成一个唯一的验证字符串 */ + static VerifyFpManager() { + const e = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); + const t = e.length; + const n = new Date().getTime().toString(36); + const r = []; + (r[8] = r[13] = r[18] = r[23] = '_'), (r[14] = '4'); + for (var o, i = 0; i < 36; i++) + r[i] || ((o = 0 | (Math.random() * t)), (r[i] = e[i == 19 ? (3 & o) | 8 : o])); + return 'verify_' + n + '_' + r.join(''); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYnVzaW5lc3MvZG91eWluL3NpZ24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFBO0FBQzNCLE9BQU8sT0FBTyxNQUFNLFdBQVcsQ0FBQTtBQUUvQixNQUFNLE9BQU8sR0FBRztJQUNkLFlBQVksRUFDVixpSEFBaUg7Q0FDcEgsQ0FBQTtBQUNELE1BQU0sQ0FBQyxPQUFPLE9BQU8sSUFBSTtJQUN2QixxQkFBcUI7SUFDckIsTUFBTSxDQUFDLE9BQU8sQ0FBRSxNQUFjO1FBQzVCLE1BQU0sVUFBVSxHQUFHLGdFQUFnRSxDQUFBO1FBQ25GLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDOUMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDekYsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixNQUFNLENBQUMsRUFBRSxDQUFFLEdBQVc7UUFDcEIsT0FBTyxPQUFPLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsTUFBTSxDQUFDLGVBQWU7UUFDcEIsTUFBTSxDQUFDLEdBQUcsZ0VBQWdFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3BGLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUE7UUFDbEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDM0MsTUFBTSxDQUFDLEdBQXdCLEVBQUUsQ0FFOUI7UUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtRQUN2RCxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDOUcsT0FBTyxTQUFTLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7Q0FDRiJ9 \ No newline at end of file diff --git a/amagi/lib/lib/business/index.d.ts b/amagi/lib/lib/business/index.d.ts new file mode 100644 index 00000000..06dbb3fa --- /dev/null +++ b/amagi/lib/lib/business/index.d.ts @@ -0,0 +1,3 @@ +export * from '../business/bilibili/index.js' +export * from '../business/douyin/index.js' +export * from '../business/xiaohongshu/index.js' diff --git a/amagi/lib/lib/business/index.js b/amagi/lib/lib/business/index.js new file mode 100644 index 00000000..044ed7c6 --- /dev/null +++ b/amagi/lib/lib/business/index.js @@ -0,0 +1,4 @@ +export * from '../business/bilibili/index.js' +export * from '../business/douyin/index.js' +export * from '../business/xiaohongshu/index.js' +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVzaW5lc3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2QyxjQUFjLHVCQUF1QixDQUFBO0FBQ3JDLGNBQWMsNEJBQTRCLENBQUEifQ== \ No newline at end of file diff --git a/amagi/lib/lib/business/xiaohongshu/AIP.d.ts b/amagi/lib/lib/business/xiaohongshu/AIP.d.ts new file mode 100644 index 00000000..7c89bf8d --- /dev/null +++ b/amagi/lib/lib/business/xiaohongshu/AIP.d.ts @@ -0,0 +1,14 @@ +import { XiaohongshuDataOptionsMapKeys } from '../../types/index.js'; +declare class XiaohongshuAPI { + 单个笔记(data: XiaohongshuDataOptionsMapKeys['NoteInfoParams']): XiaoHongShuAPIType; +} +interface XiaoHongShuAPIType { + /** 请求地址 */ + url: string; + /** 请求方法 */ + method: string; + /** 请求体 */ + body: any; +} +declare const _default: XiaohongshuAPI; +export default _default; diff --git a/amagi/lib/lib/business/xiaohongshu/AIP.js b/amagi/lib/lib/business/xiaohongshu/AIP.js new file mode 100644 index 00000000..5f36436a --- /dev/null +++ b/amagi/lib/lib/business/xiaohongshu/AIP.js @@ -0,0 +1,17 @@ +class XiaohongshuAPI { + 单个笔记(data) { + return { + url: 'https://edith.xiaohongshu.com/api/sns/web/v1/feed', + method: 'POST', + body: { + source_note_id: data.source_note_id, + image_formats: ['jpg', 'webp', 'avif'], + extra: { need_body_topic: 1 }, + xsec_source: 'pc_feed', + xsec_token: data.xsec_token + } + }; + } +} +export default new XiaohongshuAPI(); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQUlQLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1c2luZXNzL3hpYW9ob25nc2h1L0FJUC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLGNBQWM7SUFDbEIsSUFBSSxDQUFFLElBQXFEO1FBQ3pELE9BQU87WUFDTCxHQUFHLEVBQUUsbURBQW1EO1lBQ3hELE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFO2dCQUNKLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztnQkFDbkMsYUFBYSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7Z0JBQ3RDLEtBQUssRUFBRSxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUU7Z0JBQzdCLFdBQVcsRUFBRSxTQUFTO2dCQUN0QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDNUI7U0FDRixDQUFBO0lBQ0gsQ0FBQztDQUNGO0FBV0QsZUFBZSxJQUFJLGNBQWMsRUFBRSxDQUFBIn0= \ No newline at end of file diff --git a/amagi/lib/lib/business/xiaohongshu/getdata.d.ts b/amagi/lib/lib/business/xiaohongshu/getdata.d.ts new file mode 100644 index 00000000..6132a9c7 --- /dev/null +++ b/amagi/lib/lib/business/xiaohongshu/getdata.d.ts @@ -0,0 +1,13 @@ +import { XiaohongshuDataType, XiaohongshuOptionsType } from '../../types/index.js'; +export default class XiaohongshuData { + type: any; + headers: any; + constructor(type: keyof typeof XiaohongshuDataType, cookie: string); + GetData(data?: XiaohongshuOptionsType): Promise; + GlobalGetData(options: { + url: string; + method?: string; + headers?: any; + body?: any; + }): Promise; +} diff --git a/amagi/lib/lib/business/xiaohongshu/getdata.js b/amagi/lib/lib/business/xiaohongshu/getdata.js new file mode 100644 index 00000000..edbd7a41 --- /dev/null +++ b/amagi/lib/lib/business/xiaohongshu/getdata.js @@ -0,0 +1,58 @@ +import { XiaohongshuAPI } from '../../business/xiaohongshu/index.js'; +import { Networks, logger } from '../../model/index.js'; +import { XiaohongshuSign } from '../../business/xiaohongshu/index.js'; +export default class XiaohongshuData { + type; + headers; + constructor(type, cookie) { + this.type = type; + this.headers = headers; + this.headers.cookie = cookie; + } + async GetData(data = {}) { + switch (this.type) { + case "\u5355\u4E2A\u7B14\u8BB0" /* XiaohongshuDataType.单个笔记 */: { + const API = XiaohongshuAPI.单个笔记({ source_note_id: data.source_note_id, xsec_token: data.xsec_token || 'xsec_token' }); + const xs = XiaohongshuSign.x_s(API.url, this.headers.cookie, API.body); + const WorkData = await this.GlobalGetData({ + url: API.url, + method: 'POST', + headers: { + ...this.headers, + 'x-s': xs, + 'x-b3-traceid': XiaohongshuSign.x_b3_traceid(), + 'x-s-common': XiaohongshuSign.x_s_common({ x_s: xs, cookie: this.headers.cookie }), + 'x-t': Date.now() + }, + body: API.body + }); + return WorkData; + } + default: + break; + } + } + async GlobalGetData(options) { + const result = await new Networks(options).getData(); + if (!result || result === '') { + logger.error('获取响应数据失败!\n请求类型:' + this.type + '\n请求URL:' + options.url); + } + return result; + } +} +const headers = { + 'accept': 'application/json, text/plain, */*', + 'accept-language': 'zh-CN,zh;q=0.9', + 'content-type': 'application/json;charset=UTF-8', + 'origin': 'https://www.xiaohongshu.com', + 'priority': 'u=1, i', + 'referer': 'https://www.xiaohongshu.com/', + 'sec-ch-ua': '"Chromium";v="128", "Not;A=Brand";v="24", "Google Chrome";v="128"', + 'sec-ch-ua-mobile': '?0', + 'sec-ch-ua-platform': '"Windows"', + 'sec-fetch-dest': 'empty', + 'sec-fetch-mode': 'cors', + 'sec-fetch-site': 'same-site', + 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36', +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0ZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9idXNpbmVzcy94aWFvaG9uZ3NodS9nZXRkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUUzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFFNUQsTUFBTSxDQUFDLE9BQU8sT0FBTyxlQUFlO0lBQ2xDLElBQUksQ0FBSztJQUNULE9BQU8sQ0FBSztJQUNaLFlBQWEsSUFBc0MsRUFBRSxNQUFjO1FBQ2pFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtJQUM5QixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBRSxPQUFPLEVBQTRCO1FBQ2hELFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLDhEQUE2QixDQUFDLENBQUMsQ0FBQztnQkFDOUIsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBd0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsSUFBSSxZQUFZLEVBQUUsQ0FBQyxDQUFBO2dCQUMvSCxNQUFNLEVBQUUsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUN0RSxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQ3ZDO29CQUNFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRztvQkFDWixNQUFNLEVBQUUsTUFBTTtvQkFDZCxPQUFPLEVBQUU7d0JBQ1AsR0FBRyxJQUFJLENBQUMsT0FBTzt3QkFDZixLQUFLLEVBQUUsRUFBRTt3QkFDVCxjQUFjLEVBQUUsZUFBZSxDQUFDLFlBQVksRUFBRTt3QkFDOUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNsRixLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtxQkFDbEI7b0JBQ0QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO2lCQUNmLENBQ0YsQ0FBQTtnQkFDRCxPQUFPLFFBQVEsQ0FBQTtZQUNqQixDQUFDO1lBRUQ7Z0JBQ0UsTUFBSztRQUNULENBQUM7SUFFSCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBRSxPQUFvRTtRQUN2RixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ3BELElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3pFLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxHQUFHO0lBQ2QsUUFBUSxFQUFFLG1DQUFtQztJQUM3QyxpQkFBaUIsRUFBRSxnQkFBZ0I7SUFDbkMsY0FBYyxFQUFFLGdDQUFnQztJQUNoRCxRQUFRLEVBQUUsNkJBQTZCO0lBQ3ZDLFVBQVUsRUFBRSxRQUFRO0lBQ3BCLFNBQVMsRUFBRSw4QkFBOEI7SUFDekMsV0FBVyxFQUFFLG1FQUFtRTtJQUNoRixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLG9CQUFvQixFQUFFLFdBQVc7SUFDakMsZ0JBQWdCLEVBQUUsT0FBTztJQUN6QixnQkFBZ0IsRUFBRSxNQUFNO0lBQ3hCLGdCQUFnQixFQUFFLFdBQVc7SUFDN0IsWUFBWSxFQUFFLGlIQUFpSDtDQUNoSSxDQUFBIn0= \ No newline at end of file diff --git a/amagi/lib/lib/business/xiaohongshu/index.d.ts b/amagi/lib/lib/business/xiaohongshu/index.d.ts new file mode 100644 index 00000000..5d17c4f8 --- /dev/null +++ b/amagi/lib/lib/business/xiaohongshu/index.d.ts @@ -0,0 +1,5 @@ +import { XiaohongshuSign } from './sign/index.js'; +import XiaohongshuAPI from './AIP.js'; +import XiaohongshuData from './getdata.js'; +import XiaohongshuResult from './result.js'; +export { XiaohongshuSign, XiaohongshuAPI, XiaohongshuData, XiaohongshuResult }; diff --git a/amagi/lib/lib/business/xiaohongshu/index.js b/amagi/lib/lib/business/xiaohongshu/index.js new file mode 100644 index 00000000..6469f714 --- /dev/null +++ b/amagi/lib/lib/business/xiaohongshu/index.js @@ -0,0 +1,6 @@ +import { XiaohongshuSign } from './sign/index.js'; +import XiaohongshuAPI from './AIP.js'; +import XiaohongshuData from './getdata.js'; +import XiaohongshuResult from './result.js'; +export { XiaohongshuSign, XiaohongshuAPI, XiaohongshuData, XiaohongshuResult }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVzaW5lc3MveGlhb2hvbmdzaHUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUN4QyxPQUFPLGNBQWMsTUFBTSxPQUFPLENBQUE7QUFDbEMsT0FBTyxlQUFlLE1BQU0sV0FBVyxDQUFBO0FBQ3ZDLE9BQU8saUJBQWlCLE1BQU0sVUFBVSxDQUFBO0FBRXhDLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxDQUFBIn0= \ No newline at end of file diff --git a/amagi/lib/lib/business/xiaohongshu/result.d.ts b/amagi/lib/lib/business/xiaohongshu/result.d.ts new file mode 100644 index 00000000..350293e5 --- /dev/null +++ b/amagi/lib/lib/business/xiaohongshu/result.d.ts @@ -0,0 +1,9 @@ +import { XiaohongshuDataType, XiaohongshuOptionsType, GetDataResponseType } from '../../types/index.js'; +interface configParams { + /** 请求数据的类型 */ + type: keyof typeof XiaohongshuDataType; + /** 小红书用户ck */ + cookie: string; +} +export default function XiaohongshuResult(config?: configParams, options?: XiaohongshuOptionsType): Promise; +export {}; diff --git a/amagi/lib/lib/business/xiaohongshu/result.js b/amagi/lib/lib/business/xiaohongshu/result.js new file mode 100644 index 00000000..a7610baf --- /dev/null +++ b/amagi/lib/lib/business/xiaohongshu/result.js @@ -0,0 +1,19 @@ +import { XiaohongshuData } from '../../business/xiaohongshu/index.js'; +export default async function XiaohongshuResult(config = { cookie: '' }, options = {}) { + let result; + switch (config.type) { + case "\u5355\u4E2A\u7B14\u8BB0" /* XiaohongshuDataType.单个笔记 */: { + result = await new XiaohongshuData(config.type, config.cookie).GetData(options); + break; + } + default: + result = ''; + break; + } + return { + code: result !== false && result !== '' ? 200 : 503, + message: result !== false && result !== '' ? 'success' : 'error', + data: result !== false && result !== '' ? result : null + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1c2luZXNzL3hpYW9ob25nc2h1L3Jlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFRNUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBQzdDLFNBQXVCLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBa0IsRUFDckQsVUFBVSxFQUE0QjtJQUV0QyxJQUFJLE1BQVcsQ0FBQTtJQUNmLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLDhEQUE2QixDQUFDLENBQUMsQ0FBQztZQUM5QixNQUFNLEdBQUcsTUFBTSxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDL0UsTUFBSztRQUNQLENBQUM7UUFFRDtZQUNFLE1BQU0sR0FBRyxFQUFFLENBQUE7WUFDWCxNQUFLO0lBQ1QsQ0FBQztJQUNELE9BQU87UUFDTCxJQUFJLEVBQUUsTUFBTSxLQUFLLEtBQUssSUFBSSxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUc7UUFDbkQsT0FBTyxFQUFFLE1BQU0sS0FBSyxLQUFLLElBQUksTUFBTSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPO1FBQ2hFLElBQUksRUFBRSxNQUFNLEtBQUssS0FBSyxJQUFJLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSTtLQUN4RCxDQUFBO0FBRUgsQ0FBQyJ9 \ No newline at end of file diff --git a/amagi/lib/lib/business/xiaohongshu/sign/generateX_S.d.ts b/amagi/lib/lib/business/xiaohongshu/sign/generateX_S.d.ts new file mode 100644 index 00000000..1c27c6f0 --- /dev/null +++ b/amagi/lib/lib/business/xiaohongshu/sign/generateX_S.d.ts @@ -0,0 +1,2 @@ +export declare function getPayload(base64String: string): string; +export declare function generateX_S(url: string, cookie: string, body?: any): string; diff --git a/amagi/lib/lib/business/xiaohongshu/sign/generateX_S.js b/amagi/lib/lib/business/xiaohongshu/sign/generateX_S.js new file mode 100644 index 00000000..379fc9b9 --- /dev/null +++ b/amagi/lib/lib/business/xiaohongshu/sign/generateX_S.js @@ -0,0 +1,207 @@ +import crypto from 'crypto'; +let key = [187050025, 472920585, 186915882, 876157969, 255199502, 806945584, 220596020, 958210835, 757275681, + 940378667, 489892883, 705504304, 354103316, 688857884, 890312192, 219096591, 622400037, 254088489, + 907618332, 52759587, 907877143, 53870614, 839463457, 389417746, 975774727, 372382245, 437136414, + 909246726, 168694017, 473575703, 52697872, 1010440969 +]; +function des(key, message, encrypt, mode, iv, padding) { + if (encrypt) //如果是加密的话,首先转换编码 + message = unescape(encodeURIComponent(message)); + //declaring this locally speeds things up a bit + const spfunction1 = new Array(0x1010400, 0, 0x10000, 0x1010404, 0x1010004, 0x10404, 0x4, 0x10000, 0x400, 0x1010400, 0x1010404, 0x400, 0x1000404, 0x1010004, 0x1000000, 0x4, 0x404, 0x1000400, 0x1000400, 0x10400, 0x10400, 0x1010000, 0x1010000, 0x1000404, 0x10004, 0x1000004, 0x1000004, 0x10004, 0, 0x404, 0x10404, 0x1000000, 0x10000, 0x1010404, 0x4, 0x1010000, 0x1010400, 0x1000000, 0x1000000, 0x400, 0x1010004, 0x10000, 0x10400, 0x1000004, 0x400, 0x4, 0x1000404, 0x10404, 0x1010404, 0x10004, 0x1010000, 0x1000404, 0x1000004, 0x404, 0x10404, 0x1010400, 0x404, 0x1000400, 0x1000400, 0, 0x10004, 0x10400, 0, 0x1010004); + const spfunction2 = new Array(-0x7fef7fe0, -0x7fff8000, 0x8000, 0x108020, 0x100000, 0x20, -0x7fefffe0, -0x7fff7fe0, -0x7fffffe0, -0x7fef7fe0, -0x7fef8000, -0x80000000, -0x7fff8000, 0x100000, 0x20, -0x7fefffe0, 0x108000, 0x100020, -0x7fff7fe0, 0, -0x80000000, 0x8000, 0x108020, -0x7ff00000, 0x100020, -0x7fffffe0, 0, 0x108000, 0x8020, -0x7fef8000, -0x7ff00000, 0x8020, 0, 0x108020, -0x7fefffe0, 0x100000, -0x7fff7fe0, -0x7ff00000, -0x7fef8000, 0x8000, -0x7ff00000, -0x7fff8000, 0x20, -0x7fef7fe0, 0x108020, 0x20, 0x8000, -0x80000000, 0x8020, -0x7fef8000, 0x100000, -0x7fffffe0, 0x100020, -0x7fff7fe0, -0x7fffffe0, 0x100020, 0x108000, 0, -0x7fff8000, 0x8020, -0x80000000, -0x7fefffe0, -0x7fef7fe0, 0x108000); + const spfunction3 = new Array(0x208, 0x8020200, 0, 0x8020008, 0x8000200, 0, 0x20208, 0x8000200, 0x20008, 0x8000008, 0x8000008, 0x20000, 0x8020208, 0x20008, 0x8020000, 0x208, 0x8000000, 0x8, 0x8020200, 0x200, 0x20200, 0x8020000, 0x8020008, 0x20208, 0x8000208, 0x20200, 0x20000, 0x8000208, 0x8, 0x8020208, 0x200, 0x8000000, 0x8020200, 0x8000000, 0x20008, 0x208, 0x20000, 0x8020200, 0x8000200, 0, 0x200, 0x20008, 0x8020208, 0x8000200, 0x8000008, 0x200, 0, 0x8020008, 0x8000208, 0x20000, 0x8000000, 0x8020208, 0x8, 0x20208, 0x20200, 0x8000008, 0x8020000, 0x8000208, 0x208, 0x8020000, 0x20208, 0x8, 0x8020008, 0x20200); + const spfunction4 = new Array(0x802001, 0x2081, 0x2081, 0x80, 0x802080, 0x800081, 0x800001, 0x2001, 0, 0x802000, 0x802000, 0x802081, 0x81, 0, 0x800080, 0x800001, 0x1, 0x2000, 0x800000, 0x802001, 0x80, 0x800000, 0x2001, 0x2080, 0x800081, 0x1, 0x2080, 0x800080, 0x2000, 0x802080, 0x802081, 0x81, 0x800080, 0x800001, 0x802000, 0x802081, 0x81, 0, 0, 0x802000, 0x2080, 0x800080, 0x800081, 0x1, 0x802001, 0x2081, 0x2081, 0x80, 0x802081, 0x81, 0x1, 0x2000, 0x800001, 0x2001, 0x802080, 0x800081, 0x2001, 0x2080, 0x800000, 0x802001, 0x80, 0x800000, 0x2000, 0x802080); + const spfunction5 = new Array(0x100, 0x2080100, 0x2080000, 0x42000100, 0x80000, 0x100, 0x40000000, 0x2080000, 0x40080100, 0x80000, 0x2000100, 0x40080100, 0x42000100, 0x42080000, 0x80100, 0x40000000, 0x2000000, 0x40080000, 0x40080000, 0, 0x40000100, 0x42080100, 0x42080100, 0x2000100, 0x42080000, 0x40000100, 0, 0x42000000, 0x2080100, 0x2000000, 0x42000000, 0x80100, 0x80000, 0x42000100, 0x100, 0x2000000, 0x40000000, 0x2080000, 0x42000100, 0x40080100, 0x2000100, 0x40000000, 0x42080000, 0x2080100, 0x40080100, 0x100, 0x2000000, 0x42080000, 0x42080100, 0x80100, 0x42000000, 0x42080100, 0x2080000, 0, 0x40080000, 0x42000000, 0x80100, 0x2000100, 0x40000100, 0x80000, 0, 0x40080000, 0x2080100, 0x40000100); + const spfunction6 = new Array(0x20000010, 0x20400000, 0x4000, 0x20404010, 0x20400000, 0x10, 0x20404010, 0x400000, 0x20004000, 0x404010, 0x400000, 0x20000010, 0x400010, 0x20004000, 0x20000000, 0x4010, 0, 0x400010, 0x20004010, 0x4000, 0x404000, 0x20004010, 0x10, 0x20400010, 0x20400010, 0, 0x404010, 0x20404000, 0x4010, 0x404000, 0x20404000, 0x20000000, 0x20004000, 0x10, 0x20400010, 0x404000, 0x20404010, 0x400000, 0x4010, 0x20000010, 0x400000, 0x20004000, 0x20000000, 0x4010, 0x20000010, 0x20404010, 0x404000, 0x20400000, 0x404010, 0x20404000, 0, 0x20400010, 0x10, 0x4000, 0x20400000, 0x404010, 0x4000, 0x400010, 0x20004010, 0, 0x20404000, 0x20000000, 0x400010, 0x20004010); + const spfunction7 = new Array(0x200000, 0x4200002, 0x4000802, 0, 0x800, 0x4000802, 0x200802, 0x4200800, 0x4200802, 0x200000, 0, 0x4000002, 0x2, 0x4000000, 0x4200002, 0x802, 0x4000800, 0x200802, 0x200002, 0x4000800, 0x4000002, 0x4200000, 0x4200800, 0x200002, 0x4200000, 0x800, 0x802, 0x4200802, 0x200800, 0x2, 0x4000000, 0x200800, 0x4000000, 0x200800, 0x200000, 0x4000802, 0x4000802, 0x4200002, 0x4200002, 0x2, 0x200002, 0x4000000, 0x4000800, 0x200000, 0x4200800, 0x802, 0x200802, 0x4200800, 0x802, 0x4000002, 0x4200802, 0x4200000, 0x200800, 0, 0x2, 0x4200802, 0, 0x200802, 0x4200000, 0x800, 0x4000002, 0x4000800, 0x800, 0x200002); + const spfunction8 = new Array(0x10001040, 0x1000, 0x40000, 0x10041040, 0x10000000, 0x10001040, 0x40, 0x10000000, 0x40040, 0x10040000, 0x10041040, 0x41000, 0x10041000, 0x41040, 0x1000, 0x40, 0x10040000, 0x10000040, 0x10001000, 0x1040, 0x41000, 0x40040, 0x10040040, 0x10041000, 0x1040, 0, 0, 0x10040040, 0x10000040, 0x10001000, 0x41040, 0x40000, 0x41040, 0x40000, 0x10041000, 0x1000, 0x40, 0x10040040, 0x1000, 0x41040, 0x10001000, 0x40, 0x10000040, 0x10040000, 0x10040040, 0x10000000, 0x40000, 0x10001040, 0, 0x10041040, 0x40040, 0x10000040, 0x10040000, 0x10001000, 0x10001040, 0, 0x10041040, 0x41000, 0x41000, 0x1040, 0x1040, 0x40040, 0x10000000, 0x10041000); + // create the 16 or 48 subkeys we will need + // var keys = des_createKeys(key) + const keys = key; + let m = 0, i, j, temp, temp2, right1, right2, left, right, looping; + let cbcleft, cbcleft2, cbcright, cbcright2; + let endloop, loopinc; + let len = message.length; + let chunk = 0; + //set up the loops for single and triple des + var iterations = keys.length == 32 ? 3 : 9; //single or triple des + if (iterations == 3) { + looping = encrypt ? new Array(0, 32, 2) : new Array(30, -2, -2); + } + else { + looping = encrypt ? new Array(0, 32, 2, 62, 30, -2, 64, 96, 2) : new Array(94, 62, -2, 32, 64, 2, 30, -2, -2); + } + //pad the message depending on the padding parameter + if (padding == 2) + message += " "; //pad the message with spaces + else if (padding == 1) { + if (encrypt) { + temp = 8 - (len % 8); + message += String.fromCharCode(temp, temp, temp, temp, temp, temp, temp, temp); + if (temp === 8) + len += 8; + } + } //PKCS7 padding + else if (!padding) + message += "\0\0\0\0\0\0\0\0"; //pad the message out with null bytes + //store the result here + var result = ""; + var tempresult = ""; + if (mode == 1) { //CBC mode + cbcleft = (iv.charCodeAt(m++) << 24) | (iv.charCodeAt(m++) << 16) | (iv.charCodeAt(m++) << 8) | iv.charCodeAt(m++); + cbcright = (iv.charCodeAt(m++) << 24) | (iv.charCodeAt(m++) << 16) | (iv.charCodeAt(m++) << 8) | iv.charCodeAt(m++); + m = 0; + } + //loop through each 64 bit chunk of the message + while (m < len) { + left = (message.charCodeAt(m++) << 24) | (message.charCodeAt(m++) << 16) | (message.charCodeAt(m++) << 8) | message.charCodeAt(m++); + right = (message.charCodeAt(m++) << 24) | (message.charCodeAt(m++) << 16) | (message.charCodeAt(m++) << 8) | message.charCodeAt(m++); + //for Cipher Block Chaining mode, xor the message with the previous result + if (mode == 1) { + if (encrypt) { + left ^= cbcleft; + right ^= cbcright; + } + else { + cbcleft2 = cbcleft; + cbcright2 = cbcright; + cbcleft = left; + cbcright = right; + } + } + //first each 64 but chunk of the message must be permuted according to IP + temp = ((left >>> 4) ^ right) & 0x0f0f0f0f; + right ^= temp; + left ^= (temp << 4); + temp = ((left >>> 16) ^ right) & 0x0000ffff; + right ^= temp; + left ^= (temp << 16); + temp = ((right >>> 2) ^ left) & 0x33333333; + left ^= temp; + right ^= (temp << 2); + temp = ((right >>> 8) ^ left) & 0x00ff00ff; + left ^= temp; + right ^= (temp << 8); + temp = ((left >>> 1) ^ right) & 0x55555555; + right ^= temp; + left ^= (temp << 1); + left = ((left << 1) | (left >>> 31)); + right = ((right << 1) | (right >>> 31)); + //do this either 1 or 3 times for each chunk of the message + for (j = 0; j < iterations; j += 3) { + endloop = looping[j + 1]; + loopinc = looping[j + 2]; + //now go through and perform the encryption or decryption + for (i = looping[j]; i != endloop; i += loopinc) { //for efficiency + right1 = right ^ keys[i]; + right2 = ((right >>> 4) | (right << 28)) ^ keys[i + 1]; + //the result is attained by passing these bytes through the S selection functions + temp = left; + left = right; + right = temp ^ (spfunction2[(right1 >>> 24) & 0x3f] | spfunction4[(right1 >>> 16) & 0x3f] + | spfunction6[(right1 >>> 8) & 0x3f] | spfunction8[right1 & 0x3f] + | spfunction1[(right2 >>> 24) & 0x3f] | spfunction3[(right2 >>> 16) & 0x3f] + | spfunction5[(right2 >>> 8) & 0x3f] | spfunction7[right2 & 0x3f]); + } + temp = left; + left = right; + right = temp; //unreverse left and right + } //for either 1 or 3 iterations + //move then each one bit to the right + left = ((left >>> 1) | (left << 31)); + right = ((right >>> 1) | (right << 31)); + //now perform IP-1, which is IP in the opposite direction + temp = ((left >>> 1) ^ right) & 0x55555555; + right ^= temp; + left ^= (temp << 1); + temp = ((right >>> 8) ^ left) & 0x00ff00ff; + left ^= temp; + right ^= (temp << 8); + temp = ((right >>> 2) ^ left) & 0x33333333; + left ^= temp; + right ^= (temp << 2); + temp = ((left >>> 16) ^ right) & 0x0000ffff; + right ^= temp; + left ^= (temp << 16); + temp = ((left >>> 4) ^ right) & 0x0f0f0f0f; + right ^= temp; + left ^= (temp << 4); + //for Cipher Block Chaining mode, xor the message with the previous result + if (mode == 1) { + if (encrypt) { + cbcleft = left; + cbcright = right; + } + else { + left ^= cbcleft2; + right ^= cbcright2; + } + } + // tempresult += String.fromCharCode((left >>> 24), ((left >>> 16) & 0xff), ((left >>> 8) & 0xff), (left & 0xff), (right >>> 24), ((right >>> 16) & 0xff), ((right >>> 8) & 0xff), (right & 0xff)) + tempresult += String.fromCharCode(left >>> 24); + tempresult += String.fromCharCode((left >>> 16) & 255); + tempresult += String.fromCharCode((left >>> 8) & 255); + tempresult += String.fromCharCode(left & 255); + tempresult += String.fromCharCode(right >>> 24); + tempresult += String.fromCharCode((right >>> 16) & 255); + tempresult += String.fromCharCode((right >>> 8) & 255); + tempresult += String.fromCharCode(right & 255); + chunk += 8; + if (chunk == 512) { + result += tempresult; + tempresult = ""; + chunk = 0; + } + } //for every 8 characters, or 64 bits in the message + //return the result as an array + result += tempresult; + result = result.replace(/\\0*$/g, ""); + if (!encrypt) { //如果是解密的话,解密结束后对PKCS7 padding进行解码,并转换成utf-8编码 + if (padding === 1) { //PKCS7 padding解码 + let len = result.length, paddingChars = 0; + len && (paddingChars = result.charCodeAt(len - 1)); + (paddingChars <= 8) && (result = result.substring(0, len - paddingChars)); + } + //转换成UTF-8编码 + result = decodeURIComponent(escape(result)); + } + return result; +} //end of des +export function getPayload(base64String) { + let result = ''; + for (let char of des(key, base64String, true, 0, '', 0)) { + let n = char.charCodeAt(0); + result += (n >> 4).toString(16); + result += (n & 15).toString(16); + } + return result; +} +export function generateX_S(url, cookie, body) { + const P = new URL(url); + let extra = ''; + if (body) { + extra = JSON.stringify(body); + } + else { + extra = ''; + } + const params = { + x1: crypto.createHash('md5').update(`url=${P.pathname}${extra}`).digest('hex'), // 直接使用路径部分 + x2: '0|0|0|1|0|0|1|0|0|0|1|0|0|0|0', // 固定值 + x3: cookie.includes('a1=') ? cookie.split('a1=')[1].split(';')[0] : 'undefined', // 从cookie中获取a1 + x4: String(Date.now()) // 当前时间戳 + }; + // 使用 Object.entries 将对象转换为键值对数组,然后使用 join 方法构建查询字符串 + const payloadParts = Object.entries(params).map(([key, value]) => `${key}=${value}`); + const mergeplst = payloadParts.join(';'); + const origin = { + signSvn: '55', + signType: 'x2', + appId: 'xhs-pc-web', + signVersion: '1', + payload: getPayload(mergeplst) + }; + return 'XYW_' + btoa(JSON.stringify(origin)) + '='; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVYX1MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYnVzaW5lc3MveGlhb2hvbmdzaHUvc2lnbi9nZW5lcmF0ZVhfUy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUE7QUFFM0IsSUFBSSxHQUFHLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVM7SUFDMUcsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTO0lBQ2pHLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUztJQUMvRixTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVTtDQUN0RCxDQUFBO0FBRUQsU0FBUyxHQUFHLENBQUUsR0FBYSxFQUFFLE9BQVksRUFBRSxPQUFnQixFQUFFLElBQXdCLEVBQUUsRUFBVSxFQUFFLE9BQTJCO0lBQzVILElBQUksT0FBTyxFQUFFLGdCQUFnQjtRQUMzQixPQUFPLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFDakQsK0NBQStDO0lBQy9DLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ3JtQixNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDanNCLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3JtQixNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUM3aUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDN3JCLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBQ2pxQixNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUNybkIsTUFBTSxXQUFXLEdBQUcsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxV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 \ No newline at end of file diff --git a/amagi/lib/lib/business/xiaohongshu/sign/generateX_S_Common.d.ts b/amagi/lib/lib/business/xiaohongshu/sign/generateX_S_Common.d.ts new file mode 100644 index 00000000..e25271dc --- /dev/null +++ b/amagi/lib/lib/business/xiaohongshu/sign/generateX_S_Common.d.ts @@ -0,0 +1,6 @@ +export declare function xsCommon(t: { + a1: any; + x_t: number; + x_s: string; + fingerprint: any; +}): string; diff --git a/amagi/lib/lib/business/xiaohongshu/sign/generateX_S_Common.js b/amagi/lib/lib/business/xiaohongshu/sign/generateX_S_Common.js new file mode 100644 index 00000000..e812d2b1 --- /dev/null +++ b/amagi/lib/lib/business/xiaohongshu/sign/generateX_S_Common.js @@ -0,0 +1,141 @@ +export function xsCommon(t) { + const k = { + s0: 5, + s1: "", + x0: "1", + x1: "3.7.8-2", + x2: "Windows", + x3: "xhs-pc-web", + x4: "4.34.0", + x5: t.a1, // a1 的值 + x6: t.x_t, // x-t 的值 + x7: t.x_s, // x-s的值 + x8: t.fingerprint, // 浏览器指纹,可以写死 + x9: mrc(''.concat(String(t.x_t)).concat(t.x_s).concat(t.fingerprint)), + x10: 1 + }; + const utf8 = encodeUtf8(JSON.stringify(k)); + return b64Encode(new Uint8Array(utf8)); +} +function mrc(e) { + const ie = [ + 0, 1996959894, 3993919788, 2567524794, 124634137, 1886057615, 3915621685, + 2657392035, 249268274, 2044508324, 3772115230, 2547177864, 162941995, + 2125561021, 3887607047, 2428444049, 498536548, 1789927666, 4089016648, + 2227061214, 450548861, 1843258603, 4107580753, 2211677639, 325883990, + 1684777152, 4251122042, 2321926636, 335633487, 1661365465, 4195302755, + 2366115317, 997073096, 1281953886, 3579855332, 2724688242, 1006888145, + 1258607687, 3524101629, 2768942443, 901097722, 1119000684, 3686517206, + 2898065728, 853044451, 1172266101, 3705015759, 2882616665, 651767980, + 1373503546, 3369554304, 3218104598, 565507253, 1454621731, 3485111705, + 3099436303, 671266974, 1594198024, 3322730930, 2970347812, 795835527, + 1483230225, 3244367275, 3060149565, 1994146192, 31158534, 2563907772, + 4023717930, 1907459465, 112637215, 2680153253, 3904427059, 2013776290, + 251722036, 2517215374, 3775830040, 2137656763, 141376813, 2439277719, + 3865271297, 1802195444, 476864866, 2238001368, 4066508878, 1812370925, + 453092731, 2181625025, 4111451223, 1706088902, 314042704, 2344532202, + 4240017532, 1658658271, 366619977, 2362670323, 4224994405, 1303535960, + 984961486, 2747007092, 3569037538, 1256170817, 1037604311, 2765210733, + 3554079995, 1131014506, 879679996, 2909243462, 3663771856, 1141124467, + 855842277, 2852801631, 3708648649, 1342533948, 654459306, 3188396048, + 3373015174, 1466479909, 544179635, 3110523913, 3462522015, 1591671054, + 702138776, 2966460450, 3352799412, 1504918807, 783551873, 3082640443, + 3233442989, 3988292384, 2596254646, 62317068, 1957810842, 3939845945, + 2647816111, 81470997, 1943803523, 3814918930, 2489596804, 225274430, + 2053790376, 3826175755, 2466906013, 167816743, 2097651377, 4027552580, + 2265490386, 503444072, 1762050814, 4150417245, 2154129355, 426522225, + 1852507879, 4275313526, 2312317920, 282753626, 1742555852, 4189708143, + 2394877945, 397917763, 1622183637, 3604390888, 2714866558, 953729732, + 1340076626, 3518719985, 2797360999, 1068828381, 1219638859, 3624741850, + 2936675148, 906185462, 1090812512, 3747672003, 2825379669, 829329135, + 1181335161, 3412177804, 3160834842, 628085408, 1382605366, 3423369109, + 3138078467, 570562233, 1426400815, 3317316542, 2998733608, 733239954, + 1555261956, 3268935591, 3050360625, 752459403, 1541320221, 2607071920, + 3965973030, 1969922972, 40735498, 2617837225, 3943577151, 1913087877, + 83908371, 2512341634, 3803740692, 2075208622, 213261112, 2463272603, + 3855990285, 2094854071, 198958881, 2262029012, 4057260610, 1759359992, + 534414190, 2176718541, 4139329115, 1873836001, 414664567, 2282248934, + 4279200368, 1711684554, 285281116, 2405801727, 4167216745, 1634467795, + 376229701, 2685067896, 3608007406, 1308918612, 956543938, 2808555105, + 3495958263, 1231636301, 1047427035, 2932959818, 3654703836, 1088359270, + 936918000, 2847714899, 3736837829, 1202900863, 817233897, 3183342108, + 3401237130, 1404277552, 615818150, 3134207493, 3453421203, 1423857449, + 601450431, 3009837614, 3294710456, 1567103746, 711928724, 3020668471, + 3272380065, 1510334235, 755167117, + ]; + let o = -1; + function right_without_sign(num, bit = 0) { + const val = (num >>> bit) & 0xFFFFFFFF; // 无符号右移,确保32位无符号整数 + const MAX32INT = 4294967295; + return (val + (MAX32INT + 1)) % (2 * (MAX32INT + 1)) - MAX32INT - 1; + } + for (let n = 0; n < 57; n++) { + o = ie[(o & 255) ^ e.charCodeAt(n)] ^ right_without_sign(o, 8); + } + return o ^ -1 ^ 3988292384; +} +function encodeUtf8(e) { + const b = []; + let m = encodeURIComponent(e); + m = m.replace(/%20/g, "+") // 替换空格 + .replace(/[!'()*]/g, (char) => `%${char.charCodeAt(0).toString(16).toUpperCase()}`); + let w = 0; + while (w < m.length) { + const T = m[w]; + if (T === "%") { + const E = m[w + 1] + m[w + 2]; + const S = parseInt(E, 16); + b.push(S); + w += 2; + } + else { + b.push(T.charCodeAt(0)); + } + w += 1; + } + return b; +} +const lookup = [ + "Z", "m", "s", "e", "r", "b", "B", "o", "H", "Q", "t", + "N", "P", "+", "w", "O", "c", "z", "a", "/", "L", "p", + "n", "g", "G", "8", "y", "J", "q", "4", "2", "K", "W", + "Y", "j", "0", "D", "S", "f", "d", "i", "k", "x", "3", + "V", "T", "1", "6", "I", "l", "U", "A", "F", "M", "9", + "7", "h", "E", "C", "v", "u", "R", "X", "5", +]; +function b64Encode(e) { + const P = e.length; + const W = P % 3; + const U = []; + const z = 16383; + let H = 0; + const Z = P - W; + while (H < Z) { + U.push(encodeChunk(e, H, H + z > Z ? Z : H + z)); + H += z; + } + if (W === 1) { + const F = e[P - 1]; + U.push(lookup[F >> 2] + lookup[(F << 4) & 63] + "=="); + } + else if (W === 2) { + const F = (e[P - 2] << 8) + e[P - 1]; + U.push(lookup[F >> 10] + lookup[(F >> 4) & 63] + lookup[(F << 2) & 63] + "="); + } + return U.join(''); +} +function encodeChunk(e, t, r) { + const m = []; + for (let b = t; b < r; b += 3) { + const n = (16711680 & (e[b] << 16)) + ((e[b + 1] << 8) & 65280) + (e[b + 2] & 255); + m.push(tripletToBase64(n)); + } + return m.join(''); +} +function tripletToBase64(e) { + return (lookup[(e >> 18) & 63] + + lookup[(e >> 12) & 63] + + lookup[(e >> 6) & 63] + + lookup[e & 63]); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVYX1NfQ29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2J1c2luZXNzL3hpYW9ob25nc2h1L3NpZ24vZ2VuZXJhdGVYX1NfQ29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxRQUFRLENBQUUsQ0FBMEQ7SUFDbEYsTUFBTSxDQUFDLEdBQUc7UUFDUixFQUFFLEVBQUUsQ0FBQztRQUNMLEVBQUUsRUFBRSxFQUFFO1FBQ04sRUFBRSxFQUFFLEdBQUc7UUFDUCxFQUFFLEVBQUUsU0FBUztRQUNiLEVBQUUsRUFBRSxTQUFTO1FBQ2IsRUFBRSxFQUFFLFlBQVk7UUFDaEIsRUFBRSxFQUFFLFFBQVE7UUFDWixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRO1FBQ2xCLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFHLFNBQVM7UUFDckIsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsUUFBUTtRQUNuQixFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxhQUFhO1FBQ2hDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JFLEdBQUcsRUFBRSxDQUFDO0tBQ1AsQ0FBQTtJQUNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDMUMsT0FBTyxTQUFTLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtBQUN4QyxDQUFDO0FBRUQsU0FBUyxHQUFHLENBQUUsQ0FBUztJQUNyQixNQUFNLEVBQUUsR0FBYTtRQUNuQixDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVO1FBQ3hFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUztRQUNwRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDckUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTO1FBQ3BFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVTtRQUNyRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDckUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVO1FBQ3JFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUztRQUNwRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDckUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTO1FBQ3BFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVTtRQUNwRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDckUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVO1FBQ3BFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtRQUNyRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVU7UUFDcEUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO1FBQ3JFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtRQUNyRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDckUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVO1FBQ3BFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtRQUNyRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVU7UUFDcEUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVO1FBQ3BFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUztRQUNuRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDckUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTO1FBQ3BFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVTtRQUNyRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVM7UUFDcEUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO1FBQ3RFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUztRQUNwRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDckUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTO1FBQ3BFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVTtRQUNyRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDcEUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVO1FBQ25FLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtRQUNyRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVU7UUFDcEUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO1FBQ3JFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVTtRQUNwRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDdEUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVO1FBQ3BFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtRQUNyRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVU7UUFDcEUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTO0tBQ2xDLENBQUE7SUFDRCxJQUFJLENBQUMsR0FBVyxDQUFDLENBQUMsQ0FBQTtJQUVsQixTQUFTLGtCQUFrQixDQUFFLEdBQVcsRUFBRSxNQUFjLENBQUM7UUFDdkQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFBLENBQUMsbUJBQW1CO1FBQzFELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQTtRQUMzQixPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFBO0lBQ3JFLENBQUM7SUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ2hFLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUE7QUFDNUIsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFFLENBQVM7SUFDNUIsTUFBTSxDQUFDLEdBQWEsRUFBRSxDQUFBO0lBQ3RCLElBQUksQ0FBQyxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRTdCLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPO1NBQy9CLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBRXJGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNkLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtZQUM3QixNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDVCxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ1IsQ0FBQzthQUFNLENBQUM7WUFDTixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN6QixDQUFDO1FBQ0QsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNSLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBQTtBQUNWLENBQUM7QUFFRCxNQUFNLE1BQU0sR0FBRztJQUNiLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3JELEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3JELEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3JELEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxH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 \ No newline at end of file diff --git a/amagi/lib/lib/business/xiaohongshu/sign/index.d.ts b/amagi/lib/lib/business/xiaohongshu/sign/index.d.ts new file mode 100644 index 00000000..193b580f --- /dev/null +++ b/amagi/lib/lib/business/xiaohongshu/sign/index.d.ts @@ -0,0 +1,16 @@ +declare class S { + x_b3_traceid(): string; + /** + * + * @param url 接口地址 + * @param cookie 小红书用户 ck + * @returns + */ + x_s(url: string, cookie: string, body?: any): string; + x_s_common(data: { + x_s: string; + cookie: string; + }): string; +} +export declare const XiaohongshuSign: S; +export {}; diff --git a/amagi/lib/lib/business/xiaohongshu/sign/index.js b/amagi/lib/lib/business/xiaohongshu/sign/index.js new file mode 100644 index 00000000..1f9e6f7d --- /dev/null +++ b/amagi/lib/lib/business/xiaohongshu/sign/index.js @@ -0,0 +1,29 @@ +import { generateX_S } from './generateX_S.js'; +// @ts-ignore +import { xsCommon } from './generateX_S_Common.js'; +class S { + x_b3_traceid() { + for (var t = "", e = 0; e < 16; e++) + t += "abcdef0123456789".charAt(Math.floor(16 * Math.random())); + return t; + } + /** + * + * @param url 接口地址 + * @param cookie 小红书用户 ck + * @returns + */ + x_s(url, cookie, body) { + return generateX_S(url, cookie, body); + } + x_s_common(data) { + return xsCommon({ + x_t: Date.now(), + x_s: data.x_s, + a1: data.cookie.includes('a1=') ? data.cookie.split('a1=')[1].split(';')[0] : 'undefined', + fingerprint: 'I38rHdgsjopgIvesdVwgIC+oIELmBZ5e3VwXLgFTIxS3bqwErFeexd0ekncAzMFYnqthIhJed9MDKutRI3KsYorWHPtGrbV0P9WfIi/eWc6eYqtyQApPI37ekmR1QL+5Ii6sdnoeSfqYHqwl2qt5B0DoIx+PGDi/sVtkIxdsxuwr4qtiIkrwIi/skcc3I3VvIC7sYuwXq9qtpFveDSJsSPwXIEvsiVtJOPw8BuwfPpdeTDWOIx4VIiu1ZPwbPutXIvlaLb/s3qtxIxes1VwHIkumIkIyejgsY/WTge7eSqte/D7sDcpipedeYrDtIC6eDVw2IENsSqtlnlSuNjVtIvoekqwMgbOe1eY2IESPIhhgQdIUI38PqW88IizuBVwMIvGF4B6sdcNskVwVIC7eWo7sYeSqIk5eTDmY2uwjIhJs6f0s3SgeiVt/c9deYqwCICMyL/0efPwELnOsSVwBI3T2I3kkouw+gVwesBZ/yLOsYeOeVPwyIh7sjg6exmSuIENejlOe3dhkIiJsTVt0IkLdPuwJ2qw0ICvs6qwAIiNs3uw5Ikvsdqt5wuwLoVw7IvrEIxWcGnFD4IvexPtIIhDrIi6eDVwgbmm2Ls5sjjY6IiLoJqtPmVwvIv7exVtf+ree1lJsVrMZIE0s37JskutnpPwHIvKe0qwUIi5eTAubICdeS9oeDVtlIxds6uwTG7QBIEr4IvesxMgeka/ejDesYPtQIiM7ICcDcuwzICIJI33sVzbIy7OsWqw+IhpcbuwFJWesYpKeSuwprVwZIxkAIiqynPwtqPtNIv5sSM5siPt+sVwBICEYLPt1' + }); + } +} +export const XiaohongshuSign = new S(); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYnVzaW5lc3MveGlhb2hvbmdzaHUvc2lnbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzNDLGFBQWE7QUFDYixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDbEQsTUFBTSxDQUFDO0lBQ0wsWUFBWTtRQUNWLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDakMsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ2hFLE9BQU8sQ0FBQyxDQUFBO0lBQ1YsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsR0FBRyxDQUFFLEdBQVcsRUFBRSxNQUFjLEVBQUUsSUFBVTtRQUMxQyxPQUFPLFdBQVcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBRXZDLENBQUM7SUFFRCxVQUFVLENBQUUsSUFBcUM7UUFDL0MsT0FBTyxRQUFRLENBQUM7WUFDZCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNmLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXO1lBQ3pGLFdBQVcsRUFBRSw4ekJBQTh6QjtTQUM1MEIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUEifQ== \ No newline at end of file diff --git a/amagi/lib/lib/index.d.ts b/amagi/lib/lib/index.d.ts new file mode 100644 index 00000000..f700a63f --- /dev/null +++ b/amagi/lib/lib/index.d.ts @@ -0,0 +1,6 @@ +export * from "./business/index.js"; +export * from "./model/index.js"; +export * from "./server/index.js"; +export * from "./types/index.js"; +import { amagi } from "./server/index.js"; +export { amagi as Amagi, amagi as default }; diff --git a/amagi/lib/lib/index.js b/amagi/lib/lib/index.js new file mode 100644 index 00000000..ca44d988 --- /dev/null +++ b/amagi/lib/lib/index.js @@ -0,0 +1,7 @@ +export * from "./business/index.js"; +export * from "./model/index.js"; +export * from "./server/index.js"; +export * from "./types/index.js"; +import { amagi } from "./server/index.js"; +export { amagi as Amagi, amagi as default }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLGNBQWMsQ0FBQTtBQUM1QixjQUFjLGFBQWEsQ0FBQTtBQUUzQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxLQUFLLElBQUksS0FBSyxFQUFFLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FBQSJ9 \ No newline at end of file diff --git a/amagi/lib/lib/model/DataFetchers.d.ts b/amagi/lib/lib/model/DataFetchers.d.ts new file mode 100644 index 00000000..d0419a63 --- /dev/null +++ b/amagi/lib/lib/model/DataFetchers.d.ts @@ -0,0 +1,40 @@ +import { DouyinDataOptionsMap, BilibiliDataOptionsMap, XiaohongshuDataOptionsMap } from '../types/index.js' +/** + * 获取抖音数据 + * @param type 请求数据类型 + * @param cookie 抖音用户 ck + * @param options 请求参数,是一个对象 + * @returns 返回接口的原始数据 + */ +export declare const getDouyinData: (type: T, cookie?: string, options?: DouyinDataOptionsMap[T]) => Promise +/** + * 获取B站数据 + * @param type 请求数据类型 + * @param cookie bilibili 用户 ck + * @param options 请求参数,是一个对象 + * @returns 返回接口的原始数据 + */ +export declare const getBilibiliData: (type: T, cookie?: string, options?: BilibiliDataOptionsMap[T]) => Promise +/** + * 获取小红书数据 + * @param type 请求数据类型 + * @param cookie 小红书用户 ck + * @param options 请求参数,是一个对象 + * @returns 返回接口的原始数据 + */ +export declare const getXiaohongshuData: (type: T, cookie: string | undefined, options: XiaohongshuDataOptionsMap[T]) => Promise +/** + * 已废弃,请直接使用 getDouyinData 方法 + * @deprecated + */ +export declare const GetDouyinData: (type: T, cookie?: string, options?: DouyinDataOptionsMap[T]) => Promise +/** + * 已废弃,请直接使用 getBilibiliData 方法 + * @deprecated + */ +export declare const GetBilibiliData: (type: T, cookie?: string, options?: BilibiliDataOptionsMap[T]) => Promise +/** + * 已废弃,请直接使用 getXiaohongshuData 方法 + * @deprecated + */ +export declare const GetXiaohongshuData: (type: T, cookie: string | undefined, options: XiaohongshuDataOptionsMap[T]) => Promise diff --git a/amagi/lib/lib/model/DataFetchers.js b/amagi/lib/lib/model/DataFetchers.js new file mode 100644 index 00000000..37907c24 --- /dev/null +++ b/amagi/lib/lib/model/DataFetchers.js @@ -0,0 +1,50 @@ +import { DouyinResult, BilibiliResult, XiaohongshuResult } from '../business/index.js' +/** + * 获取抖音数据 + * @param type 请求数据类型 + * @param cookie 抖音用户 ck + * @param options 请求参数,是一个对象 + * @returns 返回接口的原始数据 + */ +export const getDouyinData = async (type, cookie, options) => { + const data = await DouyinResult({ type, cookie }, options) + return data.data +} +/** + * 获取B站数据 + * @param type 请求数据类型 + * @param cookie bilibili 用户 ck + * @param options 请求参数,是一个对象 + * @returns 返回接口的原始数据 + */ +export const getBilibiliData = async (type, cookie, options) => { + const data = await BilibiliResult({ type, cookie }, options) + return data.data +} +/** + * 获取小红书数据 + * @param type 请求数据类型 + * @param cookie 小红书用户 ck + * @param options 请求参数,是一个对象 + * @returns 返回接口的原始数据 + */ +export const getXiaohongshuData = async (type, cookie = '', options) => { + const data = await XiaohongshuResult({ type, cookie }, options) + return data.data +} +/** + * 已废弃,请直接使用 getDouyinData 方法 + * @deprecated + */ +export const GetDouyinData = getDouyinData +/** + * 已废弃,请直接使用 getBilibiliData 方法 + * @deprecated + */ +export const GetBilibiliData = getBilibiliData +/** + * 已废弃,请直接使用 getXiaohongshuData 方法 + * @deprecated + */ +export const GetXiaohongshuData = getXiaohongshuData +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YUZldGNoZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL0RhdGFGZXRjaGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBR2hGOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQ2hDLElBQU8sRUFDUCxNQUFlLEVBQ2YsT0FBaUMsRUFDbkIsRUFBRTtJQUNoQixNQUFNLElBQUksR0FBRyxNQUFNLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUMxRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUE7QUFDbEIsQ0FBQyxDQUFBO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFDbEMsSUFBTyxFQUNQLE1BQWUsRUFDZixPQUFtQyxFQUNyQixFQUFFO0lBQ2hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sY0FBYyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQTtBQUNsQixDQUFDLENBQUE7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLEVBQ3JDLElBQU8sRUFDUCxTQUFTLEVBQVksRUFDckIsT0FBcUMsRUFDdkIsRUFBRTtJQUNoQixNQUFNLElBQUksR0FBRyxNQUFNLGlCQUFpQixDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQy9ELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQTtBQUNsQixDQUFDLENBQUE7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFBO0FBQzFDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUE7QUFDOUM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCLENBQUEifQ== \ No newline at end of file diff --git a/amagi/lib/lib/model/dir.d.ts b/amagi/lib/lib/model/dir.d.ts new file mode 100644 index 00000000..84dd1daf --- /dev/null +++ b/amagi/lib/lib/model/dir.d.ts @@ -0,0 +1,5 @@ +/** 插件包绝对路径 */ +declare const dirPath: string +/** 插件包的名称 */ +declare const basename: string +export { basename, dirPath } diff --git a/amagi/lib/lib/model/dir.js b/amagi/lib/lib/model/dir.js new file mode 100644 index 00000000..cf71e06e --- /dev/null +++ b/amagi/lib/lib/model/dir.js @@ -0,0 +1,10 @@ +import path from 'path' +import { fileURLToPath } from 'url' +/** 当前文件的绝对路径 */ +const filePath = fileURLToPath(import.meta.url).replace(/\\/g, '/') +/** 插件包绝对路径 */ +const dirPath = path.resolve(filePath, '../../../') +/** 插件包的名称 */ +const basename = path.basename(dirPath) +export { basename, dirPath } +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL2Rpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUVuQyxnQkFBZ0I7QUFDaEIsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUNuRSxjQUFjO0FBQ2QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUE7QUFDbkQsYUFBYTtBQUNiLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7QUFFdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQSJ9 \ No newline at end of file diff --git a/amagi/lib/lib/model/index.d.ts b/amagi/lib/lib/model/index.d.ts new file mode 100644 index 00000000..0541d850 --- /dev/null +++ b/amagi/lib/lib/model/index.d.ts @@ -0,0 +1,4 @@ +export * from './networks.js' +export * from './dir.js' +export * from './logger.js' +export * from './DataFetchers.js' diff --git a/amagi/lib/lib/model/index.js b/amagi/lib/lib/model/index.js new file mode 100644 index 00000000..4ea9e855 --- /dev/null +++ b/amagi/lib/lib/model/index.js @@ -0,0 +1,5 @@ +export * from './networks.js' +export * from './dir.js' +export * from './logger.js' +export * from './DataFetchers.js' +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUE7QUFDMUIsY0FBYyxPQUFPLENBQUE7QUFDckIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxnQkFBZ0IsQ0FBQSJ9 \ No newline at end of file diff --git a/amagi/lib/lib/model/logger.d.ts b/amagi/lib/lib/model/logger.d.ts new file mode 100644 index 00000000..332b5563 --- /dev/null +++ b/amagi/lib/lib/model/logger.d.ts @@ -0,0 +1,17 @@ +import log4js from 'log4js' +declare const chalk: import("chalk").ChalkInstance +declare module 'log4js' { + interface Logger { + chalk?: typeof chalk; + red: typeof chalk.red; + green: typeof chalk.green; + yellow: typeof chalk.yellow; + blue: typeof chalk.blue; + magenta: typeof chalk.magenta; + cyan: typeof chalk.cyan; + white: typeof chalk.white; + gray: typeof chalk.gray; + } +} +declare const logger: log4js.Logger +export { logger } diff --git a/amagi/lib/lib/model/logger.js b/amagi/lib/lib/model/logger.js new file mode 100644 index 00000000..e40ddb81 --- /dev/null +++ b/amagi/lib/lib/model/logger.js @@ -0,0 +1,56 @@ +import log4js from 'log4js' +import { Chalk } from 'chalk' +log4js.configure({ + appenders: { + console: { + type: 'stdout', + layout: { + type: 'pattern', + pattern: '%[[amagi][%d{hh:mm:ss.SSS}][%4.4p]%] %m' + } + }, + command: { + type: 'dateFile', + filename: 'logs/command', + pattern: 'yyyy-MM-dd.log', + numBackups: 15, + alwaysIncludePattern: true, + layout: { + type: 'pattern', + pattern: '[%d{hh:mm:ss.SSS}][%4.4p] %m' + } + }, + pluginConsole: { + type: 'stdout', + layout: { + type: 'pattern', + pattern: '%[[%d{hh:mm:ss.SSS}][%4.4p][plugin]%] %m' + } + }, + pluginCommand: { + type: 'dateFile', + filename: 'logs/pluginCommand', + pattern: 'yyyy-MM-dd.log', + numBackups: 15, + alwaysIncludePattern: true, + layout: { type: 'pattern', pattern: '[%d{hh:mm:ss.SSS}][%4.4p] %m' } + } + }, + categories: { + default: { appenders: [ 'console', 'command' ], level: 'info' } // 添加default类别 + }, + pm2: true +}) +const chalk = new Chalk({ level: 3 }) +const logger = log4js.getLogger('default') +logger.chalk = chalk +logger.red = chalk.red +logger.green = chalk.green +logger.yellow = chalk.yellow +logger.blue = chalk.blue +logger.magenta = chalk.magenta +logger.cyan = chalk.cyan +logger.white = chalk.white +logger.gray = chalk.gray +export { logger } +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUE7QUFDM0IsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUU3QixNQUFNLENBQUMsU0FBUyxDQUFDO0lBQ2YsU0FBUyxFQUFFO1FBQ1QsT0FBTyxFQUFFO1lBQ1AsSUFBSSxFQUFFLFFBQVE7WUFDZCxNQUFNLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsT0FBTyxFQUFFLHlDQUF5QzthQUNuRDtTQUNGO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsSUFBSSxFQUFFLFVBQVU7WUFDaEIsUUFBUSxFQUFFLGNBQWM7WUFDeEIsT0FBTyxFQUFFLGdCQUFnQjtZQUN6QixVQUFVLEVBQUUsRUFBRTtZQUNkLG9CQUFvQixFQUFFLElBQUk7WUFDMUIsTUFBTSxFQUFFO2dCQUNOLElBQUksRUFBRSxTQUFTO2dCQUNmLE9BQU8sRUFBRSw4QkFBOEI7YUFDeEM7U0FDRjtRQUNELGFBQWEsRUFBRTtZQUNiLElBQUksRUFBRSxRQUFRO1lBQ2QsTUFBTSxFQUFFO2dCQUNOLElBQUksRUFBRSxTQUFTO2dCQUNmLE9BQU8sRUFBRSwwQ0FBMEM7YUFDcEQ7U0FDRjtRQUNELGFBQWEsRUFBRTtZQUNiLElBQUksRUFBRSxVQUFVO1lBQ2hCLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsT0FBTyxFQUFFLGdCQUFnQjtZQUN6QixVQUFVLEVBQUUsRUFBRTtZQUNkLG9CQUFvQixFQUFFLElBQUk7WUFDMUIsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsOEJBQThCLEVBQUU7U0FDckU7S0FDRjtJQUNELFVBQVUsRUFBRTtRQUNWLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsY0FBYztLQUM5RTtJQUNELEdBQUcsRUFBRSxJQUFJO0NBQ1YsQ0FBQyxDQUFBO0FBRUYsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQWdCckMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUUxQyxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtBQUNwQixNQUFNLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUE7QUFDdEIsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFBO0FBQzFCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQTtBQUM1QixNQUFNLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUE7QUFDeEIsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFBO0FBQzlCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQTtBQUN4QixNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUE7QUFDMUIsTUFBTSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFBO0FBR3hCLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQSJ9 \ No newline at end of file diff --git a/amagi/lib/lib/model/networks.d.ts b/amagi/lib/lib/model/networks.d.ts new file mode 100644 index 00000000..58c4900b --- /dev/null +++ b/amagi/lib/lib/model/networks.d.ts @@ -0,0 +1,32 @@ +import { AxiosRequestConfig, AxiosResponse } from 'axios' +import { NetworksConfigType } from '../types/index.js' +interface HeadersObject { + [key: string]: string; +} +export declare class Networks { + url: string + method: string + headers: HeadersObject + type: string + body?: any + axiosInstance: any + isGetResult: boolean + timeout: number + timer: NodeJS.Timeout | undefined + data: {} + constructor(data: NetworksConfigType); + get config(): AxiosRequestConfig; + getfetch(): Promise; + returnResult(): Promise; + /** 最终地址(跟随重定向) */ + getLongLink(): Promise; + /** 获取首个302 */ + getLocation(): Promise; + /** 获取数据并处理数据的格式化,默认json */ + getData(new_fetch?: string): Promise; + getHeadersAndData(): Promise<{ + headers: any; + data: any; + }>; +} +export {} diff --git a/amagi/lib/lib/model/networks.js b/amagi/lib/lib/model/networks.js new file mode 100644 index 00000000..bd47d22e --- /dev/null +++ b/amagi/lib/lib/model/networks.js @@ -0,0 +1,142 @@ +import axios, { AxiosError } from 'axios' +import { logger } from './logger.js' +export class Networks { + url + method + headers + type + body + axiosInstance + isGetResult + timeout + timer + data + constructor (data) { + this.headers = data.headers || {} + this.url = data.url || '' + this.type = data.type || 'json' + this.method = data.method || 'GET' + this.body = data.body || null + this.data = {} + this.timeout = data.timeout || 15000 + this.isGetResult = false + this.timer = undefined + // 创建axios实例 + this.axiosInstance = axios.create({ + timeout: this.timeout, + headers: this.headers, + maxRedirects: 5, + validateStatus: (status) => { + // 接受200-299,400-499,以及500及以上的状态码 + return (status >= 200 && status < 600) + } + }) + } + get config () { + let config = { + url: this.url, + method: this.method, + headers: this.headers + } + if (this.method === 'POST' && this.body) { + config.data = this.body + } + return config + } + async getfetch () { + try { + const result = await this.returnResult() + if (result.status === 504) { + return result + } + this.isGetResult = true + return result + } + catch (error) { + logger.info(error) + return false + } + } + async returnResult () { + return await this.axiosInstance(this.config) + } + /** 最终地址(跟随重定向) */ + async getLongLink () { + try { + const response = await this.axiosInstance({ + method: 'GET', + url: this.url + }) + return response.request.res.responseUrl // axios中获取最终的请求URL + } + catch (error) { + if (error instanceof AxiosError) { + throw new Error(error.stack) + } + return '' + } + } + /** 获取首个302 */ + async getLocation () { + try { + const response = await this.axiosInstance({ + method: 'GET', + url: this.url, + maxRedirects: 0, // 禁止跟随重定向 + validateStatus: (status) => status >= 300 && status < 400 // 仅处理3xx响应 + }) + return response.headers['location'] + } + catch (error) { + if (error instanceof AxiosError) { + throw new Error(error.stack) + } + return '' + } + } + /** 获取数据并处理数据的格式化,默认json */ + async getData (new_fetch = '') { + try { + if (!new_fetch) { + const result = await this.returnResult() + if (result.status === 504) { + return result + } + if (result.status === 429) { + logger.error('HTTP 响应状态码: 429') + throw new Error('ratelimit triggered, 触发 https://www.douyin.com/ 的速率限制!!!') + } + this.axiosInstance = result + this.isGetResult = true + } + else { + this.axiosInstance = new_fetch + } + return this.axiosInstance.data + } + catch (error) { + if (error instanceof AxiosError) { + throw new Error(error.stack) + } + return false + } + } + async getHeadersAndData () { + try { + // 发起网络请求获取响应对象 + const result = await this.axiosInstance(this.config) + // 初始化响应头和响应数据 + let headers = {} + const fetchHeaders = result.headers + for (const [ key, value ] of Object.entries(fetchHeaders)) { + headers[key] = value + } + return { headers, data: result.data } + } + catch (error) { + console.error('获取响应头和数据失败:', error) + return { headers: null, data: null } + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvbmV0d29ya3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQXFDLE1BQU0sT0FBTyxDQUFBO0FBRTVFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFNakMsTUFBTSxPQUFPLFFBQVE7SUFDbkIsR0FBRyxDQUFRO0lBQ1gsTUFBTSxDQUFRO0lBQ2QsT0FBTyxDQUFlO0lBQ3RCLElBQUksQ0FBUTtJQUNaLElBQUksQ0FBTTtJQUNWLGFBQWEsQ0FBSztJQUNsQixXQUFXLENBQVM7SUFDcEIsT0FBTyxDQUFRO0lBQ2YsS0FBSyxDQUE0QjtJQUNqQyxJQUFJLENBQUk7SUFFUixZQUFhLElBQXdCO1FBQ25DLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUE7UUFDakMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQTtRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFBO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUE7UUFDbEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQTtRQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQTtRQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUE7UUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUE7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUE7UUFFdEIsWUFBWTtRQUNaLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZ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 \ No newline at end of file diff --git a/amagi/lib/lib/server/client.d.ts b/amagi/lib/lib/server/client.d.ts new file mode 100644 index 00000000..0cbbced2 --- /dev/null +++ b/amagi/lib/lib/server/client.d.ts @@ -0,0 +1,50 @@ +import { DouyinDataOptionsMap, BilibiliDataOptionsMap, XiaohongshuDataOptionsMap } from '../types/index.js' +import { FastifyInstance } from 'fastify' +interface initClientParams { + /** 抖音ck */ + douyin?: string; + /** B站ck */ + bilibili?: string; + /** 小红书ck */ + xiaohongshu?: string; +} +interface AmagiInstance { + /** Fastify 实例 */ + Instance: FastifyInstance; + /** + * amagi.getDouyinData 可能在未来版本废弃,建议直接导入 getDouyinData 方法使用 + * @deprecated + */ + getDouyinData: (type: T, options?: DouyinDataOptionsMap[T]) => Promise; + /** + * amagi.getBilibiliData 可能在未来版本废弃,建议直接导入 getBilibiliData 方法使用 + * @deprecated + */ + getBilibiliData: (type: T, options?: BilibiliDataOptionsMap[T]) => Promise; + /** + * amagi.getXiaohongshuiData 可能在未来版本废弃,建议直接导入 getXiaohongshuiData 方法使用 + * @deprecated + */ + getXiaohongshuData: (type: T, options: XiaohongshuDataOptionsMap[T]) => Promise; +} +export declare class amagi { + private douyin + private bilibili + private xiaohongshu + /** + * + * @param data 一个对象,里面包含 douyin 和 bilibili 两个字段,分别对应抖音和B站cookie + */ + constructor(data: initClientParams); + /** + * + * @param port 监听端口 + * @default port 4567 + * @returns + */ + startClient(port?: number): AmagiInstance; + getDouyinData: (type: T, options?: DouyinDataOptionsMap[T]) => Promise + getBilibiliData: (type: T, options?: BilibiliDataOptionsMap[T]) => Promise + getXiaohongshuData: (type: T, options: XiaohongshuDataOptionsMap[T]) => Promise +} +export {} diff --git a/amagi/lib/lib/server/client.js b/amagi/lib/lib/server/client.js new file mode 100644 index 00000000..eef60666 --- /dev/null +++ b/amagi/lib/lib/server/client.js @@ -0,0 +1,245 @@ +import { BilibiliResult } from '../business/bilibili/index.js' +import { DouyinResult } from '../business/douyin/index.js' +import { getDouyinData, getBilibiliData, getXiaohongshuData } from '../model/DataFetchers.js' +import Fastify from 'fastify' +import { logger } from '../model/index.js' +export class amagi { + douyin + bilibili + xiaohongshu + /** + * + * @param data 一个对象,里面包含 douyin 和 bilibili 两个字段,分别对应抖音和B站cookie + */ + constructor (data) { + /** 抖音ck */ + this.douyin = data.douyin || '' + /** B站ck */ + this.bilibili = data.bilibili || '' + /** 小红书ck */ + this.xiaohongshu = data.xiaohongshu || '' + } + /** + * + * @param port 监听端口 + * @default port 4567 + * @returns + */ + startClient (port = 4567) { + const Client = Fastify({ + logger: { + transport: { + target: 'pino-pretty', + options: { + colorize: true, + translateTime: 'yyyy-MM-dd HH:mm:ss', + ignore: 'pid,hostname,reqId,res,responseTime,req.hostname,req.method,req.remotePort', + messageFormat: '{msg}' + } + } + } + }) + Client.get('/', async (_request, reply) => { + reply.redirect('https://amagi.apifox.cn', 301) + }) + Client.get('/docs', async (_request, reply) => { + reply.redirect('https://amagi.apifox.cn', 301) + }) + Client.get('/api/douyin/fetch_one_work', async (request, reply) => { + reply.type('application/json').send(await DouyinResult({ + type: "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E" /* DouyinDataType.单个视频作品数据 */, + cookie: this.douyin + }, { url: request.query.url })) + }) + Client.get('/api/douyin/fetch_work_comments', async (request, reply) => { + reply.type('application/json').send(await DouyinResult({ + type: "\u8BC4\u8BBA\u6570\u636E" /* DouyinDataType.评论数据 */, + cookie: this.douyin + }, { url: request.query.url })) + }) + Client.get('/api/douyin/fetch_video_comment_replies', async (request, reply) => { + reply.type('application/json').send(await DouyinResult({ + type: "\u4E8C\u7EA7\u8BC4\u8BBA\u6570\u636E" /* DouyinDataType.二级评论数据 */, + cookie: this.douyin + }, { aweme_id: request.query.aweme_id, comment_id: request.query.comment_id })) + }) + Client.get('/api/douyin/fetch_user_info', async (request, reply) => { + reply.type('application/json').send(await DouyinResult({ + type: "\u7528\u6237\u4E3B\u9875\u6570\u636E" /* DouyinDataType.用户主页数据 */, + cookie: this.douyin + }, { sec_uid: request.query.sec_uid })) + }) + Client.get('/api/douyin/fetch_user_post_videos', async (request, reply) => { + reply.type('application/json').send(await DouyinResult({ + type: "\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E" /* DouyinDataType.用户主页视频列表数据 */, + cookie: this.douyin + }, { sec_uid: request.query.sec_uid })) + }) + Client.get('/api/douyin/fetch_suggest_words', async (request, reply) => { + reply.type('application/json').send(await DouyinResult({ + type: "\u70ED\u70B9\u8BCD\u6570\u636E" /* DouyinDataType.热点词数据 */, + cookie: this.douyin + }, { query: request.query.query })) + }) + Client.get('/api/douyin/fetch_search_info', async (request, reply) => { + reply.type('application/json').send(await DouyinResult({ + type: "\u641C\u7D22\u6570\u636E" /* DouyinDataType.搜索数据 */, + cookie: this.douyin + }, { query: request.query.query })) + }) + Client.get('/api/douyin/fetch_emoji_list', async (_request, reply) => { + reply.type('application/json').send(await DouyinResult({ + type: "\u5B98\u65B9emoji\u6570\u636E" /* DouyinDataType.官方emoji数据 */, + cookie: this.douyin + })) + }) + Client.get('/api/douyin/fetch_emoji_pro_list', async (_request, reply) => { + reply.type('application/json').send(await DouyinResult({ + type: "\u52A8\u6001\u8868\u60C5\u6570\u636E" /* DouyinDataType.动态表情数据 */, + cookie: this.douyin + })) + }) + Client.get('/api/douyin/fetch_music_work', async (request, reply) => { + reply.type('application/json').send(await DouyinResult({ + type: "\u97F3\u4E50\u6570\u636E" /* DouyinDataType.音乐数据 */, + cookie: this.douyin + }, { music_id: request.query.music_id })) + }) + Client.get('/api/douyin/fetch_user_mix_videos', async (request, reply) => { + reply.type('application/json').send(await DouyinResult({ + type: "\u5B9E\u51B5\u56FE\u7247\u56FE\u96C6\u6570\u636E" /* DouyinDataType.实况图片图集数据 */, + cookie: this.douyin + }, { url: request.query.url })) + }) + Client.get('/api/douyin/fetch_user_live_videos', async (request, reply) => { + reply.type('application/json').send(await DouyinResult({ + type: "\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E" /* DouyinDataType.直播间信息数据 */, + cookie: this.douyin + }, { sec_uid: request.query.sec_uid })) + }) + Client.get('/api/bilibili/generateqrcode', async (request, reply) => { + reply.type('application/json').send(await BilibiliResult({ + type: "\u7533\u8BF7\u4E8C\u7EF4\u7801" /* BilibiliDataType.申请二维码 */, + cookie: '' + }, {})) + }) + Client.get('/api/bilibili/qrcodepoll', async (request, reply) => { + reply.type('application/json').send(await BilibiliResult({ + type: "\u4E8C\u7EF4\u7801\u72B6\u6001" /* BilibiliDataType.二维码状态 */, + cookie: '' + }, { qrcode_key: request.query.qrcode_key })) + }) + Client.get('/api/bilibili/login', async (request, reply) => { + reply.type('application/json').send(await BilibiliResult({ + type: "\u767B\u5F55\u57FA\u672C\u4FE1\u606F" /* BilibiliDataType.登录基本信息 */, + cookie: request.headers.cookie + }, {})) + }) + Client.get('/api/bilibili/fetch_one_video', async (request, reply) => { + reply.type('application/json').send(await BilibiliResult({ + type: "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E" /* BilibiliDataType.单个视频作品数据 */, + cookie: this.bilibili + }, { url: request.query.url })) + }) + Client.get('/api/bilibili/fetch_video_playurl', async (request, reply) => { + reply.type('application/json').send(await BilibiliResult({ + type: "\u5355\u4E2A\u89C6\u9891\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E" /* BilibiliDataType.单个视频下载信息数据 */, + cookie: this.bilibili + }, { avid: request.query.avid, cid: request.query.cid })) + }) + Client.get('/api/bilibili/fetch_work_comments', async (request, reply) => { + reply.type('application/json').send(await BilibiliResult({ + type: "\u8BC4\u8BBA\u6570\u636E" /* BilibiliDataType.评论数据 */, + cookie: this.bilibili + }, { oid: Number(request.query.oid), number: Number(request.query.number), type: Number(request.query.type || 1) })) + }) + Client.get('/api/bilibili/fetch_emoji_list', async (_request, reply) => { + reply.type('application/json').send(await BilibiliResult({ + type: "emoji\u6570\u636E" /* BilibiliDataType.emoji数据 */, + cookie: this.bilibili + }, {})) + }) + Client.get('/api/bilibili/fetch_bangumi_video_info', async (request, reply) => { + reply.type('application/json').send(await BilibiliResult({ + type: "\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E" /* BilibiliDataType.番剧基本信息数据 */, + cookie: this.bilibili + }, { url: request.query.url })) + }) + Client.get('/api/bilibili/fetch_bangumi_video_playurl', async (request, reply) => { + reply.type('application/json').send(await BilibiliResult({ + type: "\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E" /* BilibiliDataType.番剧下载信息数据 */, + cookie: this.bilibili + }, { cid: request.query.cid, ep_id: request.query.ep_id })) + }) + Client.get('/api/bilibili/fetch_user_dynamic', async (request, reply) => { + reply.type('application/json').send(await BilibiliResult({ + type: "\u7528\u6237\u4E3B\u9875\u52A8\u6001\u5217\u8868\u6570\u636E" /* BilibiliDataType.用户主页动态列表数据 */, + cookie: this.bilibili + }, { host_mid: request.query.host_mid })) + }) + Client.get('/api/bilibili/fetch_dynamic_info', async (request, reply) => { + reply.type('application/json').send(await BilibiliResult({ + type: "\u52A8\u6001\u8BE6\u60C5\u6570\u636E" /* BilibiliDataType.动态详情数据 */, + cookie: this.bilibili + }, { dynamic_id: request.query.dynamic_id })) + }) + Client.get('/api/bilibili/fetch_dynamic_card', async (request, reply) => { + reply.type('application/json').send(await BilibiliResult({ + type: "\u52A8\u6001\u5361\u7247\u6570\u636E" /* BilibiliDataType.动态卡片数据 */, + cookie: this.bilibili + }, { dynamic_id: request.query.dynamic_id })) + }) + Client.get('/api/bilibili/fetch_user_profile', async (request, reply) => { + reply.type('application/json').send(await BilibiliResult({ + type: "\u7528\u6237\u4E3B\u9875\u6570\u636E" /* BilibiliDataType.用户主页数据 */, + cookie: this.bilibili + }, { host_mid: request.query.host_mid })) + }) + Client.get('/api/bilibili/fetch_live_room_detail', async (request, reply) => { + reply.type('application/json').send(await BilibiliResult({ + type: "\u76F4\u64AD\u95F4\u4FE1\u606F" /* BilibiliDataType.直播间信息 */, + cookie: this.bilibili + }, { room_id: request.query.room_id })) + }) + Client.get('/api/bilibili/fetch_liveroom_def', async (request, reply) => { + reply.type('application/json').send(await BilibiliResult({ + type: "\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F" /* BilibiliDataType.直播间初始化信息 */, + cookie: this.bilibili + }, { room_id: request.query.room_id })) + }) + Client.get('/api/bilibili/bv_to_av', async (request, reply) => { + reply.type('application/json').send(await BilibiliResult({ + type: "BV\u8F6CAV" /* BilibiliDataType.BV转AV */, + cookie: this.bilibili + }, { bvid: request.query.bvid })) + }) + Client.get('/api/bilibili/av_to_bv', async (request, reply) => { + reply.type('application/json').send(await BilibiliResult({ + type: "AV\u8F6CBV" /* BilibiliDataType.AV转BV */, + cookie: this.bilibili + }, { avid: request.query.avid })) + }) + Client.listen({ port: port, host: '::' }, (_err, _address) => { + if (_err) + Client.log.error(_err) + logger.mark(`amagi server ${logger.green(`listening on ${port}`)} port. ${logger.yellow('API docs: https://amagi.apifox.cn')}`) + }) + return { + /** Fastify 实例 */ + Instance: Client, + getDouyinData: this.getDouyinData, + getBilibiliData: this.getBilibiliData, + getXiaohongshuData: this.getXiaohongshuData + } + } + getDouyinData = async (type, options) => { + return await getDouyinData(type, this.douyin, options) + } + getBilibiliData = async (type, options) => { + return await getBilibiliData(type, this.bilibili, options) + } + getXiaohongshuData = async (type, options) => { + return await getXiaohongshuData(type, this.xiaohongshu, options) + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZlci9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQVdwRCxPQUFPLEVBQ0wsYUFBYSxFQUNiLGVBQWUsRUFDZixrQkFBa0IsRUFDbkIsTUFBTSwwQkFBMEIsQ0FBQTtBQUNqQyxPQUFPLE9BQTRCLE1BQU0sU0FBUyxDQUFBO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUF5Q3BDLE1BQU0sT0FBTyxLQUFLO0lBQ1IsTUFBTSxDQUFRO0lBQ2QsUUFBUSxDQUFRO0lBQ2hCLFdBQVcsQ0FBUTtJQUUzQjs7O09BR0c7SUFDSCxZQUFhLElBQXNCO1FBQ2pDLFdBQVc7UUFDWCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFBO1FBQy9CLFdBQVc7UUFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFBO1FBQ25DLFlBQVk7UUFDWixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFBO0lBQzNDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBRSxPQUFlLElBQUk7UUFFOUIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDO1lBQ3JCLE1BQU0sRUFBRTtnQkFDTixTQUFTLEVBQUU7b0JBQ1QsTUFBTSxFQUFFLGFBQWE7b0JBQ3JCLE9BQU8sRUFBRTt3QkFDUCxRQUFRLEVBQUUsSUFBSTt3QkFDZCxhQUFhLEVBQUUscUJBQXFCO3dCQUNwQyxNQUFNLEVBQUUsNEVBQTRFO3dCQUNwRixhQUFhLEVBQUUsT0FBTztxQkFDdkI7aUJBQ0Y7YUFDRjtTQUNGLENBQUMs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 \ No newline at end of file diff --git a/amagi/lib/lib/server/index.d.ts b/amagi/lib/lib/server/index.d.ts new file mode 100644 index 00000000..dcaf3531 --- /dev/null +++ b/amagi/lib/lib/server/index.d.ts @@ -0,0 +1,2 @@ +export * from './client.js' +export * from './listen.js' diff --git a/amagi/lib/lib/server/index.js b/amagi/lib/lib/server/index.js new file mode 100644 index 00000000..eacbd245 --- /dev/null +++ b/amagi/lib/lib/server/index.js @@ -0,0 +1,3 @@ +export * from './client.js' +export * from './listen.js' +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFBO0FBQ3hCLGNBQWMsVUFBVSxDQUFBIn0= \ No newline at end of file diff --git a/amagi/lib/lib/server/listen.d.ts b/amagi/lib/lib/server/listen.d.ts new file mode 100644 index 00000000..1ee85b1f --- /dev/null +++ b/amagi/lib/lib/server/listen.d.ts @@ -0,0 +1,13 @@ +import { FastifyInstance } from 'fastify' +/** + * 启动本地 http 服务 + * @param client Fastify 实例 + * @param port 监听端口 + * @returns + */ +export declare const startClient: (client: FastifyInstance, port: 4567) => Promise +/** + * 已废弃,请使用 startClient 方法 + * @deprecated + */ +export declare const StartClient: (client: FastifyInstance, port: 4567) => Promise diff --git a/amagi/lib/lib/server/listen.js b/amagi/lib/lib/server/listen.js new file mode 100644 index 00000000..f84ee8bb --- /dev/null +++ b/amagi/lib/lib/server/listen.js @@ -0,0 +1,20 @@ +import { logger } from '../model/index.js' +/** + * 启动本地 http 服务 + * @param client Fastify 实例 + * @param port 监听端口 + * @returns + */ +export const startClient = async (client, port) => { + return client.listen({ port: port, host: '::' }, (_err, _address) => { + if (_err) + client.log.error(_err) + logger.mark(`amagi server listening on ${port} port. API docs: https://amagi.apifox.cn`) + }) +} +/** + * 已废弃,请使用 startClient 方法 + * @deprecated + */ +export const StartClient = startClient +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZlci9saXN0ZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUdwQzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQUUsTUFBdUIsRUFBRSxJQUFVLEVBQWlCLEVBQUU7SUFDdEYsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUU7UUFDbEUsSUFBSSxJQUFJO1lBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDaEMsTUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsSUFBSSwwQ0FBMEMsQ0FBQyxDQUFBO0lBQzFGLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQSJ9 \ No newline at end of file diff --git a/amagi/lib/lib/test.d.ts b/amagi/lib/lib/test.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/amagi/lib/lib/test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/amagi/lib/lib/test.js b/amagi/lib/lib/test.js new file mode 100644 index 00000000..64834410 --- /dev/null +++ b/amagi/lib/lib/test.js @@ -0,0 +1,19 @@ +import { Amagi, getBilibiliData } from './index.js'; +const client = new Amagi({ + douyin: '', + bilibili: '' +}); +const h = client.startClient(); +await h.getDouyinData('官方emoji数据'); +const b = await h.getBilibiliData('单个视频作品数据', { id_type: 'bvid', id: 'BV1WvpTekEPQ' }); +const douyinData = await client.getDouyinData('官方emoji数据'); +const bilibiliData = await getBilibiliData('emoji数据'); +console.log({ douyinData, bilibiliData, b }); +if (douyinData && bilibiliData) { + h.Instance.close(); + process.exit(0); +} +else { + process.exit(1); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sR0FBRyxDQUFBO0FBRTFDLE1BQU0sTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDO0lBQ3ZCLE1BQU0sRUFBRSxFQUFFO0lBQ1YsUUFBUSxFQUFFLEVBQUU7Q0FDYixDQUFDLENBQUE7QUFDRixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUE7QUFFOUIsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBQ2xDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFBO0FBRXRGLE1BQU0sVUFBVSxHQUFHLE1BQU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUMxRCxNQUFNLFlBQVksR0FBRyxNQUFNLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUVyRCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBRTVDLElBQUksVUFBVSxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQy9CLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNqQixDQUFDO0tBQU0sQ0FBQztJQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDakIsQ0FBQyJ9 \ No newline at end of file diff --git a/amagi/lib/lib/types/BilibiliAPIParams.d.ts b/amagi/lib/lib/types/BilibiliAPIParams.d.ts new file mode 100644 index 00000000..d706171e --- /dev/null +++ b/amagi/lib/lib/types/BilibiliAPIParams.d.ts @@ -0,0 +1,103 @@ +type VideoInfoParams = { + /** + * 视频分享URL。建议使用 id_type 和 id 字段作为参数,url参数可能不稳定 + * @deprecated + */ + url?: string; + /** 稿件 ID 类型,一般为 bvid */ + id_type?: 'bvid' | 'avid'; + /** 稿件ID */ + id?: string; +}; +type AVIDVideoInfoParams = { + id_type: 'avid' | undefined; + /** 稿件AVID */ + id: number | undefined; +}; +type BVIDVideoInfoParams = { + id_type: 'bvid' | undefined; + /** 稿件BVID */ + id: string | undefined; +}; +type VideoStreamParams = { + /** 视频分享URL。建议使用 id_type 和 id 字段作为参数,url参数可能不稳定 */ + url?: string; + /** 稿件AVID */ + avid?: number; + /** 稿件cid */ + cid?: number; +}; +type CommentParams = { + /** 评论区类型,type参数详见https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/docs/comment/readme.md#评论区类型代码 */ + type: number | undefined; + /** 稿件ID,也就是AV号去除前缀后的内容 */ + oid: number | undefined; + /** + * 获取的评论数量 + * @default 20 + */ + number?: number; + /** + * 评论区页码 + * @default 1 + */ + pn?: number; +}; +type BangumiInfoParams = { + /** 稿件ID是否为epid */ + isep: boolean | undefined; + /** 稿件id,season_id与ep_id任选其一 */ + id: string | undefined; +}; +type BangumiStreamParams = { + /** 稿件cid */ + cid: number | undefined; + /** 稿件ep_id */ + ep_id: string | undefined; +}; +type UserParams = { + /** UP主UID */ + host_mid: string | undefined; +}; +type DynamicParams = { + /** 动态ID */ + dynamic_id: string | undefined; +}; +type LiveRoomParams = { + /** 直播间ID */ + room_id: string | undefined; +}; +type QrcodeParams = { + /** 扫码登录秘钥 */ + qrcode_key: string | undefined; +}; +export interface BilibiliDataOptionsMapKeys { + VideoInfoParams: AVIDVideoInfoParams | BVIDVideoInfoParams; + VideoStreamParams: VideoStreamParams; + CommentParams: CommentParams; + UserParams: UserParams; + DynamicParams: DynamicParams; + BangumiInfoParams: BangumiInfoParams; + BangumiStreamParams: BangumiStreamParams; + LiveRoomParams: LiveRoomParams; + QrcodeParams: QrcodeParams; +} +/** B站API接口参数类型 */ +export type BilibiliDataOptionsMap = { + '单个视频作品数据': VideoInfoParams; + '单个视频下载信息数据': VideoStreamParams; + '评论数据': CommentParams; + '用户主页数据': UserParams; + '用户主页动态列表数据': UserParams; + 'emoji数据': {}; + '番剧基本信息数据': BangumiInfoParams; + '番剧下载信息数据': BangumiStreamParams; + '动态详情数据': DynamicParams; + '动态卡片数据': DynamicParams; + '直播间信息': LiveRoomParams; + '直播间初始化信息': LiveRoomParams; + '登录基本信息': {}; + '申请二维码': {}; + '二维码状态': QrcodeParams; +}; +export {} diff --git a/amagi/lib/lib/types/BilibiliAPIParams.js b/amagi/lib/lib/types/BilibiliAPIParams.js new file mode 100644 index 00000000..dbda33f5 --- /dev/null +++ b/amagi/lib/lib/types/BilibiliAPIParams.js @@ -0,0 +1,2 @@ +export {} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmlsaWJpbGlBUElQYXJhbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvQmlsaWJpbGlBUElQYXJhbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9 \ No newline at end of file diff --git a/amagi/lib/lib/types/ConfigType.d.ts b/amagi/lib/lib/types/ConfigType.d.ts new file mode 100644 index 00000000..13a105bb --- /dev/null +++ b/amagi/lib/lib/types/ConfigType.d.ts @@ -0,0 +1,10 @@ +export interface ConfigType { + /** + * 抖音cookie + */ + douyin: string; + /** + * bilibili cookie + */ + bilibili: string; +} diff --git a/amagi/lib/lib/types/ConfigType.js b/amagi/lib/lib/types/ConfigType.js new file mode 100644 index 00000000..88eb702d --- /dev/null +++ b/amagi/lib/lib/types/ConfigType.js @@ -0,0 +1,2 @@ +export {} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnVHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9Db25maWdUeXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ== \ No newline at end of file diff --git a/amagi/lib/lib/types/DataType.d.ts b/amagi/lib/lib/types/DataType.d.ts new file mode 100644 index 00000000..02d16071 --- /dev/null +++ b/amagi/lib/lib/types/DataType.d.ts @@ -0,0 +1,47 @@ +/** + * 抖音接口类型 + */ +export declare const enum DouyinDataType { + 二级评论数据 = "\u4E8C\u7EA7\u8BC4\u8BBA\u6570\u636E", + 用户主页数据 = "\u7528\u6237\u4E3B\u9875\u6570\u636E", + 单个视频作品数据 = "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", + 评论数据 = "\u8BC4\u8BBA\u6570\u636E", + 用户主页视频列表数据 = "\u7528\u6237\u4E3B\u9875\u89C6\u9891\u5217\u8868\u6570\u636E", + 热点词数据 = "\u70ED\u70B9\u8BCD\u6570\u636E", + 搜索数据 = "\u641C\u7D22\u6570\u636E", + 官方emoji数据 = "\u5B98\u65B9emoji\u6570\u636E", + 动态表情数据 = "\u52A8\u6001\u8868\u60C5\u6570\u636E", + 音乐数据 = "\u97F3\u4E50\u6570\u636E", + 图集作品数据 = "\u56FE\u96C6\u4F5C\u54C1\u6570\u636E", + 实况图片图集数据 = "\u5B9E\u51B5\u56FE\u7247\u56FE\u96C6\u6570\u636E", + 直播间信息数据 = "\u76F4\u64AD\u95F4\u4FE1\u606F\u6570\u636E", + 申请二维码数据 = "\u7533\u8BF7\u4E8C\u7EF4\u7801\u6570\u636E" +} +/** + * B站接口类型 + */ +export declare const enum BilibiliDataType { + 单个视频作品数据 = "\u5355\u4E2A\u89C6\u9891\u4F5C\u54C1\u6570\u636E", + 单个视频下载信息数据 = "\u5355\u4E2A\u89C6\u9891\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E", + 评论数据 = "\u8BC4\u8BBA\u6570\u636E", + 用户主页数据 = "\u7528\u6237\u4E3B\u9875\u6570\u636E", + 用户主页动态列表数据 = "\u7528\u6237\u4E3B\u9875\u52A8\u6001\u5217\u8868\u6570\u636E", + emoji数据 = "emoji\u6570\u636E", + 番剧基本信息数据 = "\u756A\u5267\u57FA\u672C\u4FE1\u606F\u6570\u636E", + 番剧下载信息数据 = "\u756A\u5267\u4E0B\u8F7D\u4FE1\u606F\u6570\u636E", + 动态详情数据 = "\u52A8\u6001\u8BE6\u60C5\u6570\u636E", + 动态卡片数据 = "\u52A8\u6001\u5361\u7247\u6570\u636E", + 直播间信息 = "\u76F4\u64AD\u95F4\u4FE1\u606F", + 直播间初始化信息 = "\u76F4\u64AD\u95F4\u521D\u59CB\u5316\u4FE1\u606F", + 登录基本信息 = "\u767B\u5F55\u57FA\u672C\u4FE1\u606F", + 申请二维码 = "\u7533\u8BF7\u4E8C\u7EF4\u7801", + 二维码状态 = "\u4E8C\u7EF4\u7801\u72B6\u6001", + BV转AV = "BV\u8F6CAV", + AV转BV = "AV\u8F6CBV" +} +/** + * 小红书接口类型 + */ +export declare const enum XiaohongshuDataType { + 单个笔记 = "\u5355\u4E2A\u7B14\u8BB0" +} diff --git a/amagi/lib/lib/types/DataType.js b/amagi/lib/lib/types/DataType.js new file mode 100644 index 00000000..fe8ae310 --- /dev/null +++ b/amagi/lib/lib/types/DataType.js @@ -0,0 +1,2 @@ +export {} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvRGF0YVR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9 \ No newline at end of file diff --git a/amagi/lib/lib/types/DouyinAPIParams.d.ts b/amagi/lib/lib/types/DouyinAPIParams.d.ts new file mode 100644 index 00000000..fb01d080 --- /dev/null +++ b/amagi/lib/lib/types/DouyinAPIParams.d.ts @@ -0,0 +1,83 @@ +type WorkParams = { + /** 视频分享URL */ + url?: string; + /** 视频ID,数据获取更准确,和url二选一 */ + aweme_id?: string; + /** 获取的评论数量 */ + number?: number; +}; +type LiveWorkParams = { + /** 视频分享URL,和aweme_id二选一 */ + url?: string; + /** 视频ID,,数据获取更准确,和url二选一 */ + aweme_id?: string; +}; +type CommentParams = { + /** 视频分享URL,和aweme_id二选一 */ + url?: string; + /** 视频ID,数据获取更准确,和url二选一 */ + aweme_id?: string; + /** + * 获取的评论数量 + * @default 50 + */ + number?: number; + /** 游标 */ + cursor?: number; +}; +type CommentReplyParams = { + /** 视频ID */ + aweme_id: string; + /** 评论ID */ + comment_id: string; +}; +type UserParams = { + /** 用户ID */ + sec_uid: string; +}; +type SearchParams = { + /** 搜索词 */ + query: string; +}; +type MusicParams = { + /** 音乐ID */ + music_id: string; +}; +type LiveRoomParams = { + /** 直播间ID */ + room_id: string; + /** 直播间真实房间号(可通过live.douyin.com/{web_rid}直接访问直播间),在用户主页信息的room_data中获取 */ + web_rid?: string; +}; +type QrcodeParams = { + /** fp指纹 */ + verify_fp: string; +}; +export interface DouyinDataOptionsMapKeys { + CommentReplyParams: CommentReplyParams; + UserParams: UserParams; + WorkParams: WorkParams; + CommentParams: CommentParams; + MusicParams: MusicParams; + LiveWorkParams: LiveWorkParams; + LiveRoomParams: LiveRoomParams; + QrcodeParams: QrcodeParams; + SearchParams: SearchParams; +} +export type DouyinDataOptionsMap = { + '二级评论数据': CommentReplyParams; + '用户主页数据': UserParams; + '单个视频作品数据': WorkParams; + '评论数据': CommentParams; + '用户主页视频列表数据': UserParams; + '热点词数据': SearchParams; + '搜索数据': SearchParams; + '官方emoji数据': {}; + '动态表情数据': {}; + '音乐数据': MusicParams; + '图集作品数据': WorkParams; + '实况图片图集数据': LiveWorkParams; + '直播间信息数据': LiveRoomParams; + '申请二维码数据': QrcodeParams; +}; +export {} diff --git a/amagi/lib/lib/types/DouyinAPIParams.js b/amagi/lib/lib/types/DouyinAPIParams.js new file mode 100644 index 00000000..3135a648 --- /dev/null +++ b/amagi/lib/lib/types/DouyinAPIParams.js @@ -0,0 +1,2 @@ +export {} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG91eWluQVBJUGFyYW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL0RvdXlpbkFQSVBhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0= \ No newline at end of file diff --git a/amagi/lib/lib/types/GetDataResponseType.d.ts b/amagi/lib/lib/types/GetDataResponseType.d.ts new file mode 100644 index 00000000..a86d4083 --- /dev/null +++ b/amagi/lib/lib/types/GetDataResponseType.d.ts @@ -0,0 +1,17 @@ +/** + * 最终返回数据 + */ +export type GetDataResponseType = { + /** + * 响应状态码 + */ + code: number; + /** + * 响应信息 + */ + message: string; + /** + * 响应数据 + */ + data: any; +}; diff --git a/amagi/lib/lib/types/GetDataResponseType.js b/amagi/lib/lib/types/GetDataResponseType.js new file mode 100644 index 00000000..1d0a6008 --- /dev/null +++ b/amagi/lib/lib/types/GetDataResponseType.js @@ -0,0 +1,2 @@ +export {} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2V0RGF0YVJlc3BvbnNlVHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9HZXREYXRhUmVzcG9uc2VUeXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ== \ No newline at end of file diff --git a/amagi/lib/lib/types/NetworksConfigType.d.ts b/amagi/lib/lib/types/NetworksConfigType.d.ts new file mode 100644 index 00000000..e2588ee3 --- /dev/null +++ b/amagi/lib/lib/types/NetworksConfigType.d.ts @@ -0,0 +1,30 @@ +export type NetworksConfigType = { + /** + * 请求地址 + */ + url?: string; + /** + * 请求方法 + */ + method?: string; + /** + * 请求头 + */ + headers?: any; + /** + * 返回数据类型,默认json + */ + type?: string; + /** + * 请求体 + */ + body?: string; + /** + * 超时时间,单位毫秒 + */ + timeout?: number; + /** + * 默认跟随重定向到: 'follow',不跟随: manual + */ + redirect?: RequestRedirect; +}; diff --git a/amagi/lib/lib/types/NetworksConfigType.js b/amagi/lib/lib/types/NetworksConfigType.js new file mode 100644 index 00000000..4a50545b --- /dev/null +++ b/amagi/lib/lib/types/NetworksConfigType.js @@ -0,0 +1,2 @@ +export {} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0d29ya3NDb25maWdUeXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL05ldHdvcmtzQ29uZmlnVHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0= \ No newline at end of file diff --git a/amagi/lib/lib/types/OptionsType.d.ts b/amagi/lib/lib/types/OptionsType.d.ts new file mode 100644 index 00000000..deb4f5ca --- /dev/null +++ b/amagi/lib/lib/types/OptionsType.d.ts @@ -0,0 +1,131 @@ +/** + * 接口公共查询参数 + */ +export type DouyinOptionsType = { + /** + * 视频分享URL + */ + url?: string; + /** + * 作品ID,囊括视频、静态图集、实况图集、实况视频 + */ + aweme_id?: string; + /** + * 评论ID + */ + comment_id?: string; + /** + * 用户ID + */ + sec_uid?: string; + /** + * 查询关键词 + */ + query?: string; + /** + * 音乐ID + */ + music_id?: string; + /** + * 评论数量,单位条 + * @default 50 + */ + number?: number | string; + /** + * 直播间ID(虚拟的) + */ + room_id?: number | string; + /** + * 直播间真实房间号(可通过live.douyin.com/{web_rid}直接访问直播间),在用户主页信息的room_data中获取 + */ + web_rid?: string; + /** + * fp指纹 + */ + verify_fp?: string; + /** + * 评论区游标值 + */ + cursor?: number; +}; +/** + * 接口公共查询参数 + */ +export type BilibiliOptionsType = { + /** + * 以后再搞这个id,有点麻烦 + */ + id?: string; + /** + * 视频分享URL + */ + url?: string; + /** + * 稿件AV号 + */ + avid?: number; + /** + * BV号 + */ + bvid?: string; + /** + * 用户ID + */ + host_mid?: string; + /** + * 动态ID + */ + dynamic_id?: string; + /** + * 番剧视频CID + */ + cid?: number; + /** + * 番剧视频EPID + */ + ep_id?: string; + /** + * 直播间ID + */ + room_id?: string; + /** + * 评论数量,单位条 + * @default 20 + */ + number?: number; + /** + * 用户 Cookie + */ + cookie?: string; + /** + * 二维码key + */ + qrcode_key?: string; + /** + * 评论区类型代码 + */ + type?: number; + /** + * 稿件ID,也就是AV号去除前缀后的内容 + */ + oid?: number; + /** + * 评论区页码 + * @default 1 + */ + pn?: number; +}; +export type XiaohongshuOptionsType = { + /** + * 笔记ID + */ + source_note_id?: string; + /** + * web端的路径参数xsec_token + */ + xsec_token?: string; + /** + * 笔记分享URL + */ + url?: string; +}; diff --git a/amagi/lib/lib/types/OptionsType.js b/amagi/lib/lib/types/OptionsType.js new file mode 100644 index 00000000..cfb180d3 --- /dev/null +++ b/amagi/lib/lib/types/OptionsType.js @@ -0,0 +1,2 @@ +export {} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uc1R5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvT3B0aW9uc1R5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9 \ No newline at end of file diff --git a/amagi/lib/lib/types/Request.d.ts b/amagi/lib/lib/types/Request.d.ts new file mode 100644 index 00000000..4020778f --- /dev/null +++ b/amagi/lib/lib/types/Request.d.ts @@ -0,0 +1,8 @@ +import { FastifyRequest } from 'fastify' +import { BilibiliOptionsType, DouyinOptionsType } from './OptionsType.js' +export interface DouyinRequest extends FastifyRequest { + Querystring: DouyinOptionsType; +} +export interface BilibiliRequest extends FastifyRequest { + Querystring: BilibiliOptionsType; +} diff --git a/amagi/lib/lib/types/Request.js b/amagi/lib/lib/types/Request.js new file mode 100644 index 00000000..389add02 --- /dev/null +++ b/amagi/lib/lib/types/Request.js @@ -0,0 +1,2 @@ +export {} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9SZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ== \ No newline at end of file diff --git a/amagi/lib/lib/types/XiaohongshuAPIParams.d.ts b/amagi/lib/lib/types/XiaohongshuAPIParams.d.ts new file mode 100644 index 00000000..c07b714c --- /dev/null +++ b/amagi/lib/lib/types/XiaohongshuAPIParams.d.ts @@ -0,0 +1,13 @@ +type NoteInfoParams = { + /** 笔记ID */ + source_note_id: string; + /** web端的路径参数xsec_token */ + xsec_token?: string; +}; +export interface XiaohongshuDataOptionsMapKeys { + NoteInfoParams: NoteInfoParams; +} +export type XiaohongshuDataOptionsMap = { + 单个笔记: NoteInfoParams; +}; +export {} diff --git a/amagi/lib/lib/types/XiaohongshuAPIParams.js b/amagi/lib/lib/types/XiaohongshuAPIParams.js new file mode 100644 index 00000000..48eeacc3 --- /dev/null +++ b/amagi/lib/lib/types/XiaohongshuAPIParams.js @@ -0,0 +1,2 @@ +export {} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWGlhb2hvbmdzaHVBUElQYXJhbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvWGlhb2hvbmdzaHVBUElQYXJhbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9 \ No newline at end of file diff --git a/amagi/lib/lib/types/index.d.ts b/amagi/lib/lib/types/index.d.ts new file mode 100644 index 00000000..d0619986 --- /dev/null +++ b/amagi/lib/lib/types/index.d.ts @@ -0,0 +1,10 @@ +import type { BilibiliDataOptionsMapKeys, BilibiliDataOptionsMap } from './BilibiliAPIParams.js' +import type { ConfigType } from './ConfigType.js' +import { BilibiliDataType, DouyinDataType, XiaohongshuDataType } from './DataType.js' +import type { DouyinDataOptionsMap, DouyinDataOptionsMapKeys } from './DouyinAPIParams.js' +import type { GetDataResponseType } from './GetDataResponseType.js' +import type { NetworksConfigType } from './NetworksConfigType.js' +import type { BilibiliOptionsType, DouyinOptionsType, XiaohongshuOptionsType } from './OptionsType.js' +import type { XiaohongshuDataOptionsMap, XiaohongshuDataOptionsMapKeys } from './XiaohongshuAPIParams.js' +export * from './Request.js' +export { BilibiliDataOptionsMapKeys, BilibiliDataType, BilibiliOptionsType, ConfigType, DouyinDataType, DouyinOptionsType, GetDataResponseType, NetworksConfigType, DouyinDataOptionsMapKeys, DouyinDataOptionsMap, BilibiliDataOptionsMap, XiaohongshuDataOptionsMap, XiaohongshuDataType, XiaohongshuDataOptionsMapKeys, XiaohongshuOptionsType } diff --git a/amagi/lib/lib/types/index.js b/amagi/lib/lib/types/index.js new file mode 100644 index 00000000..30655f9d --- /dev/null +++ b/amagi/lib/lib/types/index.js @@ -0,0 +1,2 @@ +export * from './Request.js' +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsY0FBYyxXQUFXLENBQUEifQ== \ No newline at end of file