Переглянути джерело

添加图片本地化脚本

Easy 1 рік тому
батько
коміт
de972eb5a9
1 змінених файлів з 55 додано та 0 видалено
  1. 55 0
      image2local.js

+ 55 - 0
image2local.js

@@ -0,0 +1,55 @@
+import { promises as fs } from 'fs';
+import { dirname, join } from 'path';
+import { fileURLToPath } from 'url';
+import { fetch } from 'node-fetch';
+
+const __dirname = dirname(fileURLToPath(import.meta.url));
+const markdownDir = join(__dirname, 'src'); // Markdown文件所在目录
+const imagesDir = join(__dirname, 'src/images'); // 图片下载目录
+
+// 确保图片下载目录存在
+await fs.mkdir(imagesDir, { recursive: true }).catch(console.error);
+
+// 下载图片
+async function downloadImage(url, filepath) {
+  const response = await fetch(url,{
+    headers: {
+        'referer': 'https://ft07.com'
+    }
+  });
+  const buffer = await response.buffer();
+  await fs.writeFile(filepath, buffer);
+  console.log('Downloaded: ' + filepath);
+}
+
+// 替换Markdown中的图片链接并下载图片
+async function replaceImageLinksInFile(filePath) {
+  let data = await fs.readFile(filePath, 'utf8');
+  const regex = /!\[.*?\]\((https:\/\/res07\.ftqq\.com\/.*?\.png)\)/g;
+
+  let match;
+  while ((match = regex.exec(data)) !== null) {
+    const imageUrl = match[1];
+    const imageName = imageUrl.split('/').pop();
+    const localImagePath = join(imagesDir, imageName);
+
+    // 替换Markdown中的图片链接为本地路径
+    data = data.replace(imageUrl, localImagePath);
+
+    // 下载图片
+    await downloadImage(imageUrl, localImagePath);
+  }
+
+  // 保存更新后的Markdown文件
+  await fs.writeFile(filePath, data, 'utf8');
+  console.log('Updated file: ' + filePath);
+}
+
+// 读取并处理每个Markdown文件
+const files = await fs.readdir(markdownDir);
+for (const file of files) {
+  if (file.endsWith('.md')) {
+    const filePath = join(markdownDir, file);
+    await replaceImageLinksInFile(filePath);
+  }
+}