电子书籍管理软件 – calibre

calibre是一个免费的跨平台电子书籍管理软件,可以完成对各种格式的电子书籍的管理和格式转换。尤其对于拥有手机/iPad等电子阅读器或E Ink设备的同学来说,这个软件尤其具有价值。如果把电子书想象成MP3音乐的话,calibre的功能可以类比于iTunes。它还可以把网络上的新闻或RSS下载转换成电子书格式,同步到相关的阅读设备中,这是一个非常实用的功能。

calibre可以从Google Books或Amazon等网站下载书籍的元数据,包括书籍的名称、作者、出版社、封面或者读者评价等信息。对中文图书而言,豆瓣上的数据应该是一个不错的书籍元数据来源,所以我就给它加上了这个功能。

今天发布的0.7.7版本中正式具有了从豆瓣下载书籍元数据的功能,可以从“首选项”->“插件”->“元数据下载插件”中启用它。由于考虑到这个功能只对中国用户比较有价值,所以这个插件默认是被禁用的。

本来还实现了从豆瓣下载书籍封面的功能,但calibre的作者不喜欢我的实现方法,所以还在进一步讨论合适的实现方法。需要尝鲜的朋友,可以参考我在Launchpad上的calibre-experimental代码树中的版本号为5550-5553的代码改动。

对这个插件有任何建议或功能改进需求,可以在此留言或去calibre的Trac上提交一个Ticket。

