Last active
July 5, 2017 13:36
-
-
Save wizardforcel/3eba4b49aca84b20e87a68369d5a471a to your computer and use it in GitHub Desktop.
make epub
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8" ?> | |
<package unique-identifier="BookId" version="2.0" xmlns="http://www.idpf.org/2007/opf"> | |
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf"> | |
<dc:identifier id="BookId" opf:scheme="UUID">urn:uuid:<%- uuid %></dc:identifier> | |
<meta content="1.0.0" name="jianhelper"/> | |
<dc:language>zh-CN</dc:language> | |
<dc:date opf:event="modification" xmlns:opf="http://www.idpf.org/2007/opf"><%- date %></dc:date> | |
</metadata> | |
<manifest> | |
<item href="toc.ncx" id="ncx" media-type="application/x-dtbncx+xml"/> | |
<% for(var i = 0; i < toc.length; i++) {%> | |
<item href="Text/<%- toc[i].file %>" id="<%- toc[i].file %>" media-type="application/xhtml+xml"/> | |
<% } %> | |
</manifest> | |
<spine toc="ncx"> | |
<% for(var i = 0; i < toc.length; i++) {%> | |
<itemref idref="<%- toc[i].file %>"/> | |
<% } %> | |
</spine> | |
<guide> | |
</guide> | |
</package> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var fs = require('fs'); | |
var uuidGenerator = require('uuid'); | |
var ejs = require('ejs'); | |
var dirname = process.argv[2]; | |
if(!dirname) | |
{ | |
console.log('请指定路径。'); | |
process.exit(0); | |
} | |
var dir = fs.readdirSync(dirname); | |
var toc = []; | |
for(var filename of dir) { | |
if(!filename.endsWith('.html')) | |
continue; | |
var co = fs.readFileSync(dirname + '/' + filename, 'utf-8'); | |
var title = /<h1>(.+?)<\/h1>/.exec(co)[1]; | |
toc.push({file: filename, title: title}); | |
var header = '<html>\r\n<head>\r\n<title></title>\r\n' + | |
'<link href="../Styles/Style.css" type="text/css" rel="stylesheet"/>' + | |
'</head>\r\n<body>\r\n'; | |
var footer = '\r\n</body>\r\n</html>'; | |
fs.writeFileSync(dirname + '/' + filename, header + co + footer); | |
} | |
toc.sort((a, b) => a.file.replace('.html', '') - b.file.replace('.html', '')); | |
var uuid = uuidGenerator.uuid(); | |
fs.writeFileSync(dirname + '/content.opf', getContentOpf(toc, uuid)); | |
fs.writeFileSync(dirname + '/toc.ncx', getTocNcx(toc, uuid)); | |
console.log('done..'); | |
function getContentOpf(toc, uuid) | |
{ | |
var date = new Date(); | |
var dateStr | |
= date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate(); | |
return ejs.render(fs.readFileSync('assets/content.ejs', 'utf-8'), { | |
date: dateStr, | |
toc: toc, | |
uuid: uuid | |
}); | |
} | |
function getTocNcx(toc, uuid) | |
{ | |
return ejs.render(fs.readFileSync('assets/toc.ejs', 'utf-8'), { | |
toc: toc, | |
uuid: uuid | |
}); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var fs = require('fs'); | |
var dir = process.argv[2]; | |
var list = fs.readdirSync(dir); | |
for(var file of list) { | |
if(!file.endsWith('.jpg')) | |
continue; | |
var co = fs.readFileSync(dir + '/' + file); | |
/*if(co[0] == 0xff && co[1] == 0xd8 && co[2] == 0xff) { | |
//jpg | |
continue; | |
}*/ | |
if(co[0] == 0x89 && co[1] == 0x50 && co[2] == 0x4e && co[3] == 0x47) | |
fs.renameSync(dir + '/' + file, dir + '/' + file.replace('.jpg', '.png')); | |
else if(co[0] == 0x47 && co[1] == 0x49 && co[2] == 0x46 && co[3] == 0x38) | |
fs.renameSync(dir + '/' + file, dir + '/' + file.replace('.jpg', '.gif')) | |
else if(co[0] == 0x49 && co[1] == 0x49 && co[2] == 0x2a && co[3] == 0x00) | |
fs.renameSync(dir + '/' + file, dir + '/' + file.replace('.jpg', '.tiff')) | |
else if(co[0] == 0x42 && co[1] == 0x4d) | |
fs.renameSync(dir + '/' + file, dir + '/' + file.replace('.jpg', '.bmp')) | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var fs = require('fs'); | |
var dir = process.argv[2]; | |
var list = fs.readdirSync(dir); | |
var typeMap = { | |
'.jpg': 'image/jpeg', | |
'.jpeg': 'image/jpeg', | |
'.gif': 'image/gif', | |
'.png': 'image/png', | |
'.bmp': 'image/bmp', | |
'.tiff': 'image/tiff' | |
} | |
function getPicType(file) { | |
for(var k in typeMap) { | |
if(file.endsWith(k)) | |
return [k, typeMap[k]]; | |
} | |
return null; | |
} | |
for(var file of list) { | |
var tp = getPicType(file); | |
if(!tp) continue; | |
console.log(' <item href="Images/' + file + '" id="' + file + '" media-type="'+ tp[1] + '"/>'); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8" ?> | |
<!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN" | |
"http://www.daisy.org/z3986/2005/ncx-2005-1.dtd"><ncx version="2005-1" xmlns="http://www.daisy.org/z3986/2005/ncx/"> | |
<head> | |
<meta content="urn:uuid:<%- uuid %>" name="dtb:uid"/> | |
<meta content="1" name="dtb:depth"/> | |
<meta content="0" name="dtb:totalPageCount"/> | |
<meta content="0" name="dtb:maxPageNumber"/> | |
</head> | |
<docTitle> | |
<text>Unknown</text> | |
</docTitle> | |
<navMap> | |
<% for(var i = 0; i < toc.length; i++) {%> | |
<navPoint id="navPoint-<%- i+1 %>" playOrder="<%- i+1 %>"> | |
<navLabel> | |
<text><%- toc[i].title %></text> | |
</navLabel> | |
<content src="Text/<%- toc[i].file %>"/> | |
</navPoint> | |
<% } %> | |
</navMap> | |
</ncx> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment