const fs = require("fs");
const path = require("path");
const moment = require('moment');
const fse = require("fs-extra");
const archiver = require('archiver');
// 可以略过的md
const ignore_md = ["000readme-chinesebqb.md"];
// 可以配置
const user_name = "zhaoolee";
const repo_name = "ChineseBQB";
const N = "\n";
async function create_zip(md_dir_list) {
console.log("create_zip=md_dir_list=>>", md_dir_list)
for (let i = 0; i < md_dir_list.length; i++) {
if (fse.existsSync(path.join(__dirname, md_dir_list[i])) + ".zip") {
fse.removeSync(path.join(__dirname, md_dir_list[i]) + ".zip")
}
await new Promise((resolve, reject) => {
const output = fs.createWriteStream(path.join(__dirname, md_dir_list[i]) + ".zip");
const archive = archiver('zip', {
zlib: { level: 9 } // Sets the compression level.
});
archive.on('error', function (err) {
throw err;
});
output.on('close', function () {
console.log(archive.pointer() + ' total bytes');
resolve();
});
archive.pipe(output);
archive.directory(path.join(__dirname, md_dir_list[i]), false); // 文件夹压缩
archive.finalize();
})
}
}
// 根据BQB结尾的文件夹自动生成模板文件
async function create_bqb_md() {
return new Promise(async (resolve, reject) => {
let file_list = fs.readdirSync(path.join(__dirname, "./"));
let md_dir_list = [];
file_list.map((file_name_value, file_name_index) => {
if (file_name_value.endsWith("BQB")) {
md_dir_list.push(file_name_value);
}
});
console.log("md_dir_list::", md_dir_list);
// 移除旧的md_dir, 创建新的md_dir
await create_zip(md_dir_list)
// 如果对应的md文件已经存在则略过, 如果不存在,则创建一个
for (let i = 0; i < md_dir_list.length; i++) {
let tmp_md_path = "./chinesebqb-md/" + md_dir_list[i] + ".md";
fs.access(tmp_md_path, function (err) {
if (err) {
let top = md_dir_list[i].slice(0, 3);
top = 1000 - parseInt(top);
if (isNaN(top) === true) {
top = 0;
}
console.log("top::", top);
// 构建内容
let content = `---${"\n"}title: ${md_dir_list[i]}${"\n"}---${"\n"}${"\n"}------${"\n"}${"## 以下为收录的表情包库"}${"\n"}${"\n"}${"\n"}`;
// 去创建文件
fs.writeFileSync(tmp_md_path, content);
console.log(tmp_md_path, "创建完成");
if (i === md_dir_list.length - 1) {
console.log("md文件已初始化完成");
resolve();
}
} else {
console.log(tmp_md_path, "已经存在! 无需创建");
if (i === md_dir_list.length - 1) {
console.log("md文件已初始化完成");
resolve();
}
}
});
}
});
}
// 读取_posts下面已BQB.md结尾的文件
function get_bqb_md_name_list() {
let file_list = fs.readdirSync(path.join(__dirname, "./chinesebqb-md/"));
let md_list = [];
file_list.map((file_name_value, file_name_index) => {
if (file_name_value.endsWith(".md") && (ignore_md.indexOf(file_name_value) === -1)) {
md_list.push(file_name_value);
}
});
// console.log("md_list::", md_list);
return md_list;
}
// 读取表情包目录下的图片, 并拼接出图片未来的url
function get_images_src(md_name) {
let dir_name = md_name.slice(0, md_name.length - 3);
files = fs.readdirSync(path.join(__dirname, "./" + dir_name));
images = [];
files.map((file_name, file_index) => {
if (file_name.endsWith(".jpeg") || file_name.endsWith(".jpg") || file_name.endsWith(".gif") || file_name.endsWith(".png") || file_name.endsWith(".JPEG") || file_name.endsWith(".JPG") || file_name.endsWith(".GIF") || file_name.endsWith(".PNG") || file_name.endsWith(".webp")) {
let image_src = "https://www.v2fy.com/asset/0i/" + repo_name + "/" + dir_name + "/" + file_name;
images.push(image_src);
}
});
console.log("images_len::", images.length);
return images;
}
// 将images信息转换为md文本信息
function image_to_md_info(images) {
let all_md_info = "";
images.map((image_info, image_index) => {
let md_info = `
`;
md_info = md_info + `