From 31d15d63b294c08acbdcbb8bfbdb72e2276443eb Mon Sep 17 00:00:00 2001 From: LucunJi <36262513+LucunJi@users.noreply.github.com> Date: Sun, 18 May 2025 07:09:50 -0700 Subject: [PATCH] fix(route/bilibili/followings/dynamic): fix parsing of `card.origin` (#19121) --- lib/routes/bilibili/followings-dynamic.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/routes/bilibili/followings-dynamic.ts b/lib/routes/bilibili/followings-dynamic.ts index 00b2d7aea6..8ed5972148 100644 --- a/lib/routes/bilibili/followings-dynamic.ts +++ b/lib/routes/bilibili/followings-dynamic.ts @@ -7,6 +7,7 @@ import JSONbig from 'json-bigint'; import { fallback, queryToBoolean } from '@/utils/readable-social'; import querystring from 'node:querystring'; import ConfigNotFoundError from '@/errors/types/config-not-found'; +import logger from '@/utils/logger'; export const route: Route = { path: '/followings/dynamic/:uid/:routeParams?', @@ -132,9 +133,14 @@ async function handler(ctx) { data.map(async (item) => { const parsed = JSONbig.parse(item.card); const data = parsed.apiSeasonInfo || (getTitle(parsed.item) ? parsed.item : parsed); - // parsed.origin is already parsed, and it may be json or string. - // Don't parse it again, or it will cause an error. - const origin = parsed.origin || null; + let origin = parsed.origin; + if (origin) { + try { + origin = JSONbig.parse(origin); + } catch { + logger.warn(`card.origin '${origin}' is not falsy-valued or a JSON string, fall back to unparsed value`); + } + } // img let imgHTML = '';