mirror of
https://github.com/easychen/one-person-businesses-methodology-v2.0.git
synced 2025-08-22 14:06:15 +08:00
添加图片本地化脚本
This commit is contained in:
55
image2local.js
Normal file
55
image2local.js
Normal file
@@ -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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user