开源好用的电子书管理服务Talebook(Calibre网络版)安装使用指南

新浪微博 QQ空间

今天是世界读书日,介绍一款已经用过一段时间的电子书在线管理、阅读服务。Talebook是一个开源的Calibre WEB外壳,源项目地址是:Github项目,我为了方便自己开发,在自己的代码托管服务上放了一份源码,方便存放自己的开发过程代码。也经常将自己用稳定了的特性或者修改的Bug提交MR推送到原作者的项目中。我主要会根据自己的需要开发一些特性和修复我认为比较关键的bug。代码地址为:自用Talebook地址Docker镜像地址。增加了多个特性,如:限制单个IP地址下载书籍的数量限制特性,用来防止爬虫大并发爬取书籍,导致站点不可用。另外还增加了一些统计信息和界面修改等,具体的差异点可以对比两个代码工程的获取。我也会持续跟进源项目的新特性,实时合并,也继续推送自己的修改到源项目。

更新记录列表:

  1. 支持限制单个IP地址下载数量;
  2. 支持随机推荐和最新书籍推荐手动刷新;
  3. 支持个人阅读、访问、下载和推送记录,也支持一键清除,优化历史记录页面;
  4. 新增“我的收藏”功能;
  5. 上传成功的图书即从upload目录删除,避免书籍被保存两份,浪费空间;
  6. 导入页面,在删除导入记录的同时,也删除上传到uploads目录的图书;
  7. 书籍页面新增豆瓣链接;
  8. 支持“分类导览”页面可定制,修改本地的data/books/settings/tags.yaml文件,然后重启容器即可;
  9. 支持添加“自定义运行脚本”,可以指定站点跟踪脚本;
  10. 支持批量删除数据、批量添加标签、批量抓取元数据;
  11. 支持流式加载PDF文件阅读。
  12. 支持批量抓取豆瓣元信息,并且批量确认和取消。配合shentar/douban_api:latest镜像使用;
  13. “所有书籍”页面支持按照书名拼音排序。

跟原项目一样,我也基于仓库代码生成了镜像,推送到了dockerhub,有了Docker镜像,安装使用起来就非常方便:

docker run -d --name calibre \
-p 127.0.0.1:12579:80 \
-v /media/c2/docker/calibre/data:/data \
-E TZ="Asia/Shanghai" \
shentar/talebook:latest

我这里将容器内的80端口映射到本机的内部随机端口,然后再在宿主机上面使用Nginx反向代理对外提供HTTPS服务。反向代理时,需要注意一些配置:

server {
    listen 6870 ssl http2;
    server_name book.codefine.site;
    index index.html index.htm index.php default.html default.htm default.php;
    root /any/local/path/;
 
    ssl_certificate ***********;
    ssl_certificate_key ***********;
 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 
    client_max_body_size 500M; 
 
    location / {
        proxy_pass http://127.0.0.1:12579/;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Nginx-Proxy true;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
    }
 
    access_log on;
}

注意这些Header必须正确设置,否则可能无法正常打开主页。 剩下的就是从网页打开宿主机的6870端口即可访问。我的宿主机是有域名的因此,我的站点的地址就是:https://book.codefine.site:6870,首次打开时,会做一些必要的配置,如私人模式还是多用户模式。admin账号和密码设置等。完成后就可以愉快的使用talebook存取电子书籍了。 对于网络下载的各种电子书文件,元信息可能都不准确,因此需要从豆瓣等刮削元信息。开源社区有一个现成的刮削服务,douban-api-rs:源码地址为:https://github.com/cxfksword/douban-api-rs,这个也提供Docker的安装方式,不过作者并没有在Dockerhub上面放镜像。而是在Github自己的镜像服务上面托管镜像。如果是命令行安装,只需要执行如下命令即可:

docker run -d \
--name=douban-api-rs \
--restart=always \
-p 172.17.0.1:8080:80
ghcr.io/cxfksword/douban-api-rs:latest

如果是群晖等NAS服务,则需要自行配置新的镜像源才能拉去到该镜像。具体笔者没有使用过,需要自行探索。可以使用如下docker部署刮削服务,注意,本站的talebook镜像必须配套这个刮削服务,如果混用会有各种异常,或导致IP地址被豆瓣禁用。 https://hub.docker.com/r/shentar/douban_api

docker run -p 172.17.0.1:12568:8080 --name douban_api --restart=always \
-v /your/data/volume/full/path/:/data \
-v /etc/timezone:/etc/timezone:ro \
-v /etc/localtime:/etc/localtime:ro \
-e LOG_LEVEL="warn" \
-e COOKIE='your douban login cookie' \
-d shentar/douban_api:latest

然后到Talebook的高级配置项目中配置即可:

image

我这里之所以选择使用172.17.0.1作为监听地址,是因为这个地址是我的docker服务的网络的虚拟网关,宿主机也能访问这个IP地址。这样,在Talebook内部就能用这个地址与豆瓣刮削服务通信。上传电子书之后,只要设置正确的书籍名字即可进行全量元数据的抓取了。豆瓣网站不再提供书籍的标签(Tag)了,因此Talebook服务端做了从作者、标题和书籍摘要中匹配Tag的实现,准确率还行。 感谢Talebook作者贡献这么好的开源项目,并且多年来还在积极维护。这个项目也让我初步接触到Vue.js、Node.js、Python3 Tornado等生态,开发WEB项目,使用这些组件,效率极高。什么时候有精力可以把jAlbum的前端好好用这些写一下。

新浪微博 QQ空间

| 1 分2 分3 分4 分5 分 (5.00- 5票) Loading ... Loading ... | 这篇文章归档在:WEB网络, 建站技术, 数码硬件, 移动互联 | 标签: , , , , , . | 永久链接:链接 | 评论(132) |

