mirror of
https://github.com/KivotosRailway/website.git
synced 2026-11-03 11:06:32 +09:00
增加图片下载本地逻辑(暂未正式启用
This commit is contained in:
@@ -2,6 +2,7 @@ import fs from "fs/promises";
|
||||
import path from "path";
|
||||
import type { Locale } from "@/lib/i18n";
|
||||
import { markdownToHtml } from "@/lib/markdown";
|
||||
import { imageMap } from "@/lib/image-map.generated";
|
||||
|
||||
export type NewsItem = {
|
||||
id: string;
|
||||
@@ -71,7 +72,8 @@ function normalizeNewsItem(fileName: string, raw: NewsFrontmatter, body: string)
|
||||
const date = raw.date?.trim() || "未注明日期";
|
||||
const category = (Array.isArray(raw.category) ? raw.category[0] : raw.category)?.trim() || "未分类";
|
||||
const tags = raw.tags ?? [];
|
||||
const cover = raw.cover?.trim() || DEFAULT_NEWS_COVER;
|
||||
const coverSource = raw.cover?.trim() || DEFAULT_NEWS_COVER;
|
||||
const cover = imageMap[coverSource] ?? coverSource;
|
||||
const slug = raw.slug?.trim() || fileName.replace(/\.md$/i, "");
|
||||
|
||||
if (!title) {
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
// Generated by scripts/cache-images.mjs. Do not edit.
|
||||
export const imageMap: Record<string, string> = {
|
||||
"https://r2-image.kivotosrailway.com/2025/05/01/68137fa6a70de.jpg": "/media/news/897d764a65897170.jpg",
|
||||
"https://r2-image.kivotosrailway.com/2025/05/01/68137fb192614.jpg": "/media/news/852dd5b369bf377d.jpg",
|
||||
"https://r2-image.kivotosrailway.com/2025/05/01/68137fffd1a19.png": "/media/news/7ae2b8fba574195b.png",
|
||||
"https://r2-image.kivotosrailway.com/2025/05/01/68137ff194540.png": "/media/news/7f7c61ff4b22140d.png",
|
||||
"https://r2-image.kivotosrailway.com/2025/05/01/68137ffd40a9c.png": "/media/news/faa9264b9cbf052b.png",
|
||||
"https://r2-image.kivotosrailway.com/2025/05/01/68137f9cf1f48.png": "/media/news/8ecb7a6b90f318e0.png",
|
||||
"https://r2-image.kivotosrailway.com/2025/05/01/68137ffa67186.png": "/media/news/acd56aafe8b41f05.png",
|
||||
"https://s21.ax1x.com/2024/09/20/pAMSLRJ.png": "/media/news/02882b262ac53ec2.png",
|
||||
"https://r2-image.kivotosrailway.com/2025/05/01/6813812298936.png": "/media/news/d699056d1f6db7a2.png",
|
||||
"https://r2-image.kivotosrailway.com/2025/05/01/681381518e5b7.png": "/media/news/e1ff2fb0e0402a83.png",
|
||||
"https://r2-image.kivotosrailway.com/2025/04/02/67ece50d760f8.png": "/media/news/625c4eff0e6c3206.png",
|
||||
"https://r2-image.kivotosrailway.com/2025/04/02/67ece40c0bc76.png": "/media/news/8419859923ddbe8f.png",
|
||||
"https://r2-image.kivotosrailway.com/2025/04/02/67ecdfbf7e858.png": "/media/news/26f4a1313bbcf030.png",
|
||||
"https://r2-image.kivotosrailway.com/2025/04/02/67ecf1b42ef19.png": "/media/news/f51e4ded0e8d6b85.png",
|
||||
"https://r2-image.kivotosrailway.com/2025/01/07/677d16a21da4c.png": "/media/news/9e3cba51761fc108.png",
|
||||
"https://r2-image.kivotosrailway.com/2025/01/14/6785481e73832.png": "/media/news/694e30e5ce74b863.png",
|
||||
"https://r2-image.kivotosrailway.com/2025/02/17/67b20e14d2e42.png": "/media/news/c3ab207db385ddd7.png",
|
||||
"https://image.kivotosrailway.com/uploads/696b7416b1764.jpg": "/media/news/f1e7be44f3b76abc.jpg",
|
||||
"https://r2-image.kivotosrailway.com/2025/05/14/682374369d005.png": "/media/news/d67395b9a4d20687.png",
|
||||
"https://r2-image.kivotosrailway.com/2025/05/13/68236919b3ebe.png": "/media/news/0dce62106c0c48a5.png",
|
||||
"https://r2-image.kivotosrailway.com/2025/05/14/6823735cea4de.png": "/media/news/06b8cffc367a6f28.png",
|
||||
"https://s21.ax1x.com/2024/09/20/pAMS0KI.png": "/media/news/c6e4e344e54d4976.png",
|
||||
"https://s21.ax1x.com/2024/09/20/pAMSWxs.png": "/media/news/5149b301e12e850b.png",
|
||||
"https://r2-image.kivotosrailway.com/2025/12/14/693ec8c79b4b8.jpg": "/media/news/3a2bc283672922bc.jpg",
|
||||
"https://r2-image.kivotosrailway.com/2025/12/14/693ec8d313ba2.jpg": "/media/news/77bd04054f6a7224.jpg",
|
||||
"https://r2-image.kivotosrailway.com/2025/12/14/693e5bbe608e5.jpg": "/media/news/99e9760bf7b5f31a.jpg",
|
||||
"https://r2-image.kivotosrailway.com/2025/05/01/681396eb28788.jpg": "/media/news/17c8d9be981d42ea.jpg",
|
||||
"https://r2-image.kivotosrailway.com/2025/05/01/681396fd3a792.jpg": "/media/news/cd0c5383ca66c6b2.jpg",
|
||||
"https://r2-image.kivotosrailway.com/2025/05/01/681396f661df5.jpg": "/media/news/d245b5b6ea4f98d5.jpg",
|
||||
"https://s21.ax1x.com/2024/12/19/pAO8xoT.png": "/media/news/09f416760a398ccd.png",
|
||||
"https://r2-image.kivotosrailway.com/2025/05/01/681398635f9b2.png": "/media/news/378bea798cf7c855.png",
|
||||
"https://r2-image.kivotosrailway.com/2025/05/01/681398634fbc4.png": "/media/news/378bea798cf7c855.png"
|
||||
};
|
||||
+3
-1
@@ -1,5 +1,7 @@
|
||||
import { marked } from "marked";
|
||||
import { imageMap } from "@/lib/image-map.generated";
|
||||
|
||||
export function markdownToHtml(markdown: string): string {
|
||||
return marked.parse(markdown, { gfm: true, breaks: false }) as string;
|
||||
const localizedMarkdown = markdown.replace(/https?:\/\/[^\s)>'"]+/g, (url) => imageMap[url.replace(/[.,;:!?]+$/, "")] ?? url);
|
||||
return marked.parse(localizedMarkdown, { gfm: true, breaks: false }) as string;
|
||||
}
|
||||
Reference in New Issue
Block a user