电子书籍管理软件 – calibre》上有45条评论

  1. @楼上
    最新版0.7.21版本的calibre已可以直接支持豆瓣的元数据和图书封面下载。
    这两个插件在非中文界面下默认禁用,可以手工启用。在中文界面下会自动启用。

  2. 我刚刚下载了0.7.23,在Windows 7 中文旗舰版 64位下使用。

    发现即使已经把“将所有非英文字符转换为英文对应字符”选项不打勾,中文文件名还是会变成拼音!反复试过都是一样。

    不晓得你是否也碰到这个问题?

  3. @flyisland
    我以前也发现过一样的问题,那时没有分析过原因,后来没有再在意这个问题。
    回头有空我来看看代码,看什么问题引起的。
    您也可以直接去calibre的网站提交Bug Ticket。

  4. @Fanxi, 已经在官网上提交ticket,但kovidgoyal说不是bug,因为“The filenames in the calibre library will always be ASCII. ”(http://bugs.calibre-ebook.com/ticket/7174)。

    真是无语,不晓得非英语国家有没有人用这个软件来管理电子书,实在不能接受用文件名“拼音”。

  5. 请问calibre的豆瓣插件具体应该怎么用?插件已经启用了,但是在元数据搜索时,怎么选择使用豆瓣的元数据?

  6. @flyisland
    我自己又试了一下,在书库下文件名永远是用拼音存的,但在用“保存到磁盘”功能时,会按你设定的模式来生成实际的文件名,这时如果选了“将所有非英文字符转换为英文对应字符”,就会用汉字来作为文件名,所以可以用“保存到磁盘”来导出你书库中的书,而不要直接从里面把文件挎贝出来。

    @Mingqing
    启用了以后在元数据搜索时就会包含豆瓣的上搜到的信息,它们会与其它元数据下载插件的搜索结果合并在一起一同显示,选择你觉得最合适的结果就可以了。从搜索结果中无法获知这个结果来自哪个元数据下载插件。
    如果你强调非豆瓣的数据不要,那就只能从选项中把别的元数据下载插件全部禁用掉,只留豆瓣的那个来使用。

  7. @fanxi,
    是的,我考虑过你说的方式,只不过我更想用”sending to device”功能。不过已经在论坛得到作者的答复,他没有打算让文件名支持non-ascii在这方面做什么更改。

  8. @flyisland
    从技术上来说,他的选择也没什么错。因为确实大部分设备是用FAT32文件系统的,这样的话,文件名存多国文字是不合理的。同时,由于大部分阅读器设备在显示书籍目录时,应该是使用书籍文件中的元信息,而不是文件名,所以文件名用英文字母并不会影响到使用体验。calibre从设计上来说,希望是做成一站式的管理工具,原则上用户不需要自己去动那些物理文件,也就不用关心文件名是什么。
    不知道你强烈要求文件名以原始中文保存的具体原因是什么?看看有没有什么合理的解决方法,比如写个插件之类的。不过如果没有强烈的理由,可以这样行为是没有机会进入官方的代码中的。

  9. @flyisland
    我刚才在hi pda上看到你们对这个问题的讨论,不过我的帐号还没有激活,不能回贴,所以在这里写下回复。
    calibre早期就是专门为SONY PSR-500设计的软件,后来才转变成一个通用的软件,所以很多设计都跟PSR-500有关,由于500不支持非ASCII的文件名,那作者就把它们转换一下,对于大部分电子书而言,文件名并不是一个重要的东东,所以这样的设计就一直沿用下来了。

  10. 我使用ebook管理软件calibre0.7.57版本,在编辑书籍信息时总是提示无法找到元信息(我只输入ISBN)。特向您请教。

  11. @fbwang
    我在0.7.59版本上没有重现你的问题。请你确认一下在选项中启用了哪几个元信息获取插件。
    同时可以提供我你无法获取的ISBN号以便我测试,谢谢。
    另外,不久后会发布的0.8.x系列的calibre中会对元信息获取插件做完全的重写,如果实在没办法解决问题,也可以期待一下新的版本。

  12. 刚刚更新了calibre0.8,但是无法从douban下载元信息了,有0.8可用的douban元信息获取插件吗?

  13. @Fly
    calibre 0.8.1中已经重新包含了重写以后的豆瓣元信息插件,请试用。如有问题欢迎反馈,谢谢!

  14. 不知道在这里说合不合适,launchpad的注册服务太难用,总注册不上,往见谅
    今天在用calibre0.8.1 for win的Download metadata 的时候总报错,不知道是什么问题,特此请教
    ****************************** Douban Books ******************************
    Request extra headers: [(‘User-agent’, ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1′)]
    Found 0 results
    Downloading from Douban Books took 0.610000133514
    Failed to make identify query: u’http://api.douban.com/book/subjects?q=%E7%BE%8E%E4%B8%BD%E7%9A%84%E5%87%B6%E5%99%A8+%E4%B8%9C%E9%87%8E%E5%9C%AD%E5%90%BE?apikey=0bd1672394eb1ebf2374356abec15c3d’
    Traceback (most recent call last):
    File “site-packagescalibreebooksmetadatasourcesdouban.py”, line 302, in identify
    File “site-packagesmechanize-0.2.4-py2.7.eggmechanize\_mechanize.py”, line 199, in open_novisit
    File “site-packagesmechanize-0.2.4-py2.7.eggmechanize\_mechanize.py”, line 255, in _mech_open
    httperror_seek_wrapper: HTTP Error 403: Forbidden
    在ie里面直接访问
    http://api.douban.com/book/subjects?q=%E7%BE%8E%E4%B8%BD%E7%9A%84%E5%87%B6%E5%99%A8+%E4%B8%9C%E9%87%8E%E5%9C%AD%E5%90%BE?apikey=0bd1672394eb1ebf2374356abec15c3d
    豆瓣会说
    You API access rate limit has been exceeded. Contact webmaster@douban.com if you want higher limit. Check http://www.douban.com/service/apikey/ for more detail.

  15. @benben_wab
    从出错提示看,是因为豆瓣API访问次数超限,豆瓣允许在1分钟内发起40次查询请求,如果限过这个限制就会出现你说的问题。
    从你提供的信息中,我发现是我程序有问题,没有正确传递API Key,导致允许的访问次数变成了1分钟10次,所以很容易就触发了限制条件。
    我已经把问题修复,预计会在0.8.3或0.8.4版本中包含这个问题的修复。
    感谢您的问题报告。

  16. 0.8.3中已经包含了一些修复,但我又发现有别的类似bug存在,所以仍然可能出现API访问次数超限的问题。我已经修复了,预计会包含在0.8.4中。

  17. 版主:一个问题困扰,中英文网站都没找到答案,不知你能否有办法?

    具体就是用txt转换成kindle字典。
    用calibre转成mobi成功,也能在kindle3打开阅读。
    然后设置成Primary Dictionary,但见不到这个文件名。

    其他字典看来都是mobi文件的,为什么呢?

  18. @楼上
    不知道。我没有Kindle,不知道它是怎么处理字典文件的,也许这是一种特殊的mobi文件吧。
    你可以试试去hi-pda论坛问问看有没有人知道。

  19. calibre的豆瓣插件非常好,但是豆瓣中的元数据信息很明显需要isbn,对于现在网络上大量流传的网络小说,绝大部分都是没有isbn的,因此希望能有一个对于中文电子书元信息的补充插件。
    下面是我找到的两个比较好的网站,yankanshu.com和verydu.net,这两个网站的搜索模式都差不多,我很希望能获得相关的插件,可惜我不会编写插件,你能不能开发一个新的插件。

    • 豆瓣插件不要求有ISBN,有图书名或作者名就可以模糊匹配,虽然结果不是完全理想(这跟豆瓣自身提供的搜索功能的效果一致),但是还是可以用的。

      您提供的第一个网站没有API,从网页做搜索实现起来比较复杂,而且效果也不好。第二个网站打不开。所以可能并不适合用这两个网站来做相关的元信息下载插件。

      • 第二个和第一个差不多,才注意到必须加上www才能访问(www.verydu.net)。如果第一个无法抓取,第二个估计也一样。
        我看网上有小说采集站,他们都是从别的站点直接采集,删除不需要的信息,同样能得到元数据。js+dom估计就能做到吧,可惜我也就只是看到过,自己不会做。
        http://www.yankanshu.com/search.php?keywords=%s&type=0
        http://www.verydu.net/search.php?keyword=%s&type=bookname
        (%s代替关键词),上面使用chrome抓取到的两个站点的搜索引擎。希望能有所启发。

      • 豆瓣搜索是不需要isbn,但是豆瓣收录的书籍全都有isbn,没有isbn,无法添加书籍信息,因此对于网络书籍,很多用豆瓣几乎搜不到匹配信息。

      • 有个作者的信息也可以了,对于网络小说,一般除了标题,作者,简介,貌似其他信息很少有人会看,评分,标签这类元信息除非有数据提供的,否则也没办法。
        对了,你做好的插件能不能提供以下,我不会做这个插件,手上收集了一大堆书籍,就是想整理一下,对于我现在来说,就是想要作者这一个元信息罢了。
        给个最基本的就行了,剩下的,自己纠结。
        yjc980121@163.com

        • 上面给您的回复中已经提供了参考代码,可以参考一下。无非就是创建一个搜索请求和解析返回结果而已,并不是很难。由于这两个网站不是返回标准 XML而是返回HTML,也许你可以用Beautiful Soup之类的库来帮助你解析页面的内容。

          但我个人最近没有足够的时间和精力来完成这个插件的编写。非常抱歉。

  20. 用calibre修改元数据(比如仅仅修改作者)以后,为何点击「保存到磁盘」,不能正确显示……

    是不是只能点击「转换书籍」,重新生成一遍,才能生效?

    可是这样话,效率太低了。

    • 默认情况下,首选项->保存书籍到磁盘->更新保存版本的元数据是勾上的,这种情况下,用“保存到磁盘”后,新存下来的书的元信息是会更新到与书库中一致的。如果把这个选项禁用,则保存下来的书不会更新元信息,如果要更新元信息就只能重新做一次格式转换了。

  21. 博主你好,我想问两个问题。calibre从豆瓣下载元数据能不能把calibre里的“series”和豆瓣的“丛书”对应起来呢?能不能实现从中国亚马逊下载元数据呢?谢谢!

    • 我试了下,应该是可以的,我有空实现一下试试。
      从z.cn下载元数理论上也是可以的,不过实现起来有点麻烦,而且我觉得z.cn的数据质量也只是一般般,最近我应该没时间和兴趣去做,抱歉。

  22. 您开发的豆瓣插件非常好用,我用了好多年了,用来管理我的在calibre中电子图书的元数据,最近三天开始,这个插件无法下载数据了,可能是豆瓣更改API,麻烦能否更新一下插件

    • 目前看是豆瓣关闭了API或者是封禁了我用的API Key,暂时没有办法。我试试联系一下豆瓣看看。

      • 今早也是不断尝试,发现出现了这个问题。感谢作者回复,终于找到大概是什么问题了!我还以为是我更新出错了……

      • 新版本的API可以用,但不知道怎么改这个插件https://api.douban.com/v2/book

      • 实测下面这个apikey还可以用,不过只支持v2版本的接口,博主有空麻烦更新一下,谢谢!https://api.douban.com/v2/book/isbn/9787214075710?apikey=0df993c66c0c636e29ecbb5344252a4a

        • 从V1的API改成V2还是有一些工作量。另外,盗用别人的API Key也不是一个长久之计。

          按社区正在讨论的,可能改成直接抓取Web页面会是一个更稳固的做法,但是也涉及很多的代码重写。

          抱歉,最近一段时间我暂时还没有精力投入相关的开发。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据