-
Notifications
You must be signed in to change notification settings - Fork 2
/
comp_epub.js
42 lines (33 loc) · 948 Bytes
/
comp_epub.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
var fs = require('fs')
var jszip = require('jszip')
var {optiImg, isPic} = require('epub-crawler/src/util')
// 需要安装 imgyaso
function main() {
var epubName = process.argv[2]
if (!epubName.endsWith('.epub')) {
console.log('请提供 EPUB')
return
}
var zip = jszip()
if (!zip.load) {
console.log('请安装 JSZIP 2.x')
return
}
var data = fs.readFileSync(epubName)
zip.load(data)
for (var info of Object.values(zip.files)) {
if (!isPic(info.name))
continue
console.log(info.name)
var img = optiImg(info.asNodeBuffer())
zip.file(info.name, img)
}
data = zip.generate({
type: "nodebuffer",
compression: "DEFLATE",
})
fs.renameSync(epubName, epubName + '.bak')
fs.writeFileSync(epubName, data)
console.log('done')
}
if (require.main === module) main()