generated from tailored/router-template
temp
This commit is contained in:
2
packages/xhs/.npmrc
Normal file
2
packages/xhs/.npmrc
Normal file
@@ -0,0 +1,2 @@
|
||||
//npm.xiongxiao.me/:_authToken=${ME_NPM_TOKEN}
|
||||
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
|
||||
492
packages/xhs/a.html
Normal file
492
packages/xhs/a.html
Normal file
File diff suppressed because one or more lines are too long
24
packages/xhs/bun.config.mjs
Normal file
24
packages/xhs/bun.config.mjs
Normal file
@@ -0,0 +1,24 @@
|
||||
// @ts-check
|
||||
// https://bun.sh/docs/bundler
|
||||
// @ts-ignore
|
||||
import pkg from './package.json';
|
||||
// import { resolvePath as rp } from '@kevisual/use-config/env';
|
||||
import path from 'path';
|
||||
const rp = (resolvePath) => {
|
||||
return path.resolve(process.cwd(), resolvePath);
|
||||
};
|
||||
// bun run src/index.ts --
|
||||
await Bun.build({
|
||||
target: 'node',
|
||||
format: 'esm',
|
||||
entrypoints: [rp('src/index.js')],
|
||||
outdir: rp('./dist'),
|
||||
naming: {
|
||||
entry: 'app.mjs',
|
||||
},
|
||||
|
||||
define: {
|
||||
VERSION: JSON.stringify(pkg.version),
|
||||
},
|
||||
env: 'KEVISUAL_*',
|
||||
});
|
||||
27
packages/xhs/package.json
Normal file
27
packages/xhs/package.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "@kevisual/xhs",
|
||||
"version": "0.0.1",
|
||||
"description": "",
|
||||
"main": "app.mjs",
|
||||
"types": "app.d.ts",
|
||||
"scripts": {
|
||||
"build": "bun run bun.config.mjs",
|
||||
"postbuild": "dts -i src/index.js -o app.d.ts",
|
||||
"dts": "dts -i src/index.js -o app.d.ts"
|
||||
},
|
||||
"file": [
|
||||
"dist"
|
||||
],
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "abearxiong <xiongxiao@xiongxiao.me> (https://www.xiongxiao.me)",
|
||||
"license": "MIT",
|
||||
"packageManager": "pnpm@10.10.0",
|
||||
"type": "module",
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"@kevisual/xhs-core": "workspace:*"
|
||||
}
|
||||
}
|
||||
66
packages/xhs/src/index.ts
Normal file
66
packages/xhs/src/index.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import { XhsClient as XhsClientBase } from '@kevisual/xhs-core';
|
||||
|
||||
export const getSign = async (uri: string, data: any, a1: string, web_session?: string) => {
|
||||
const signs = await fetch('http://light.xiongxiao.me:5006/sign', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
uri,
|
||||
data,
|
||||
a1,
|
||||
web_session: web_session,
|
||||
}),
|
||||
}).then((res) => res.json());
|
||||
return signs;
|
||||
};
|
||||
type XhsOptions = {
|
||||
cookie?: string;
|
||||
};
|
||||
export class XhsClient extends XhsClientBase {
|
||||
constructor(opts: XhsOptions) {
|
||||
super(opts as any);
|
||||
}
|
||||
/**
|
||||
* 获取未读消息
|
||||
* @returns
|
||||
*/
|
||||
async getUnread(): Promise<UnreadCount> {
|
||||
const url = '/api/sns/web/unread_count';
|
||||
const response = await this.get(url);
|
||||
return response;
|
||||
}
|
||||
async sign(uri: string, data: any, config: any) {
|
||||
let header = config?.header || {};
|
||||
const cookieDist = this.getCookieMap();
|
||||
const web_session = cookieDist['web_session'];
|
||||
const a1 = cookieDist['a1'];
|
||||
const res = await getSign(uri, data, a1, web_session);
|
||||
header['x-s'] = res['x-s'];
|
||||
header['x-t'] = res['x-t'];
|
||||
config.header = header;
|
||||
return config;
|
||||
}
|
||||
async getNoteById(noteId: string, xsecToken?: string) {
|
||||
const data = {
|
||||
source_note_id: noteId,
|
||||
image_scenes: ['CRD_WM_WEBP'],
|
||||
};
|
||||
const uri = '/api/sns/web/v1/feed';
|
||||
|
||||
try {
|
||||
const response = await this.post(uri, data, { sign: this.sign.bind(this) });
|
||||
return response['items'][0]['node_card'];
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
type UnreadCount = {
|
||||
unread_count: number;
|
||||
likes: number;
|
||||
connections: number;
|
||||
mentions: number;
|
||||
};
|
||||
4
packages/xhs/src/test/common.ts
Normal file
4
packages/xhs/src/test/common.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
import { XhsClient } from '../index.ts';
|
||||
export const cookie = "a1=19686f83a65uiloc0y7wv79une457hsjh5lt00dpe40000147626;abRequestId=0a794332-4561-5f49-93f7-780b8b028e1f;access-token-creator.xiaohongshu.com=customer.creator.AT-68c517498636784561614544frjvxzj7yu8iewie;agora_session=6a0031373435393132333637323735343733393437313634000000000000;customerClientId=536706778174172;galaxy_creator_session_id=OhpHDDSoADhNEhnH5LLnQpletFLApu1fd91f;galaxy.creator.beaker.session.id=1745912429847011598150;gid=yjKqYfK0qDyYyj2DDSqd4ujxyW9kvxIuT62ddkMWhElyuxq8yDd6hl888q2WYy88j8i80yYD;loadts=1746020512562;sec_poison_id=441c932e-a6ac-4d8d-97ae-beb14adb1929;unread={%22ub%22:%2267eaf1fe000000001202c3ea%22%2C%22ue%22:%226803aa37000000001c0319d8%22%2C%22uc%22:35};web_session=040069b2e9c511ca302086ca253a4bde8b1cd1;webBuild=4.62.3;webId=97e5f097499594cad49aa0bd1a8ed83f;websectiga=3633fe24d49c7dd0eb923edc8205740f10fdb18b25d424d2a2322c6196d2a4ad;x-user-id-creator.xiaohongshu.com=639d86590000000026006076;xsecappid=xhs-pc-web;acw_tc=0a00df6217460205042195762e721fba339a0dbe8e4738b961a5ff15e74619;"
|
||||
|
||||
export const client = new XhsClient({ cookie } as any);
|
||||
15
packages/xhs/src/test/query/get_note.ts
Normal file
15
packages/xhs/src/test/query/get_note.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { client } from '../common.ts';
|
||||
|
||||
// client.getNoteComments()
|
||||
|
||||
// client.getNoteById('67dcc34e000000000602a8eb', 'ABuYS8Xb1o08DlRmMLIabdqnW0OKnLR9nMpDGq5bVRdvk').then((res) => {
|
||||
// console.log(res);
|
||||
// });
|
||||
// client.getNoteByIdFromHtml('67dcc34e000000000602a8eb', 'ABuYS8Xb1o08DlRmMLIabdqnW0OKnLR9nMpDGq5bVRdvk').then((res) => {
|
||||
// console.log(res);
|
||||
// });
|
||||
const id = '6810d722000000002100f139';
|
||||
const x = 'LBEqTFigLzp41AdwQ-E3hbQScnvrx2flLgHElHpQ8zHWc=';
|
||||
client.getNoteByIdFromHtml(id, x).then((res) => {
|
||||
console.log(res);
|
||||
});
|
||||
5
packages/xhs/src/test/query/get_userinfo.ts
Normal file
5
packages/xhs/src/test/query/get_userinfo.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import { client } from '../common.ts';
|
||||
|
||||
client.getSelfInfoV2().then((res) => {
|
||||
console.log(res);
|
||||
});
|
||||
5
packages/xhs/src/test/query/unread.ts
Normal file
5
packages/xhs/src/test/query/unread.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import { client } from '../common.ts';
|
||||
|
||||
client.getUnread().then((res) => {
|
||||
console.log(res);
|
||||
});
|
||||
Reference in New Issue
Block a user