poly-ebook-server
用于自有电子书内容的 WebApp(客户端/服务器):漫画、PDF 和 EPUB(cbr,cbz,cb7,epub,pdf,...)。
该工具提供指定目录(及其子目录)中的电子书服务。 根据 bookExtensions 选项,它显示漫画、电子书或其他内容。 您可以让 poly-ebook-server 以网格形式显示封面。
封面必须作为 jpg 图像文件生成在同一目录中。 名称必须通过更改电子书文件名的后缀来派生(书籍 “abc.cbr” -> 缩略图文件 “abc.jpg”)。
在浏览器中:所有书籍都以缩略图视图显示。此视图针对大量书籍进行了优化(Polymer iron-list)。 借助一个简单的文本输入框,可以过滤书籍列表。 可以下载书籍,可以发送它(作为链接或附件),或者删除它(移动到预定义的回收站文件夹)。 EPUB 可以在线阅读(在浏览器中)。
技术:服务器基于 node.js,客户端基于 Google Polymer。


前言
我使用此工具来概览我的电子书。借助我的 iPad 和 Android 平板电脑,我可以浏览我的整个收藏。 只需简单点击,即可将电子书下载到平板电脑。 在后续版本中,我将集成漫画在线浏览、互联网搜索(用于获取图书详细信息)、切换视图(图书分组)等功能。欢迎提出反馈!
编写此工具的第二个原因是学习 Google Polymer #UseThePlatform。
快速入门
ebook-cover-generator
此工具不会生成电子书的缩略图。 如果您希望这样做,可以使用 ebook-cover-generator。 在 Mac OS X 上,我推荐此工具:cover-generator-by-quicklook。
安装
创建一个空文件夹。打开您的 shell(控制台)并导航到该文件夹。输入:
npm i poly-ebook-server
将创建一个名为 node_modules 的目录,其中包含一些子文件夹。导航到 node_modules/poly-ebook-server:
cd node_modules/poly-ebook-server
编辑 node 启动文件(dev.js 或 prod.js)并调整配置:
open dev.js
使用以下命令启动应用:
node dev.js
如果出现错误,请查看 clientRoot: __dirname + '/../client(/build/bundled)' 和 baseDir:...。
用法(脚本)
var server = require('poly-ebook-server');
server.start(options<Object>);
示例
包含 3 个起始目录的示例
这是一个针对三种不同电子书类型的示例。在 json 结构中,我们有三个部分(见下文)。 每个部分将在浏览器中渲染为一个标签页。每个部分都有一个起始目录。 该目录及其子目录中所有符合文件扩展名的文件,将显示在对应的标签页下方。如果某个文件存在对应的 jpg 文件,则会在选定的尺寸(thumbsDims 和 dimIndex)下显示。用户可以在运行时更改缩略图大小。
如果出现错误,请检查 clientRoot: __dirname + '/../client'。
(function () {
"use strict";
var server = require('./index-js');
var options = {
title: "Ebooks",
clientRoot: __dirname + '/client',
port: 8081,
sectionIndex: 0,
sections: [
{
label: "Epub",
bookExtensions: ['.epub'],
baseDir: "/Users/marc/ebooks/Romane/alphabet",
thumbsDims: [
{width: 105, height: 150},
{width: 210, height: 300},
{width: 315, height: 450},
{width: 420, height: 600}
],
dimIndex: 1,
initialFilter: 'krimi -kill',
epubReader: true, // activates online epub reader
trashDir: '/Users/marc/ebooks/trash', // if trashDir is defined, a delete button will be displayed.
copyDir : '/Volumes/KOBOeReader', // tested with Kobo Aura H2O. Reader must be connected via USB.
sendOptions: {
sendattachment: {
title: 'Send book',
transport : 'smtps://USER@gmail.com:PASSW@smtp.gmail.com', // see https://www.npmjs.com/package/nodemailer
from: 'ABC@gmail.com', // sender address
to: 'ABC@gmail.com', // list of receivers
subject: 'poly ebook server' // Subject line
},
sendlink: {
title: '@getpocket',
transport : 'smtps://USER@gmail.com:PASSW@smtp.gmail.com',
from: 'ABC@gmail.com', // sender address
to: 'add@getpocket.com', // list of receivers
subject: 'filename' // Subject line
}
} // null -> send buttons are hidden
},
{
label: "Comic",
bookExtensions: [".cbz", ".cbr"],
baseDir: "/Volumes/2TB/jdownload/_comics",
thumbsDims: [
{width: 83, height: 150},
{width: 196, height: 300},
{width: 329, height: 450},
{width: 392, height: 600}
],
dimIndex: 1,
initialFilter: "bill"
},
{
label: "Magazine",
bookExtensions: ['.pdf'],
baseDir: "/Volumes/2TB/jdownload/_magazine",
thumbsDims: [
{width: 105, height: 150},
{width: 210, height: 300},
{width: 315, height: 450},
{width: 420, height: 600}
],
dimIndex: 1,
initialFilter: ''
}
]
};
server.start(options);
})();