Files
ChineseBQB/push.js
2020-06-14 15:28:12 +08:00

194 lines
5.4 KiB
JavaScript
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const fse = require("fs-extra");
const path = require("path");
const download = require("download");
const fs = require("fs");
const { spawn } = require("child_process");
const os = require("os");
let RepositoriesName = "ChineseBQB";
let readme_img_dir =
"https://raw.githubusercontent.com/zhaoolee/" +
RepositoriesName +
"/master/README/";
// md所在的文件夹
let zhaoolee_md_dir = "chinesebqb-md";
// readme文件名
let readme_file_name = "000readme-chinesebqb.md";
// 可以跳过的图片地址关键词
let ignore_img_list = ["img.shields.io", "www.bilibili.com"];
// let md_dir = path.join(__dirname, RepositoriesName+"MD");
// 将README.md从 项目名+md文件夹内拷贝到外面,并将图片替换下载到README文件夹
async function cp_readme_md() {
// 在当前目录生成README文件夹
// 创建backup文件夹
if (!fs.existsSync(path.join(__dirname, "README"))) {
fs.mkdirSync(path.join(__dirname, "README"));
}
let origin_readme_file_pathname = path.join(
__dirname,
zhaoolee_md_dir,
readme_file_name
);
let target_readme_file_pathname = path.join(__dirname, "README.md");
await fse.copySync(origin_readme_file_pathname, target_readme_file_pathname, {
overwrite: true
});
await download_imgs_by_md("README.md");
await change_img_url("README.md");
}
// 将README.md内的图片下载到README文件夹
async function download_imgs_by_md(file_name) {
console.log("=download_imgs_by_md===", file_name);
// 获取文件夹名称
let dir_name = file_name.match(/^(.*).md/)[1];
let file_content = fs.readFileSync(file_name).toString();
console.log("===>>>fc===>>>", file_content);
let img_addr_re = /^https?:\/\/(.+\/)+.+(\.(gif|GIF|png|PNG|jpg|JPG|jpeg|JPEG))$/g;
img_addr_re = /https:\/\/.+?(\.jpg|\.JPG|\.jpeg|\.JPEG|\.gif|\.GIF|\.png|\.PNG)/g;
let md_img_addr_s = file_content.match(img_addr_re);
console.log(
"===md_img_addr_smd_img_addr_smd_img_addr_s===>>>",
md_img_addr_s
);
let md_img_addr_s_length = (md_img_addr_s ? md_img_addr_s : []).length;
let img_re = /^!\[(.*)\]\((.*)\)/;
console.log("===length===>>", md_img_addr_s_length);
for (let i = 0; i < md_img_addr_s_length; i++) {
let download_img = true;
for (let t = 0; t < ignore_img_list.length; t++) {
if (md_img_addr_s[i].indexOf(ignore_img_list[t]) !== -1) {
download_img = false;
}
}
console.log("~~~download_img::::", download_img);
if (download_img) {
let img_addr = md_img_addr_s[i];
console.log("img_addr img_addr img_addr img_addr==>>", img_addr);
// 定义文件名
let img_addr_list = img_addr.split("/");
console.log(
"img_addr_list img_addr_list img_addr_list img_addr_list==>>",
img_addr_list
);
if (img_addr_list) {
img_name = img_addr_list[img_addr_list.length - 1];
if (!fs.existsSync(path.join(__dirname, dir_name, img_name))) {
console.log("正在下载>>>", img_addr);
fs.writeFileSync(
path.join(__dirname, dir_name, img_name),
await download(encodeURI(img_addr))
);
}
}
}
}
}
// 更换url
async function change_img_url(file_name) {
let dir_name = file_name.match(/^(.*).md/)[1];
let file_content = fs.readFileSync(file_name).toString();
console.log("===>>>fc===>>>", file_content);
let img_addr_re = /^https?:\/\/(.+\/)+.+(\.(gif|GIF|png|PNG|jpg|JPG|jpeg|JPEG))$/g;
img_addr_re = /https:\/\/.+?(\.jpg|\.JPG|\.jpeg|\.JPEG|\.gif|\.GIF|\.png|\.PNG)/g;
let md_img_addr_s = file_content.match(img_addr_re);
if (md_img_addr_s !== null) {
let md_img_addr_s_length = md_img_addr_s.length;
let img_re = /^!\[(.*)\]\((.*)\)/;
for (let i = 0; i < md_img_addr_s_length; i++) {
let download_img = true;
for (let t = 0; t < ignore_img_list.length; t++) {
if (md_img_addr_s[i].indexOf(ignore_img_list[t]) !== -1) {
download_img = false;
}
}
if (download_img) {
let img_addr = md_img_addr_s[i];
// 定义文件名
let img_addr_list = img_addr.split("/");
img_name = img_addr_list[img_addr_list.length - 1];
let new_img_addr = readme_img_dir + img_name;
file_content = file_content.replace(img_addr, new_img_addr);
fs.writeFileSync(path.join(__dirname, file_name), file_content);
}
}
}
}
async function md_to_wordpress() {
const run_build = spawn("node", ["md_to_wordpress.js"], {
cwd: path.join(__dirname, zhaoolee_md_dir)
});
run_build.stdout.on("data", async data => {
console.log(`stdout: ${data}`);
});
run_build.stderr.on("data", async data => {
console.log("data::", String(data));
});
run_build.on("close", async code => {
console.log("程序执行完成");
});
}
async function create_index() {
return new Promise((resolve, reject) => {
const run_build = spawn("node", ["create_index.js"], {
cwd: path.join(__dirname, zhaoolee_md_dir)
});
run_build.stdout.on("data", async data => {
console.log(`stdout: ${data}`);
});
run_build.stderr.on("data", async data => {
console.log("data::", String(data));
});
run_build.on("close", async code => {
console.log("程序执行完成");
resolve();
});
});
}
// 进入项目名加MD文件夹,执行md_to_wordpress
async function main() {
await create_index();
await cp_readme_md();
await md_to_wordpress();
}
main();