ITADN
krocon/node-poly-ebook-server
krocon/node-poly-ebook-server · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

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。

screen3

screen4

前言

我使用此工具来概览我的电子书。借助我的 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);

})();