132 条评论

  1. 1
    评论于 三月 19, 2025 at 16:32:39 CST | 评论链接

    哥如果想要删除某个作者的所有书籍,有批量的方法不

    • 匿名
      评论于 三月 19, 2025 at 16:33:50 CST | 评论链接

      又研究了一下找到了

  2. xxgl
    评论于 十一月 7, 2024 at 09:56:19 CST | 评论链接

    今天更新了最新版的镜像,创建容器成功后,就是无法运行,也没有任何提示,容器日志为空,重新启动容器依旧是立马停止,还以为是我配置文件太多了,就清空了当前容器挂载卷,重新部署,问题依旧,环境是x86的openpwrt下

    • 童燕群
      评论于 十一月 9, 2024 at 09:54:57 CST | 评论链接

      最近一次更新引入了bug,全新安装有问题。升级应该是没问题的,不动data目录,不会有问题。

    • 童燕群
      评论于 十一月 9, 2024 at 09:55:35 CST | 评论链接

      已经修复了,再看看呢。

      • xxgl
        评论于 二月 21, 2025 at 14:45:58 CST | 评论链接

        问题依旧,我全新安装,在istore OS及centos7下,均无法打开主页,容器显示运行正常,未报错,可以通过http://172.17.0.19:9000/打开初始化页面,当然是无法初始化的。镜像日期是2024/11/09 05:13:43。以下是日志信息

        stderr: cp: cannot stat ‘/prebuilt/books/calibre-webserver.db’: No such file or directory
        stdout: Restarting nginx: nginx.
        stdout: 2025-02-18 17:12:06,076 CRIT Supervisor is running as root. Privileges were not dropped because no user is specified in the config file. If you intend to run as root, you can set user=root in the config file to avoid this message.
        stdout: 2025-02-18 17:12:06,077 INFO Included extra file “/etc/supervisor/conf.d/talebook.conf” during parsing
        stdout: 2025-02-18 17:12:06,081 INFO RPC interface ‘supervisor’ initialized
        stdout: 2025-02-18 17:12:06,081 CRIT Server ‘unix_http_server’ running without any HTTP authentication checking
        stdout: 2025-02-18 17:12:06,082 INFO supervisord started with pid 32
        stdout: 2025-02-18 17:12:07,085 INFO spawned: ‘tornado’ with pid 33
        stdout: 2025-02-18 17:12:07,087 INFO spawned: ‘nodejs’ with pid 34
        stdout: 2025-02-18 17:12:08,493 INFO success: tornado entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
        stdout: 2025-02-18 17:12:08,493 INFO success: nodejs entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
        stdout: Restarting nginx: nginx.
        stdout: 2025-02-21 09:04:09,148 CRIT Supervisor is running as root. Privileges were not dropped because no user is specified in the config file. If you intend to run as root, you can set user=root in the config file to avoid this message.
        stdout: 2025-02-21 09:04:09,148 INFO Included extra file “/etc/supervisor/conf.d/talebook.conf” during parsing
        stderr: Unlinking stale socket /var/run/supervisor.sock
        stdout: 2025-02-21 09:04:09,458 INFO RPC interface ‘supervisor’ initialized
        stdout: 2025-02-21 09:04:09,458 CRIT Server ‘unix_http_server’ running without any HTTP authentication checking
        stdout: 2025-02-21 09:04:09,458 INFO supervisord started with pid 30
        stdout: 2025-02-21 09:04:10,461 INFO spawned: ‘tornado’ with pid 31
        stdout: 2025-02-21 09:04:10,464 INFO spawned: ‘nodejs’ with pid 32
        stdout: 2025-02-21 09:04:12,182 INFO success: tornado entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
        stdout: 2025-02-21 09:04:12,182 INFO success: nodejs entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

        • xxgl
          评论于 二月 21, 2025 at 14:51:25 CST | 评论链接

          talebook.log全部日志信息如下,最后一条日志信息是打开http://172.17.0.19:9000/install尝试初始化并失败产生的
          [I 250218 17:12:07 main:127] Init library with [/data/books/library]
          [I 250218 17:12:07 main:128] Init AuthDB with [sqlite:////data/books/calibre-webserver.db]
          [I 250218 17:12:07 main:129] Init Static with [/var/www/talebook/webserver/resources]
          [I 250218 17:12:07 main:130] Init HTML with [/var/www/talebook/webserver/../app/dist]
          [I 250218 17:12:07 main:131] Init Nuxtjs with [/var/www/talebook/webserver/../app/.env]
          [I 250218 17:12:07 models:42] Bind modles._session()
          [I 250218 17:12:07 main:141] Create tables into DB
          [I 250218 17:12:08 backgroud_tasks:50] Start to run the background tasks.
          [I 250218 17:12:08 backgroud_tasks:47] Started ExtractBooks:loop_run
          [I 250218 17:12:08 main:190] Now, Running…
          [D 250218 17:12:08 selector_events:59] Using selector: EpollSelector
          [I 250221 09:04:11 main:127] Init library with [/data/books/library]
          [I 250221 09:04:11 main:128] Init AuthDB with [sqlite:////data/books/calibre-webserver.db]
          [I 250221 09:04:11 main:129] Init Static with [/var/www/talebook/webserver/resources]
          [I 250221 09:04:11 main:130] Init HTML with [/var/www/talebook/webserver/../app/dist]
          [I 250221 09:04:11 main:131] Init Nuxtjs with [/var/www/talebook/webserver/../app/.env]
          [I 250221 09:04:11 models:42] Bind modles._session()
          [I 250221 09:04:11 main:141] Create tables into DB
          [I 250221 09:04:12 backgroud_tasks:50] Start to run the background tasks.
          [I 250221 09:04:12 backgroud_tasks:47] Started ExtractBooks:loop_run
          [I 250221 09:04:12 main:190] Now, Running…
          [D 250221 09:04:12 selector_events:59] Using selector: EpollSelector
          [I 250221 14:48:17 web:2239] 200 GET /api/index?random=12&recent=12 (127.0.0.1) 1.42ms

          • 童燕群
            评论于 二月 21, 2025 at 15:14:55 CST | 评论链接

            初始化界面报什么错误?只是提示正在初始化,是没问题的。使用http://172.17.0.19:9000/这个地址重新打开用admin和密码登录即可。初始化完成后,好像不会自动跳转。

      • xxgl
        评论于 二月 21, 2025 at 15:32:04 CST | 评论链接

        打开主页显示:
        您访问的网页出错了!
        网络连接异常、网站服务器失去响应
        因为无法初始化,所以打开http://172.17.0.19:9000/,用于跳转到http://172.17.0.19:9000/install页面
        我映射的端口及目录没任何问题的,暂时不知道什么地方出问题了
        docker run -d –name calibre -p 127.0.0.1:8181:80 -v /mnt/vio6-1/docker/data/calibre/data:/data -e TZ=”Asia/Shanghai” shentar/talebook:latest

        • 童燕群
          评论于 二月 21, 2025 at 15:34:35 CST | 评论链接

          你这不是用127.0.0.1的端口吗?怎么访问的时候又是172的地址呢?

        • 童燕群
          评论于 二月 21, 2025 at 16:01:01 CST | 评论链接

          不是这样的啊。。
          按照这个启动语句,
          docker run -d –name calibre -p 127.0.0.1:8181:80 -v /mnt/vio6-1/docker/data/calibre/data:/data -e TZ=”Asia/Shanghai” shentar/talebook:latest
          你应该用127.0.0.1:8181这个区访问。如果你能访问172段的docker内部地址,那么你应该用172.*.*.*:80端口区访问。如果你没有打算用nginx做https的反向代理,那么建议你用下面的语句:
          docker run -d –name calibre -p 8181:80 -v /mnt/vio6-1/docker/data/calibre/data:/data -e TZ=”Asia/Shanghai” shentar/talebook:latest
          这样可以使用任意的大网IP的8181访问。

          • xxgl
            评论于 二月 21, 2025 at 16:06:37 CST | 评论链接

            去掉127.0.0.1后,就可以正常运行了,之前一直参照你给的例子,我还以为必须要用127.0.0.1:8181来映射80端口呢,非常感谢,用习惯了这个平台,看书太方便了

  3. ppcfans
    评论于 十月 27, 2024 at 11:26:46 CST | 评论链接

    目前问题:
    群晖安装后启动,出现exec /var/www/talebook/docker/start.sh: no such file or directory,但进入卷中查看,是有start.sh的。

    可能导致的原因:
    前面都是一直可以安装的,后来换了几次版本,包括shentar版本(启动后,一直是写入保存状态),主要是因为各版本总是存在无法豆瓣拉取书籍信息的问题,所以折腾了多次,以为是各次安装时有残留信息导致,用find果然找不到不少含talebook的存储卷,就都删掉了。
    但是在这之后,就没法安装了,用ssh无法load,后来用portainer导入镜像,但启动时就出现开头出现的问题。

    不知道如何解决,请赐教!

    • 童燕群
      评论于 十月 28, 2024 at 00:54:47 CST | 评论链接

      看起来像是镜像库被破坏了。这块我也不熟练。建议重新找个环境配置docker安装一下看看。通过portainer操作镜像,别在镜像内部删除文件吧。

      • ppcfans
        评论于 十月 31, 2024 at 20:30:26 CST | 评论链接

        谢谢,整个容器重装了。但是启动注册账户时,一直显示“服务器正在启动中”,点击下面的关闭后,显示“正在写入配置文件”,删除网址后面的/install,可以直接进入,不知道后面使用会不会有问题。

  4. 1
    评论于 七月 5, 2024 at 16:32:51 CST | 评论链接

    大佬 ,主项目更新了,小小的催更一下

    • 童燕群
      评论于 七月 19, 2024 at 10:32:53 CST | 评论链接

      看了一下,就是同一本书支持多格式这个吧。感觉意义不是太大啊,放进书库肯定要选取格式最好的那一版啊。

  5. benjafpz
    评论于 六月 13, 2024 at 00:42:59 CST | 评论链接

    不知道能否实现导入图书库之后生成硬链接(类似NAStool)整理视频,想在办理书籍文件整理的同时,导入书库不要重复保存

  6. 匿名
    评论于 五月 21, 2024 at 07:43:32 CST | 评论链接

    报错
    以前部署在威联通上可以正常访问,因为系统盘出了问题换盘后重新拉取镜像部署了一次,启动后访问映射的端口网址显示这个页面,不是talebook的配置页面,请问要设置什么?我本机没有安装nginx,容器的nginx配置文件也不知道在哪里

    • 匿名
      评论于 五月 30, 2024 at 19:06:06 CST | 评论链接

      换回原版了,使用原版docker的master分支镜像使用没问题

  7. fewroad
    评论于 十二月 11, 2023 at 09:34:09 CST | 评论链接

    作者您好,我是一名计算机专业的大二学生,但是现在我看这种项目还是看不懂唉,就是之前无意浏览到这个代码人生网站可以下载书籍,然后我就把他收藏起来了,但是现在我打开网站提示要输入密码,现在我应该怎么办呢。是要自己配置一个网站吗?希望得到您的回复

  8. 匿名
    评论于 十一月 26, 2023 at 13:05:41 CST | 评论链接

    求助……

    描述:异常的书籍删除之后(看日志是文件名太长导致的异常,然后在书的页面进行了删除),再次导入或者上传时提示书已存在(把上传的文件名已经修改成短的了)。

    1.导入时,日志里是“analysed one book: status=exist”。
    2.从导入界面的链接过去,或者搜索该书查不到,“[ 28 ms] select books from library (count = 0) [ 30 ms] select books from database (count = 0) the book with id[xxx] is not found.”

    也就是陷入尴尬的无法重新导入,也无法搜索到的境地……特此求助……

    • 匿名
      评论于 三月 4, 2024 at 23:44:57 CST | 评论链接

      问题解决了。
      用calibre把这个epub文件的文件title改短后重新导入,修改过的文件和原文件不同,可以被识别重新导入。

  9. 匿名
    评论于 十月 22, 2023 at 16:23:22 CST | 评论链接

    为什么新建了booksimports文件夹依然无法读取书籍呢

    • 童燕群
      评论于 十月 22, 2023 at 16:50:00 CST | 评论链接

      看看日志报啥错呢。

      • 匿名
        评论于 十月 22, 2023 at 16:52:20 CST | 评论链接

        日记没报错然后都能正常运行,上传可以但是建立文件夹扫描不出来

      • 匿名
        评论于 十月 22, 2023 at 16:54:51 CST | 评论链接

        [I 231022 07:51:23 main:126] Init library with [/data/books/library/]
        stdout
        07:51:23
        [I 231022 07:51:23 main:127] Init AuthDB with [sqlite:////data/books/calibre-webserver.db]
        stdout
        07:51:23
        [I 231022 07:51:23 main:128] Init Static with [/var/www/talebook/webserver/resources]
        stdout
        07:51:23
        [I 231022 07:51:23 main:129] Init HTML with [/var/www/talebook/webserver/../app/dist]
        stdout
        07:51:23
        [I 231022 07:51:23 main:130] Init Nuxtjs with [/var/www/talebook/webserver/../app/.env]
        stdout
        07:51:23
        [I 231022 07:51:23 models:41] Bind modles._session()
        stdout
        07:51:23
        [I 231022 07:51:23 main:149] Create tables into DB
        stdout
        07:51:23
        [I 231022 07:51:23 main:126] Init library with [/data/books/library/]
        stdout
        07:51:23
        [I 231022 07:51:23 main:127] Init AuthDB with [sqlite:////data/books/calibre-webserver.db]
        stdout
        07:51:23
        [I 231022 07:51:23 main:128] Init Static with [/var/www/talebook/webserver/resources]
        stdout
        07:51:23
        [I 231022 07:51:23 main:129] Init HTML with [/var/www/talebook/webserver/../app/dist]
        stdout
        07:51:23
        [I 231022 07:51:23 main:130] Init Nuxtjs with [/var/www/talebook/webserver/../app/.env]
        stdout
        07:51:23
        [I 231022 07:51:23 main:133] updating configs …
        stdout
        07:51:23
        [I 231022 07:51:23 main:138] done

        • 童燕群
          评论于 十月 22, 2023 at 21:14:41 CST | 评论链接

          这个看不出问题,要看你点击了扫描按钮之后服务端的日志。你先恢复默认配置,然后检查admin界面配置的uploads目录与你预期的扫描目录是否同一个。默认的应该是/data/books/imports/目录。

          • 匿名
            评论于 十月 23, 2023 at 10:03:41 CST | 评论链接

            已经折腾好了谢谢

  10. 匿名
    评论于 九月 3, 2023 at 17:02:20 CST | 评论链接

    豆瓣插件总是关联不了,总抓取不到信息,请问是怎么回事

    • 童燕群
      评论于 九月 4, 2023 at 20:02:00 CST | 评论链接

      1、检查是否设置了cookies,可以从浏览器中的登录后的发往官网的请求中取。一般设置一次可以用很久。
      2、可以看看容器内/data目录的日志文件中打印的请求失败的原因是什么。

  11. cc520
    评论于 八月 14, 2023 at 11:57:53 CST | 评论链接

    谢谢回复,我的是进度条加载完了,一直放着也无法阅读,300-500多M没问题,加载也快!

    • 童燕群
      评论于 八月 15, 2023 at 11:07:48 CST | 评论链接

      很可能跟浏览器加载文件大小的上限、文件格式等有关系。这个延迟加载其实意义也不是太大。就是可以早几秒看到目录和前几页。超大文件还是离线阅读好用 :)

  12. cc520
    评论于 八月 14, 2023 at 07:03:02 CST | 评论链接

    你好,在线阅读打开pdf大文件(大于700M),无法正常阅读,如何解决?是否有版本更新

    • 评论于 八月 14, 2023 at 09:08:00 CST | 评论链接

      现在我提供的镜像就支持的。还是要等到加载一段之后才能开始读取。

  13. 1
    评论于 六月 30, 2023 at 16:25:17 CST | 评论链接

    折腾一天的最新状态:log里还是会有这个报错,不过已经可以在线阅读了

  14. 1
    评论于 六月 28, 2023 at 11:29:42 CST | 评论链接

    在线还是打不开,提示这个

    1[E 230628 11:16:25 web:2990] Could not open static file '/var/www/talebook/webserver/resources/readium/css/bootstrap.css'
    2[E 230628 11:16:25 web:2990] Could not open static file '/var/www/talebook/webserver/resources/readium/css/viewer.css'
    3[E 230628 11:16:25 web:2990] Could not open static file '/var/www/talebook/webserver/resources/readium/css/readium_js.css'
    4[E 230628 11:16:25 web:2990] Could not open static file '/var/www/talebook/webserver/resources/js/jquery-1.11.1.min.js'
    5[E 230628 11:16:25 web:2990] Could not open static file '/var/www/talebook/webserver/resources/readium/lib/require.js'
    6[E 230628 11:16:25 web:2990] Could not open static file '/var/www/talebook/webserver/resources/readium/lib/ReadiumViewerLite.js'
    7[E 230628 11:16:25 web:2990] Could not open static file '/var/www/talebook/webserver/resources/readium/require_config.js'
    8[E 230628 11:16:25 web:2990] Could not open static file '/var/www/talebook/webserver/resources/readium/css/annotations.css'

     

    • 童燕群
      评论于 六月 28, 2023 at 11:32:33 CST | 评论链接

      看起来就是权限问题

      • 1
        评论于 六月 30, 2023 at 08:05:27 CST | 评论链接

        这是重新创建了一遍容器,在群晖界面勾上了使用高权限后的报错。。。
        可以通过在环境里加上pid和cid的方式提高权限么

      • 1
        评论于 六月 30, 2023 at 08:12:28 CST | 评论链接

        还有一个思路,想把除library文件夹外的所有文件夹删除重建,设置有备份,就是不知道这样会不会影响新容器里书籍的呈现

      • 1
        评论于 六月 30, 2023 at 08:19:32 CST | 评论链接

        刚刚进容器里看了一下,发现是/var/www/talebook/webserver/resources/下readium文件夹没有被创建,所以没有读取成功

  15. 1
    评论于 六月 15, 2023 at 14:37:32 CST | 评论链接

    在线阅读合集报错如下:

    1[I 230615 14:27:35 web:2239] 200 GET /api/book/21313 (221.207.91.247) 1370.42ms
    2[W 230615 14:27:35 web:2239] 404 GET /get/extract/%E9%BB%84%E6%B0%B8%E7%8E%89/%E6%97%A0%E6%84%81%E6%B2%B3%E7%9A%84%E6%B5%AA%E8%8D%A1%E6%B1%89%E5%AD%90%C2%B7%E6%9C%B1%E9%9B%80%E5%9F%8E%2B%E5%85%AB%E5%B9%B4%20%2821327%29/META-INF/container.xml?0.12107901969831159 (221.207.91.247) 3.59ms
    3[W 230615 14:27:35 web:1787] 404 GET /get/progress/21327 (221.207.91.247): nothing
    4[W 230615 14:27:35 web:2239] 404 GET /get/progress/21327 (221.207.91.247) 4.17ms
    5[W 230615 14:27:37 web:1787] 404 GET /get/progress/21327 (221.207.91.247): nothing
    6[W 230615 14:27:37 web:2239] 404 GET /get/progress/21327 (221.207.91.247) 4.75ms

     

    • 1
      评论于 六月 15, 2023 at 14:38:41 CST | 评论链接

      刚才的代码是.log里的,前端显示系统异常

      • 童燕群
        评论于 六月 16, 2023 at 16:05:45 CST | 评论链接

        这里看起来是extract迟迟没有完成。有两种可能:1、没有权限把epub解压成目录,没有写目录和文件的权限。2、epub本身有问题,calibre解压会失败。这样前台界面就最终超时报错。

        • 1
          评论于 六月 16, 2023 at 16:31:05 CST | 评论链接

          如果是1的原因,是不是所有的在线都无法打开?还是有其他情况
          如果是文件本身,下载下来的epub文件,ie是能正常读取的,
          我把两个文件传上来,
          https://fast.uc.cn/s/82e1299235de4
          https://fast.uc.cn/s/4d87d1a8f8d04
          有时间还请童哥帮忙看看

          • 童燕群
            评论于 六月 19, 2023 at 19:00:58 CST | 评论链接

            我试了一下,两本书都没问题,都可以正常的extract和阅读。

  16. Juno
    评论于 六月 13, 2023 at 17:13:47 CST | 评论链接

    感谢楼主分享,已在自己NAS上部署使用;在图书阅读体验上,能否进行页面适配一下。如看mobi,或者一些图片式的PDF,能不能让一页缩放在一个屏幕上。现在是会超出屏幕边界,割裂感有点难受。谢谢。

    • 童燕群
      评论于 六月 13, 2023 at 20:45:49 CST | 评论链接

      我也发现这个问题了。这是mobi转epub后,有些style转丢了导致的。具体原因也没分析,书籍转类别是由calibre做的。talebook控制不了。一般而言pdf不会有问题的。所以解决办法就是尽量使用epub和pdf格式,尽量不用质量差的扫描版。

      • Juno
        评论于 六月 14, 2023 at 11:06:43 CST | 评论链接

        在PC端其实还好,主要是手机端上体验不好。我现在只能暂时放弃用talebook来看图片类(如漫画)的书,文字类的还好。看漫画用komga比较好,文件导入,阅读体验都不错,但是komga不支持mobi,所以又要用Calibre来转格式。
        另外,我用Kybook3一直连接不了opds(内网使用),报错网络断开。但是连 https://book.codefine.site:6870/opds/ 又是正常的,(但是不能下载),不知道是不是哪里没有设置好。

        • 童燕群
          评论于 六月 14, 2023 at 11:27:29 CST | 评论链接

          因为不是完全公开访问的,opds其实等同于不能用。一般软件都不支持传入私人图书馆密码或者cookies。

  17. 空返
    评论于 六月 5, 2023 at 16:40:34 CST | 评论链接

    查询跳出这个提示错误,是什么原因?
    Exception:
    Traceback (most recent call last):
    File “/var/www/talebook/webserver/handlers/base.py”, line 51, in do
    rsp = func(self, *args, **kwargs)
    File “/var/www/talebook/webserver/handlers/base.py”, line 78, in do
    return func(self, *args, **kwargs)
    File “/var/www/talebook/webserver/handlers/book.py”, line 193, in get
    books = self.plugin_search_books(mi)
    File “/var/www/talebook/webserver/handlers/book.py”, line 153, in plugin_search_books
    books = [api._metadata(b) for b in books]
    File “/var/www/talebook/webserver/handlers/book.py”, line 153, in
    books = [api._metadata(b) for b in books]
    File “/var/www/talebook/webserver/plugins/meta/douban.py”, line 159, in _metadata
    mi.tags = [t[“name”] for t in book[“tags”]][:8]
    KeyError: ‘tags’

    • 空返
      评论于 六月 5, 2023 at 16:46:56 CST | 评论链接

      补充一下:是安装了豆瓣的镜像服务,然后点获取信息就跳出这个错误提示。

    • 童燕群
      评论于 六月 5, 2023 at 17:22:09 CST | 评论链接

      看起来是一个已经解决的bug,需要升级一下shentar/talebook:latest这个镜像。

      • 空返
        评论于 六月 6, 2023 at 10:08:03 CST | 评论链接

        是镜像问题,用了talebook/talebook镜像,换了shentar/talebook镜像就正常。谢谢~

      • 空返
        评论于 六月 18, 2023 at 12:18:05 CST | 评论链接

        又碰到一桩尴尬事:设置成私人书库,现在说访问密码不对。有没有办法恢复的?

        • 童燕群
          评论于 六月 18, 2023 at 14:22:29 CST | 评论链接

          在挂载的目录里面搜索一下auto.py文件,里面有个invitecode,这就是接入码。

          • 空返
            评论于 六月 18, 2023 at 17:12:03 CST | 评论链接

            谢谢。

  18. 匿名
    评论于 五月 15, 2023 at 13:41:01 CST | 评论链接

    群辉docker安装doubanapi容器后,打开显示是404 page not found对吗?然后也刮削不到豆瓣的数据,-v /etc/timezone:/etc/timezone:ro \
    -v /etc/localtime:/etc/localtime:ro \这两个命令没法执行

    • 童燕群
      评论于 五月 15, 2023 at 14:39:08 CST | 评论链接

      之前正文里面贴的命令有点问题(–被转换成了破折号),这里要带着 \ 一起执行,不是一行一行的执行。

      1docker run -p 172.17.0.1:12568:8080 --name douban_api --restart=always \
      2-v /your/data/volume/full/path/:/data \
      3-v /etc/timezone:/etc/timezone:ro \
      4-v /etc/localtime:/etc/localtime:ro \
      5-e LOG_LEVEL="warn" \
      6-e COOKIE='your douban login cookie' \
      7-d shentar/douban_api:latest

       

    • 童燕群
      评论于 五月 15, 2023 at 14:41:07 CST | 评论链接

      另外这是个api服务,没有界面。如果url拼写和参数填写正确,应该是显示json格式的内容。

    • 匿名
      评论于 五月 15, 2023 at 19:14:23 CST | 评论链接

      报错,我的环境是群辉220+

      • 童燕群
        评论于 五月 15, 2023 at 19:39:13 CST | 评论链接

        那只能删掉这个吧,只是时间显示可能有点别扭,没有其他影响。

  19. bailz1911
    评论于 五月 6, 2023 at 09:10:02 CST | 评论链接

    大佬,您好。想请教一个问题,我安装的应该是原版的talebook,用手机访问我的书库阅读书籍时,总是不能在线看书,必须要先下载到手机里,这 应该就不是流式pdf吧。您的这个版本支持流式pdf,是不是您做出了修改,并且支持手机在线阅读?谢谢。

    • 童燕群
      评论于 五月 6, 2023 at 10:03:59 CST | 评论链接

      是的,做了一点优化,我也把优化方法提在原版的issue列表里面了。我这个版本脱离主干比较多了,没法提MR合并到主干了。

      • bailz1911
        评论于 五月 6, 2023 at 10:23:05 CST | 评论链接

        我前几天重新安装的原版的talebook应该是也支持流式pdf了,我在手机上可以直接看不需要下载了。可能是你提交的issue被接受并被修改了

        • 童燕群
          评论于 五月 6, 2023 at 11:07:26 CST | 评论链接

          我说的是从原版同步过来继续优化了PDF在线阅读的逻辑。你说的应该是PDF在线阅读的功能,这个是从原版同步过来的。流式加载是指不用等书籍下载完成,就可以加载前面的章节,在客户端跟服务端的网络带宽不够大时,比较有用。这个在原版上面不支持,我优化了。

  20. nco771
    评论于 四月 29, 2023 at 17:01:34 CST | 评论链接

    大佬你好 在作者这行本来就一个 突然间多出3个还是乱码 是怎么回事?

    • 童燕群
      评论于 四月 29, 2023 at 20:25:45 CST | 评论链接

      作者是从书籍里面的元数据提取的,很多PDF文档的元数据不正确或者编码不对,可以在talebook编辑书籍信息就好了。

  21. 兔八哥
    评论于 四月 17, 2023 at 12:00:39 CST | 评论链接

    大佬您好,我群晖docker装了你这个修改版以后,有几个问题需要请教:
    1.每次保存设置之后,总是停留在服务器正在启动中。。。,关闭以后发现设置其实已经保存了。
    2.我在导入图书中,扫描书籍,怎么发现不了txt文件。
    其他的比原版好用。

    • 兔八哥
      评论于 四月 17, 2023 at 12:02:29 CST | 评论链接

      我安装的都是在docker注册表里面搜到的你发布的
      映像。

    • 童燕群
      评论于 四月 17, 2023 at 13:00:57 CST | 评论链接

      txt在扫描的时候被排除了,因为txt转格式之后,排版大多不友好,所以没支持,并且一般的书都能找到epub或者pdf。

    • 童燕群
      评论于 四月 17, 2023 at 13:02:40 CST | 评论链接

      保存之后会自动重启一次,重启一次时间较长(具体时长取决于硬件性能,一般30s内),重启过程中点击按钮等会报重启中,可以重新刷新一次就可以不会继续提示启动中。如果设置 自定义代码 ,会达到分钟级。

      • 兔八哥
        评论于 四月 17, 2023 at 14:06:12 CST | 评论链接

        好的,谢谢。

  22. 匿名
    评论于 四月 11, 2023 at 13:02:30 CST | 评论链接

    请教大佬,如何设置可以上传大于100M的pdf呢?谢谢

    • 童燕群
      评论于 四月 11, 2023 at 18:12:17 CST | 评论链接

      管理员在 管理-系统配置-高级配置 里面修改上传最大大小限制的配置项。

  23. 匿名
    评论于 四月 10, 2023 at 15:16:05 CST | 评论链接

    请问大佬,书籍简介里写入的文字,不会分段,全部段落都自己粘在一行里了。要怎么搞?谢谢

  24. 匿名
    评论于 四月 9, 2023 at 16:24:42 CST | 评论链接

    感谢大佬分享,是不是docker下载的版本不支持多用户?请问在哪里提供多用户版本呢?

    • 匿名
      评论于 四月 9, 2023 at 16:25:31 CST | 评论链接

      我在登录 界面并未看到有注册的按钮呀

      • 评论于 四月 9, 2023 at 17:48:16 CST | 评论链接

        1、设置里面有个允许游客注册的选项是否已经开启。
        2、登录框的右上角就是注册按钮。

        • 匿名
          评论于 四月 9, 2023 at 22:14:10 CST | 评论链接

          可以了,谢谢

  25. Hack3r
    评论于 三月 22, 2023 at 13:39:18 CST | 评论链接

    请问这个bug具体应该怎么修复呢?我在内网环境下部署的,没有链接互联网,不想重新导一遍镜像了,非常感谢您的解答!

  26. Hack3r
    评论于 三月 22, 2023 at 10:25:24 CST | 评论链接

    博主您好,请问安装talebook时设置管理员密码总是弹出密码无效怎么办?部署的是您的Dev版本docker

    • 童燕群
      评论于 三月 22, 2023 at 13:13:13 CST | 评论链接

      dev有个密码校验的bug,后面验证稳定之后,我就切换到latest了,dev忘记更新了 ^_^。我同步更新了dev,现在latest和dev是完全一样的了。

  27. 评论于 三月 4, 2023 at 01:33:45 CST | 评论链接

    请问支持pdf懒加载阅读吗

    • 童燕群
      评论于 三月 4, 2023 at 08:51:40 CST | 评论链接

      还没有支持。我看主站已经用pdf.js了,搜了一下这个可以实现你说的流式加载。后面空了看看。

    • 童燕群
      评论于 三月 5, 2023 at 00:01:26 CST | 评论链接

      已经同步过来了,并且支持了分页加载pdf。
      在这个镜像:docker pull shentar/talebook:dev,pdf文档标题还有点问题,不能同步书籍的正式名称,而是使用的pdf文件内置的名字,这个问题后面会解决掉。

  28. 1
    评论于 三月 1, 2023 at 11:18:00 CST | 评论链接

    删除重复书籍时提示服务器正在启动中,是这个功能还没做完么

    • 童燕群
      评论于 三月 1, 2023 at 12:32:59 CST | 评论链接

      重启的时间比较长,要等启动好再操作。

      • 1
        评论于 三月 1, 2023 at 13:39:18 CST | 评论链接

        上午11点更新了一下,重新在docker里建立的,现在是主页正常,书籍在线阅读打不开,我看了下talerlog,显示如下:

        01Traceback (most recent call last):
        02  File "/usr/local/lib/python3.9/dist-packages/tornado/http1connection.py", line 823, in _server_request_loop
        03    ret = await conn.read_response(request_delegate)
        04  File "/usr/local/lib/python3.9/dist-packages/tornado/http1connection.py", line 183, in _read_message
        05    header_future = self.stream.read_until_regex(
        06  File "/usr/local/lib/python3.9/dist-packages/tornado/iostream.py", line 356, in read_until_regex
        07    self._try_inline_read()
        08  File "/usr/local/lib/python3.9/dist-packages/tornado/iostream.py", line 842, in _try_inline_read
        09    pos = self._read_to_buffer_loop()
        10  File "/usr/local/lib/python3.9/dist-packages/tornado/iostream.py", line 755, in _read_to_buffer_loop
        11    if self._read_to_buffer() == 0:
        12  File "/usr/local/lib/python3.9/dist-packages/tornado/iostream.py", line 894, in _read_to_buffer
        13    raise StreamBufferFullError("Reached maximum read buffer size")
        14tornado.iostream.StreamBufferFullError: Reached maximum read buffer size

         

  29. 1
    评论于 三月 1, 2023 at 10:34:10 CST | 评论链接

    我用宝塔做的域名https+反向代理+nps到本地nas,静读天下的opds还是不行

    • 童燕群
      评论于 三月 1, 2023 at 12:37:56 CST | 评论链接

      这块就要看看消息卡在哪了。我这里之前是调通了的。

      • 1
        评论于 三月 1, 2023 at 13:35:23 CST | 评论链接

        电脑浏览器里能打开,手机上支持opds的其他软件打开需要登陆,静读打开是空白

      • 1
        评论于 三月 1, 2023 at 16:40:52 CST | 评论链接

        折腾一小天,放弃了,回归http -.-

  30. 匿名
    评论于 二月 27, 2023 at 07:11:00 CST | 评论链接

    导入页面删除图书时会同时删除import文件夹里的文件,但好像没放到回收站里,能给个地方设置吗?
    导入记录的页面有点多,我就都删掉了,但有部分是没导入成功的,删掉后就找不到了

    • 童燕群
      评论于 二月 27, 2023 at 09:38:13 CST | 评论链接

      确实,我自己也遇到这个问题了。后面我做一个弹框:是否只删除导入成功的书籍。

    • 童燕群
      评论于 二月 27, 2023 at 12:49:50 CST | 评论链接

      已经增加。删除时会弹框勾选需要删除源书籍的类别。

      • 匿名
        评论于 二月 28, 2023 at 20:32:49 CST | 评论链接

        谢谢,已更新

  31. 恶魔猎人
    评论于 二月 24, 2023 at 17:28:13 CST | 评论链接

    我使用的绿联的DX4600 NAS安装的docker服务,豆瓣使用eallion/douban-api-rs的镜像来提供服务,是不是要在docker-composer.yml里修改下配置才能生效?

    • 童燕群
      评论于 二月 24, 2023 at 20:11:30 CST | 评论链接

      是的,改一下地址就行,不过我没有用过composer文件,我是手动部署的两个独立的容器。ghcr国内访问不通。

      • 恶魔猎人
        评论于 二月 26, 2023 at 17:22:00 CST | 评论链接

        博主建站备案,是用的自己的私人服务器,还是阿里云等一些公共服务器?
        国家现在的政策,允许拥有公网IP的私人服务器备案吗?

        • 童燕群
          评论于 二月 26, 2023 at 17:32:07 CST | 评论链接

          是阿里云ecs。

  32. 1
    评论于 十二月 25, 2022 at 15:50:55 CST | 评论链接

    在线打开书籍报错

    1  File "/usr/local/lib/python3.9/dist-packages/tornado/iostream.py", line 356, in read_until_regex
    2    self._try_inline_read()
    3  File "/usr/local/lib/python3.9/dist-packages/tornado/iostream.py", line 842, in _try_inline_read
    4    pos = self._read_to_buffer_loop()
    5  File "/usr/local/lib/python3.9/dist-packages/tornado/iostream.py", line 755, in _read_to_buffer_loop
    6    if self._read_to_buffer() == 0:
    7  File "/usr/local/lib/python3.9/dist-packages/tornado/iostream.py", line 894, in _read_to_buffer
    8    raise StreamBufferFullError("Reached maximum read buffer size")
    9tornado.iostream.StreamBufferFullError: Reached maximum read buffer size

     

    • 童燕群
      评论于 十二月 26, 2022 at 11:47:02 CST | 评论链接

      我看tornado的源码,只有上传时检查max_buffer_size,调用_read_to_buffer,所以这个应该是上传文件时的报错,而不是下载。你再检查一下下载的日志呢?

  33. 小鱼
    评论于 十二月 15, 2022 at 13:44:11 CST | 评论链接

    奇异书屋 | 奇异书屋
    这个如何修改?每次看到这个都好烦

    • 童燕群
      评论于 十二月 16, 2022 at 10:04:54 CST | 评论链接

      系统设置里面,基本信息里面,第一项。

      • 匿名
        评论于 四月 9, 2023 at 22:15:44 CST | 评论链接

        不行啊。改了第一行只是改了talebook标题,不能修改浏览器标签上的奇异书屋

        • bailz1911
          评论于 五月 6, 2023 at 16:06:34 CST | 评论链接

          需要docker服务重启下即可

  34. 匿名
    评论于 十二月 3, 2022 at 04:47:56 CST | 评论链接

    请问下如何更新,我安装后是v2.0.0-89版本很多东西没有

    • 童燕群
      评论于 十二月 3, 2022 at 21:28:32 CST | 评论链接

      保留原data目录,删除container,重新用新镜像创contaner即可:
      docker run -d –name calibre \
      -p 127.0.0.1:12579:80 \
      -v /your/data/dir:/data \
      -E TZ=”Asia/Shanghai” \
      shentar/talebook:latest

  35. 评论于 十一月 1, 2022 at 17:40:29 CST | 评论链接

    手机无法正常阅读,一直缓冲

  36. 匿名
    评论于 十月 16, 2022 at 10:42:54 CST | 评论链接

    感谢分享,请问这个版本可以保存多版本多格式吗,原版本不能保存多版本多格式,有些书名扫描有错误说已存在就不能保存了

    • 评论于 十月 17, 2022 at 10:04:10 CST | 评论链接

      也不行的,同一本书多种格式,应该是原生的Calibre的能力。对于同一本书上传时报已经存在的问题,我一般的做法是,先把已经存在的书改名字,然后上传新的,上传完成后,再把两本书都改成同样的名字。

      • 匿名
        评论于 十月 18, 2022 at 21:06:30 CST | 评论链接

        不能多种格式有点烦,我先试试改名上传书,之前试过原版删除导入记录结果不行

        • 匿名
          评论于 十月 18, 2022 at 21:08:26 CST | 评论链接

          突然发现github上原版作者给我提的建议添加了feacture标签,期待后面的改动

        • 评论于 十月 18, 2022 at 21:17:52 CST | 评论链接

          改名只是最终能保存两本书。我觉得想要一本书两种格式那种,还是要用calibre桌面工具来导入。也不一定就能在web上面呈现,没分析过这个点。

          • 匿名
            评论于 十月 20, 2022 at 15:41:19 CST | 评论链接

            先把书保存进去再说,有书是上中下三本,只能保存一本就比较难受。
            我有一本书有epub和mobi两种格式的,不知道是怎么保存进去的,试过nas停止docker运行,本地复制到文件夹,结果说文件夹不存在,应该是复制进去有权限限制

  37. Panda
    评论于 九月 26, 2022 at 11:31:36 CST | 评论链接

    感谢楼主分享 20220926 亲测有效

  38. 匿名
    评论于 六月 23, 2022 at 10:13:42 CST | 评论链接

    还有一个,在用户管理界面可不可以增加一个添加账号功能

  39. 匿名
    评论于 六月 23, 2022 at 10:12:03 CST | 评论链接

    目前安装已经发现的问题:
    1.跟老版本一样,在imports文件夹下一次性放好多本书网址会直接无响应。(目前解决方案是在docker里新增了一个calibre,只用来自动添加书籍到library里)
    2.opds的问题,静读天下pro7.3-7.5版本打开会提示”org.apache.http.clientprotocolexception”,在librerareader里能正常使用。
    3.添加书籍过程中不会像calibre添加之后自动删除功能。

    • 童燕群
      评论于 六月 23, 2022 at 11:11:49 CST | 评论链接

      1、没办法解决,你这个做法就挺好的,建议两个docker不要同时工作,否则库会被弄坏。
      2、opds不稳定,看你这个报错是https的问题?
      3、在删除导入记录时自动删除书籍,上传的书籍也是成功后自动删除。
      4、没计划做这个,注册用户挺简单的。而且本身就不能公开访问,注册不是常操作。

      • 匿名
        评论于 六月 23, 2022 at 21:06:53 CST | 评论链接

        同样的地址,静读里就报错,librera里就正常使用,所以感觉更像是软件的问题。还有以后如果亚马逊退出中国,opds可以作为备选,关于opds界面可以有不同主题么?

        • 童燕群
          评论于 六月 24, 2022 at 23:58:27 CST | 评论链接

          OPDS只是给出一个索引,最终阅读时,还是下载书籍到本地的,因此OPDS应该做不了什么界面控制。所以跟你用网页浏览下载再导入到静读没有区别。我这里静读是没问题的。

          你可以发一下服务端的日志,或者直接发一下你的站点,我试一下。

          • 匿名
            评论于 十月 18, 2022 at 10:23:25 CST | 评论链接

            http://b.3ren.xyz:10086/opds/
            服务器日志在docker里找么

          • 评论于 十月 18, 2022 at 10:27:22 CST | 评论链接

            在docker的/data目录,如果你映射了这个目录,那么宿主机的目录里面能找到。

          • 匿名
            评论于 十月 19, 2022 at 09:07:30 CST | 评论链接

            有的,talerbook.log?

  40. i
    评论于 六月 14, 2022 at 22:30:22 CST | 评论链接

    比原版的好用,谢谢

评论

邮箱地址不会被泄露, 标记为 * 的项目必填。

8 - 2 = *



You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <img alt="" src="" class=""> <pre class=""> <q cite=""> <s> <strike> <strong>