Sphinx生成RSS feed

警告

经过一番尝试,我依然没有解决RSS feed的生成…

太花费时间了,然而现在时间和精力实在不够,准备过一段时间研读一下 sphinxcontrib-newsfeed ,看看能否解决或者fork出来修改修改…

问题

这是一个网友在GitHub上提的issue: 如何订阅? #21

这是一个很好的问题:

  • 一直以来我都是将 「Cloud Atlas」 作为个人 电子书+博客 来撰写的,先搭框架文档框架,然后不断更新丰富内容

  • 采用变通的方式来实现Blog的部分功能:

不过,和天然的Blog WordPress相比,有很多不足:

  • 讨论和原文是割裂的: 读者无法直接在关心的文章下面直接评论,很可能就失去了讨论的兴趣(看不到别人的激发灵感的问题)

  • 对于中国大陆读者,被防火墙屏蔽的GitHub是很多网友心中的痛,虽然有梯子,但是对很多人来说是一个麻烦

  • (本文问题)没有提供Blog常用的RSS Feed功能,这是很多因特网老用户(如果从Blog时代走过)心心念念的功能

对于我个人来说,我也每天使用 Feedly (已被墙)订阅一些重要的博客来获得互联网资讯。是的,从Google Reader年代过来的人都无比怀念那个没有墙的岁月…

那么网友的这个问题不就是我们依然坚持纯净的互联网资讯的需求么? 虽然现在互联网新用户都不知道RSS了…

可行的方案

Google了一下,我觉得思路是采用 Sphinx 的插件来实现 RSS feed 生成,有一些实现插件:

  • lsaffre/sphinxfeed ( 从已停止开发的 junkafarian/sphinxfeed Fork出来) 目前仍在活跃维护,是比较有希望的解决方案。不过,按照README安装并不成功

  • sphinxcontrib-newsfeed 从2013年开始支持Python 3,虽然2015年之后不再更新,但是由于Sphinx的API非常稳定,所以依然可以使用

sphinxcontrib-newsfeed (暂未成功)

备注

sphinxcontrib-newsfeed 文档不清晰,我没有理解也没有验证成功,这段废弃

sphinxcontrib-newsfeed 是一个简单的Blog扩展,为Sphinx增加了News或Announcements部分,功能包括:

  • 从Sphinx文档创建feed条目

  • 生成带有预告片段的条目列表

  • 将feed保存为一个RSS格式的文件

  • 支持通过Disqus发表评论

  • Python virtualenv 中通过 pip 安装:

    pip install sphinxcontrib-newsfeed
    
  • 修改 conf.py

    ...
    extensions.append('sphinxcontrib.newsfeed')
    ...
    disqus_shortname = '...'
    

我的实际配置:

conf.py 中添加 sphinxcontrib.newsfeed 插件配置
...
extensions = [
        'sphinx.ext.graphviz',
        'sphinxnotes.strike',
        'sphinxcontrib.newsfeed',
        'sphinxcontrib.youtube',
        'sphinxcontrib.video'
]

disqus_shortname = 'cloud-atlas'
...
  • 在需要输出 news feed 的文档下添加 feed-entry 例如,本文:

在需要输出 news feed 的文档下添加 feed-entry
.. feed-entry::
   :date: 2023-04-06

通过 ``sphinxcontrib-newsfeed`` 实现RSS feed

.. cut::

Specific changes since the last release

… 没有验证成功,待续

参考