| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 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);
- }
- }
|