-
Notifications
You must be signed in to change notification settings - Fork 0
/
files.js
80 lines (67 loc) · 1.91 KB
/
files.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 http = require("http");
const https = require("https");
const fsExtra = require("fs-extra");
const path = require("path");
const downloadImagesAndSaveToFile = async (directory, images) => {
console.log("download images...");
const imgDir = `${directory}/images`;
// Delete old files
fsExtra.emptyDirSync(imgDir);
if (!fs.existsSync(imgDir)) {
fs.mkdirSync(imgDir, { recursive: true });
}
for (let i = 0; i < images.length; i++) {
const ext = path.extname(images[i].src);
result = await download(images[i].src, `${imgDir}/image-${i}${ext}`);
}
console.log("download images end.");
};
const download = (url, destination) => {
if (url.indexOf("data:") !== -1) {
const ReadableData = require("stream").Readable;
const imageBufferData = Buffer.from(url, "base64");
const streamObj = new ReadableData();
streamObj.push(imageBufferData);
streamObj.push(null);
streamObj.pipe(fs.createWriteStream(destination));
return;
} else {
const proto = !url.charAt(4).localeCompare("s") ? https : http;
return new Promise((resolve, reject) => {
const file = fs.createWriteStream(destination);
proto
.get(url, (response) => {
response.pipe(file);
file.on("finish", () => {
file.close(resolve(true));
});
})
.on("error", (error) => {
fs.unlink(destination);
reject(error.message);
});
});
}
};
const initDirectory = (directory) => {
if (!fs.existsSync(directory)) {
fs.mkdirSync(directory, { recursive: true });
}
};
const copyFilesToDirectory = async (directory) => {
await fs.copyFile(
`${__dirname}/style.css`,
`${directory}/style.css`,
(err) => {
if (err) {
console.log("Can't copy styles", err);
}
}
);
};
module.exports = {
downloadImagesAndSaveToFile,
initDirectory,
copyFilesToDirectory,
};