-
Notifications
You must be signed in to change notification settings - Fork 0
/
gallery.js
80 lines (62 loc) · 2.62 KB
/
gallery.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
const fs = require('fs');
const path = require('path');
const picgoDir = 'D:\\Blog\\picgo\\pixpin'; // 图片源目录
const galleryDir = path.join(__dirname, 'source', 'gallery'); // 目标相册集生成目录
const outputFilePath = path.join(galleryDir, 'index.md');
const imageHostPrefix = 'https:/jsd.onmicrosoft.cn/gh/bilibiliworld/picgo@main/pixpin/'; // 图床前缀
// 检查 picgo 目录是否存在
if (!fs.existsSync(picgoDir)) {
console.error(`图片源目录不存在:${picgoDir}`);
process.exit(1);
}
// 读取 picgo 文件夹下的所有子文件夹
const folders = fs.readdirSync(picgoDir).filter(file => {
const fullPath = path.join(picgoDir, file);
return fs.statSync(fullPath).isDirectory();
});
// 生成相册集页面内容
let galleryContent = `---
title: 相册集
date: ${new Date().toISOString()}
comments: false
---
<div class="gallery-group-main">
`;
folders.forEach(folder => {
const folderPath = path.join(picgoDir, folder);
// 读取文件夹内的图片
const images = fs.readdirSync(folderPath).filter(file => /\.(jpg|jpeg|png|webp|gif)$/.test(file));
console.log(`Processing folder: ${folder}, found images: ${images.length}`);
if (images.length > 0) {
const coverImage = images[0]; // 使用第一个图片作为封面
const relativeFolder = path.relative(picgoDir, folderPath).replace(/\\/g, '/'); // 获取相对路径
const coverImagePath = `${imageHostPrefix}${relativeFolder}/${coverImage}`;
const title = folder.charAt(0).toUpperCase() + folder.slice(1); // 将文件夹名作为标题,首字母大写
// 添加到相册集页面内容
galleryContent += `{% galleryGroup '${title}' '点击查看 ${title} 相册' '/gallery/${folder}' '${coverImagePath}' %}\n`;
// 初始化 indexContent
let indexContent = `---
title: ${title}
date: ${new Date().toISOString()}
comments: false
---
{% gallery true, 220, 10 %}
`;
images.forEach(image => {
const imageURL = `${imageHostPrefix}${relativeFolder}/${image}`;
indexContent += `![${image}](${imageURL})\n`;
});
indexContent += `{% endgallery %}\n`;
const targetFolder = path.join(galleryDir, folder); // 生成的目标文件夹
if (!fs.existsSync(targetFolder)) {
fs.mkdirSync(targetFolder, { recursive: true });
}
const indexFilePath = path.join(targetFolder, 'index.md');
fs.writeFileSync(indexFilePath, indexContent, 'utf8');
console.log(`生成相册页面:${indexFilePath}`);
}
});
galleryContent += '</div>';
// 写入相册集页面
fs.writeFileSync(outputFilePath, galleryContent, 'utf8');
console.log(`相册集页面已生成:${outputFilePath}`);