diff --git a/lib/notion/getNotionPost.js b/lib/notion/getNotionPost.js index f5aabb2a..97ceea9a 100644 --- a/lib/notion/getNotionPost.js +++ b/lib/notion/getNotionPost.js @@ -3,6 +3,7 @@ import { idToUuid } from 'notion-utils' import { defaultMapImageUrl } from 'react-notion-x' import formatDate from '../utils/formatDate' import { getPage } from './getPostBlocks' +import { checkStrIsNotionId, checkStrIsUuid } from '@/lib/utils' /** * 根据页面ID获取内容 @@ -14,14 +15,22 @@ export async function getPost(pageId) { if (!blockMap) { return null } - - const postInfo = blockMap?.block?.[idToUuid(pageId)].value + if (checkStrIsNotionId(pageId)) { + pageId = idToUuid(pageId) + } + if (!checkStrIsUuid(pageId)) { + return null + } + const postInfo = blockMap?.block?.[pageId]?.value + if (!postInfo) { + return null + } return { id: pageId, - type: postInfo, + type: postInfo.type, category: '', tags: [], - title: postInfo?.properties?.title?.[0], + title: postInfo?.properties?.title?.[0] || null, status: 'Published', createdTime: formatDate( new Date(postInfo.created_time).toString(), @@ -32,7 +41,7 @@ export async function getPost(pageId) { BLOG.LANG ), fullWidth: postInfo?.fullWidth || false, - page_cover: getPageCover(postInfo) || BLOG.HOME_BANNER_IMAGE, + page_cover: getPageCover(postInfo) || BLOG.HOME_BANNER_IMAGE || null, date: { start_date: formatDate( new Date(postInfo?.last_edited_time).toString(), diff --git a/lib/utils/index.js b/lib/utils/index.js index 787dc90d..e12f2f85 100644 --- a/lib/utils/index.js +++ b/lib/utils/index.js @@ -104,6 +104,17 @@ export function checkStartWithHttp(str) { } } +// 检查一个字符串是否UUID https://ihateregex.io/expr/uuid/ +export function checkStrIsUuid(str) { + if (!str) { + return false + } + // 使用正则表达式进行匹配 + const regex = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/ + return regex.test(str) +} + + // 检查一个字符串是否notionid : 32位,仅由数字英文构成 export function checkStrIsNotionId(str) { if (!str) {