From 9f64302ab69945da82a3f322437634c9bc5a5b5f Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Mon, 29 Apr 2024 13:55:30 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B7=B2=E7=9F=A5?= =?UTF-8?q?=E7=9A=84=E5=9B=BE=E7=89=87=E5=8A=A0=E8=BD=BD=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/notion/mapImage.js | 2 +- next.config.js | 15 --------------- 2 files changed, 1 insertion(+), 16 deletions(-) diff --git a/lib/notion/mapImage.js b/lib/notion/mapImage.js index e0d92f83..dba99d5c 100644 --- a/lib/notion/mapImage.js +++ b/lib/notion/mapImage.js @@ -60,7 +60,7 @@ const mapImgUrl = (img, block, type = 'block', from = 'post') => { } // 图片url优化,确保每一篇文章的图片url唯一 - if (ret && ret.length > 4) { + if (ret && !ret.includes('https://www.notion.so/images/')) { // 图片接口拼接唯一识别参数,防止请求的图片被缓,而导致随机结果相同 const separator = ret.includes('?') ? '&' : '?' ret = `${ret.trim()}${separator}t=${block.id}` diff --git a/next.config.js b/next.config.js index f4352e6e..5c1ba810 100644 --- a/next.config.js +++ b/next.config.js @@ -54,21 +54,6 @@ function scanSubdirectories(directory) { } const nextConfig = { - images: { - // 图片压缩 - formats: ['image/avif', 'image/webp'], - // 允许next/image加载的图片 域名 - domains: [ - 'gravatar.com', - 'www.notion.so', - 'avatars.githubusercontent.com', - 'images.unsplash.com', - 'source.unsplash.com', - 'p1.qhimg.com', - 'webmention.io', - 'ko-fi.com' - ] - }, // 默认将feed重定向至 /public/rss/feed.xml async redirects() { return [ From 324516bef38a211802e436c0b34b9010b285a035 Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Mon, 29 Apr 2024 14:21:58 +0800 Subject: [PATCH 2/2] =?UTF-8?q?Notion=20bookmark=E5=9B=BE=E5=BA=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/notion/getPageProperties.js | 7 +----- lib/notion/mapImage.js | 40 +++++++++++++++++++-------------- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/lib/notion/getPageProperties.js b/lib/notion/getPageProperties.js index 765521a9..fefdad4d 100644 --- a/lib/notion/getPageProperties.js +++ b/lib/notion/getPageProperties.js @@ -105,12 +105,7 @@ export default async function getPageProperties( properties.pageIcon = mapImgUrl(value?.format?.page_icon, value) ?? '' properties.pageCover = mapImgUrl(value?.format?.page_cover, value) ?? '' properties.pageCoverThumbnail = - mapImgUrl( - value?.format?.page_cover, - value, - 'block', - 'pageCoverThumbnail' - ) ?? '' + mapImgUrl(value?.format?.page_cover, value, 'block') ?? '' properties.ext = converToJSON(properties?.ext) properties.content = value.content ?? [] properties.tagItems = diff --git a/lib/notion/mapImage.js b/lib/notion/mapImage.js index dba99d5c..92e430fd 100644 --- a/lib/notion/mapImage.js +++ b/lib/notion/mapImage.js @@ -3,16 +3,18 @@ import { siteConfig } from '../config' /** * 图片映射 - * 1. 如果是 /xx.xx 相对路径格式,则转化为 完整notion域名图片 - * 2. 如果是 bookmark类型的block 图片封面无需处理 - * @param {*} img - * @param {*} value + * + * @param {*} img 图片地址,可能是相对路径,可能是外链 + * @param {*} block 数据块,可能是单个内容块,可能是Page + * @param {*} type block 单个内容块 ; collection 集合列表 + * @param {*} from 来自 * @returns */ -const mapImgUrl = (img, block, type = 'block', from = 'post') => { +const mapImgUrl = (img, block, type = 'block', needCompress = true) => { if (!img) { return null } + let ret = null // 相对目录,则视为notion的自带图片 if (img.startsWith('/')) { @@ -22,17 +24,21 @@ const mapImgUrl = (img, block, type = 'block', from = 'post') => { } // Notion 图床转换为永久地址 - const isNotionSignImg = - ret.indexOf('https://www.notion.so/image') !== 0 && + const hasConverted = ret.indexOf('https://www.notion.so/image') === 0 + // 需要转化的URL ; 识别aws图床地址,或者bookmark类型的外链图片 + const needConvert = + !hasConverted && (ret.indexOf('secure.notion-static.com') > 0 || - ret.indexOf('prod-files-secure') > 0) - const isImgBlock = BLOG.IMG_URL_TYPE === 'Notion' || type !== 'block' - if (isNotionSignImg && isImgBlock) { + ret.indexOf('prod-files-secure') > 0 || + block.type === 'bookmark') + + // 使用Notion图传 + if (needConvert) { ret = BLOG.NOTION_HOST + '/image/' + encodeURIComponent(ret) + - '?table=' + + '?table=block' + type + '&id=' + block.id @@ -60,7 +66,11 @@ const mapImgUrl = (img, block, type = 'block', from = 'post') => { } // 图片url优化,确保每一篇文章的图片url唯一 - if (ret && !ret.includes('https://www.notion.so/images/')) { + if ( + ret && + ret.length > 4 && + !ret.includes('https://www.notion.so/images/') + ) { // 图片接口拼接唯一识别参数,防止请求的图片被缓,而导致随机结果相同 const separator = ret.includes('?') ? '&' : '?' ret = `${ret.trim()}${separator}t=${block.id}` @@ -68,11 +78,7 @@ const mapImgUrl = (img, block, type = 'block', from = 'post') => { } // 统一压缩图片 - if ( - from === 'pageCoverThumbnail' || - block?.type === 'image' || - block?.type === 'page' - ) { + if (needCompress) { const width = block?.format?.block_width ret = compressImage(ret, width) }