From 5bb58fa7c5a82727ff73ac61d3e803e558ff1867 Mon Sep 17 00:00:00 2001 From: Xinhe Wang Date: Mon, 18 Nov 2024 04:42:47 +0000 Subject: [PATCH 1/2] Use `x-luogu-type` header instead of `_contentOnly` in query params --- packages/archive/src/lib/judgement.ts | 8 +++----- packages/archive/src/lib/list.ts | 2 +- packages/archive/src/lib/parser.ts | 5 ++++- packages/archive/src/lib/paste.ts | 5 +---- packages/archive/src/lib/post.ts | 8 +++----- 5 files changed, 12 insertions(+), 16 deletions(-) diff --git a/packages/archive/src/lib/judgement.ts b/packages/archive/src/lib/judgement.ts index f53fa66..3945662 100644 --- a/packages/archive/src/lib/judgement.ts +++ b/packages/archive/src/lib/judgement.ts @@ -22,11 +22,9 @@ export default async function saveJudgements( logger: BaseLogger, prisma: PrismaClient, ) { - const res = await getResponse( - logger, - lgUrl(`/judgement?_contentOnly`, false), - false, - ).then((response): Promise => response.json()); + const res = await getResponse(logger, lgUrl(`/judgement`, false), false).then( + (response): Promise => response.json(), + ); const operations: PrismaPromise[] = []; const judgements = res.currentData.logs; diff --git a/packages/archive/src/lib/list.ts b/packages/archive/src/lib/list.ts index e4bb9a1..7e2202a 100644 --- a/packages/archive/src/lib/list.ts +++ b/packages/archive/src/lib/list.ts @@ -41,7 +41,7 @@ export default async function getPostList( ) { const response = await getResponse( logger, - lgUrl(`/discuss?_contentOnly&page=${page}`), + lgUrl(`/discuss?page=${page}`), false, ); const { diff --git a/packages/archive/src/lib/parser.ts b/packages/archive/src/lib/parser.ts index ed37155..5c18467 100644 --- a/packages/archive/src/lib/parser.ts +++ b/packages/archive/src/lib/parser.ts @@ -28,7 +28,10 @@ export async function getResponse( retries = 1, ) { const response = await fetch(url, { - headers: cookie ? { cookie: process.env.COOKIE! } : undefined, + headers: { + "x-luogu-type": "content-only", + ...(cookie ? { cookie: process.env.COOKIE! } : {}), + }, cache: "no-cache", }); logger.info( diff --git a/packages/archive/src/lib/paste.ts b/packages/archive/src/lib/paste.ts index e3c04dc..22a554f 100644 --- a/packages/archive/src/lib/paste.ts +++ b/packages/archive/src/lib/paste.ts @@ -24,10 +24,7 @@ export default async function savePaste( prisma: PrismaClient, id: string, ) { - const response = await getResponse( - logger, - lgUrl(`/paste/${id}?_contentOnly`, false), - ); + const response = await getResponse(logger, lgUrl(`/paste/${id}`, false)); const json = (await response.json()) as | { code: 403 | 404; currentData: LuoguError } | { code: 200; currentData: { paste: Paste } }; diff --git a/packages/archive/src/lib/post.ts b/packages/archive/src/lib/post.ts index 969f047..1a874fb 100644 --- a/packages/archive/src/lib/post.ts +++ b/packages/archive/src/lib/post.ts @@ -64,11 +64,9 @@ export async function savePost( let allReplies: ReplyContent[] = []; const fetchPage = (page: number) => - getResponse( - logger, - lgUrl(`/discuss/${id}?_contentOnly&page=${page}`), - false, - ).then((response): Promise => response.json()); + getResponse(logger, lgUrl(`/discuss/${id}?page=${page}`), false).then( + (response): Promise => response.json(), + ); const saveReplies = async (replies: ReplyContent[]) => { // eslint-disable-next-line no-restricted-syntax From a3f53ec028b7ede047d44e0930cc9625afddbb2a Mon Sep 17 00:00:00 2001 From: Xinhe Wang Date: Mon, 18 Nov 2024 04:44:00 +0000 Subject: [PATCH 2/2] Update for `LentilleDataResponse` --- packages/archive/src/lib/list.ts | 6 ++---- packages/archive/src/lib/parser.ts | 1 + packages/archive/src/lib/post.ts | 6 +++--- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/archive/src/lib/list.ts b/packages/archive/src/lib/list.ts index 7e2202a..8559de8 100644 --- a/packages/archive/src/lib/list.ts +++ b/packages/archive/src/lib/list.ts @@ -19,9 +19,7 @@ interface PostData { } interface PostListResponse { - code: 200; - currentTemplate: "DiscussList"; - currentData: { + data: { forum: ForumData | null; publicForums: ForumData[]; posts: { @@ -45,7 +43,7 @@ export default async function getPostList( false, ); const { - currentData: { + data: { posts: { result }, }, } = (await response.json()) as PostListResponse; diff --git a/packages/archive/src/lib/parser.ts b/packages/archive/src/lib/parser.ts index 5c18467..2401b88 100644 --- a/packages/archive/src/lib/parser.ts +++ b/packages/archive/src/lib/parser.ts @@ -30,6 +30,7 @@ export async function getResponse( const response = await fetch(url, { headers: { "x-luogu-type": "content-only", + "x-lentille-request": "content-only", ...(cookie ? { cookie: process.env.COOKIE! } : {}), }, cache: "no-cache", diff --git a/packages/archive/src/lib/post.ts b/packages/archive/src/lib/post.ts index 1a874fb..1d7ae08 100644 --- a/packages/archive/src/lib/post.ts +++ b/packages/archive/src/lib/post.ts @@ -39,7 +39,7 @@ interface ReplyData { } interface ResponseBody { - currentData: { + data: { forum: ForumData; post: PostData; replies: ReplyData; @@ -125,7 +125,7 @@ export async function savePost( }); }; - const { post, replies, forum } = (await fetchPage(1)).currentData; + const { post, replies, forum } = (await fetchPage(1)).data; const postTime = new Date(post.time * 1000); await upsertUserSnapshot(prisma, post.author); @@ -184,7 +184,7 @@ export async function savePost( )[0]; for (let i = Math.min(pages, maxPages); i > 0; i -= 1) { // eslint-disable-next-line no-await-in-loop - const { replies: newReplies } = (await fetchPage(i)).currentData; + const { replies: newReplies } = (await fetchPage(i)).data; // eslint-disable-next-line no-await-in-loop await saveReplies(newReplies.result); if (newReplies.result[newReplies.result.length - 1].id <= lastReply)