Calibre 使用教程之抓取 RSS 制成电子书

“制作Kindle电子书”相关阅读

给这篇文章写一条留言

提示:带 * 标记的是必填项。您填写的邮箱地址将会被保密。首次留言将会在通过人工审核后显示。如果是提出问题,请务必提供尽可能多信息,这有助于他人更好地理解你所提出的问题。

小伙伴们写下了 66 条留言

  1. 你们好,这块我有几个问题想请问一下:第一个是我从网站上的源代码里找RSS订阅地址,没有找到本文提到的那行语句,请问这是什么原因,是不是所有的网站都会有RSS订阅地址;第二是在calibre的‘抓取新闻’中我看也有很多新闻源,那这些是不是下载后也可以推送到kindle上?感觉下载速度很慢,有没有解决办法;第三是我设置好了电子邮件推送到kindle,是不是它每次下载来只是保存在calibre的书库,要到kindle上看,还需要打开calibre,点里面的‘连接/共享’发送过去才行?另外,保持calibre一直运行,是不是就是不能关电脑了?谢谢。

    • 并非是每个网站都提供 RSS 供稿;Calibre 内置的新闻源大多可以抓取,但是大多需要翻墙;新闻下载成功后会存放在 Calibre 书库,同时通过你设置的邮箱推送到你的 Kindle 上;如果你想要定时抓取新闻,就需要确保 Calibre 一直运行且网络通畅。

  2. 还想请问下该怎么设置自动推送啊 自动下载我是搞好了的 然后推送服务器什么的也设置好了 但是我找了半天也没有自动推送的选项

  3. 抓取的新闻好像不能使用自定义字体 我看的日语新闻却使用的是简体中文的字体非常难受 有什么方法解决吗

  4. calibre抓取的新闻只能是mobi格式吗?如果不想在kindle上面看,想用ipad看怎么办呢?因为有的杂志图片很多的确实不适合kindle看。

    • Calibre 的界面版“抓取新闻”不支持输出为其它格式。这里提供三种变通的解决方法:

      1、去 App Store 下载 Kindle 应用,绑定亚马逊账号后,用邮箱把 MOBI 文件推送到应用中阅读。
      2、抓取新闻获得 MOBI 文件后,用 Calibre 将其重新转换成包括 EPUB 在内的其它你需要的格式。
      3、使用 Calibre 提供的命令行工具可将新闻直接输出为包括 EPUB 在内任一格式。具体可参考这里

    • 如果你是通过本文介绍的方法抓取新闻的,需要在抓取脚本中指定封面路径。

      具体方法为:在 Calibre 界面上找到“抓取新闻”按钮,点击它旁边的倒三角,在弹出的菜单中点击“添加自定义新闻来源”,选中你自定义的脚本并点击【编辑订阅清单】按钮,在脚本代码中添加如下属性定义(可以在已存在的属性 masthead_url 下一行添加):

      cover_url = '/path/to/cover.jpg'

      注意,其中的 /path/to/cover.jpg 要换成真实图片的绝对路径,如果你使用的是 Windows 路径需要加上盘符,如 D:\path\to\cover.jpg。当然你可以添加一个图片网址,如 http://example.com/path/to/cover.jpg

      • 非常感谢您的回复,还有一个问题,recipe 抓下来之后会制作成mobi7格式的mobi,有没有办法输出成mobi8格式,谢谢~!

        • 期刊样式的 MOBI 只支持 MOBI7,如果你不在乎期刊样式,可以将其转换成 MOBI8。

          具体方法为,将脚本代码保存为 .recipe 格式的文件并拖放到 Calibre 书库中,然后像转换普通电子书那样转换成你想要的格式。另一种方法是,使用 Calibre 的命令行工具 ebook-convert 转换 .recipe 文件,具体用法参考《Calibre 常用命令行工具详解之 ebook-convert》这篇文章。

          • 如果用ebook-convert的,被抓的网站需要登陆这里怎么处理?就像如下这一段脚本:

            class AdvancedUserRecipe1606032417(BasicNewsRecipe):
                title          = ''
                cover_url = '/config/Calibre/universal_cn_today.jpg'
                language = 'cn'
                oldest_article = 1
                max_articles_per_feed = 10
                auto_cleanup   = True
                needs_subscription = True
                def get_browser(self):
                    br = BasicNewsRecipe.get_browser(self)
                    br.open('https://xxxx.net/')
                    if self.username is not None and self.password is not None:
                        data = urlencode({'m': 'login', 'u': self.username, 'p': self.password, 'z': 'https://xxxx.net/'
                                                 })
                        br.open('https://xxx.net/login.php', data)
                    return br

            如果用GUI的话,会有一个用户名及密码输入框,抓取很正常,但如果改成命令行的话怎么写?非常感谢!

  5. 请问怎么设置抓取rss默认输出awz3格式?另外,怎么设置抓取的rss默认语言是英文?比如抓取一些双语文章时,Calibre默认输出的语言是中文,在kindle上无法设置bookerly等英文字体。

    • Calibre 界面上的“抓取新闻”功能没有太多可定制的地方,所以要用变通的方法。这里说两种可行方案,你可以根据自己的情况自行选择:

      方案一:将抓取脚本保存为 .recipe 文件,向脚本中添加一行代码 language = 'en',然后将此脚本拖放到 Calibre 书库,最后通过右键菜单转换,将输出格式选择为 AZW3 格式即可。

      方案二:将抓取脚本保存为 .recipe 文件,然后使用如下命令直接将抓取的新闻转换成 AZW3 格式:

      ebook-convert nytimes.recipe .azw3 --language=en

      * 关于 ebook-convert 命令的使用可参考《Calibre 常用命令行工具详解之 ebook-convert》这篇文章。

        • 如果你指的是 Calibre 内置的抓取新闻的 Recipe 脚本,可以通过两种方式获取脚本代码:一种是点击 Calibre 界面上的“抓取新闻”图标右侧的倒三角按钮,在弹出的菜单中点击“添加自定义新闻来源”,在弹出的窗口中点击 【自定义内置订阅清单】按钮,会弹出所有内置的新闻列表,双击选择你想要的新闻,即可显示该新闻的 Recipes 脚本代码;另一种是直接访问 Calibre 项目代码中的 Recipes 目录,所有内置的 Recipes 脚本都存放在这里。

            • 请问脚本是设置成下面这个样子嘛?为啥设置后抓取到的文章语言还是中文

              #!/usr/bin/env python2
              # vim:fileencoding=utf-8
              from __future__ import unicode_literals, division, absolute_import, print_function
              from calibre.web.feeds.news import BasicNewsRecipe
              
              class AdvancedUserRecipe1590488057(BasicNewsRecipe):
                  title = '\u7ebd\u7ea6\u65f6\u62a5\u53cc\u8bed'
                  language = 'en'
                  oldest_article = 7
                  max_articles_per_feed = 100
                  auto_cleanup  = True
              
                  feeds          = [
                      ('\u7ebd\u7ea6\u65f6\u62a5\u53cc\u8bed', 'https://feed43.com/newyorktimes.xml'),
                  ]
              • 使用这个脚本抓取的电子书已经将电子书的元数据设置成英文了,在 Kindle 中应该是可以调用英文字体了。

                另外我对你留言中的“抓取到的文章语言还是中文”这句话有些疑惑,我不知道我有没有理解你的意思。如果你指的是想要抓取到的内容本身是英文的,那应该清楚,把电子书的元数据设置成英文和抓取到的文章语言是否是英文是两回事,抓取到的文章是什么语言取决于 RSS 供稿本身提供的内容。

                • 我的意思是抓取的内容还是只能设置中文字体,不能设置英文字体。

      • 是这样的,每次打开calibre开始抓取新闻,然后新闻会被存储在当前书库下,但是我一般将抓取的新闻存放在固定书库,这就导致我需要频繁移动新闻到指定书库

        • 可能我对你的使用习惯不太了解,所以不太确定是否理解了你的描述。Calibre 只能设置一个书库,抓取新闻功能会把转换好的文件直接放入书库列表中。你所说的“固定书库”是指独立于 Calibre 书库之外的某种形式的存储方式吗?还是说使用了 Calibre 的“虚拟书库”功能把书库进行了分类,你想把抓取的文件自动归类?

  6. Calibre如何把抓取的文章输出为mobi? 亚马逊不支持epub格式转送了?
    尊敬的客户,

    您从2019年8月18日9:52 发出的如下文档无法发送到您指定的Kindle上:
    * Wo De Xin Wen Yuan [Zhou Ri , 18 8Yue 2019] – calibre.epub

    Kindle个人文档服务目前只能转换并发送以下类型的文档:
    Microsoft Word (.doc, .docx)
    RTF文件(.rtf)
    HTML(.htm, .html)
    TXT文件(.txt)
    Zip, x-zip压缩文件
    Mobi格式电子书

    JPEG (.jpg), GIF (.gif), Bitmap (.bmp) 和 PNG (.png) 格式的图片。
    Adobe PDF (.pdf)文档可维持原文件格式,发送至您的Kindle。

    Adobe PDF (.pdf)文档可转换为Kindle格式发送,目前处于试用阶段。

    如上述格式的文档未成功发送,请确认文档是否受到密码保护或被加密。特别说明,目前最新的Kindle支持读取受密码保护的PDF文档。

  7. 怎样删除calibre内置的自定义订阅清单?谢谢。

    发现淘宝上有2家卖KindleEar账号的。

    • 微信群反馈问题经重试已解决,不作回复。KindleEar 是开源软件,使用者遵循软件作者要求的 AGPLv3 许可即可。