django的rss提要阅读库。
django-feed-reader的Python项目详细描述
django feed阅读器
这是一个简单的django模块,允许您订阅rss(和其他)提要。
这个应用程序没有用户界面,它只是读取和存储订阅源,供您根据需要使用。
这个应用程序建立在feedparser库之上,以提供feed管理、存储、调度等功能。
功能
- 使用rss、atom和jsonfeed提要。
- 大量解析feed以尝试并容纳简单的错误。
- 将尝试绕过对源的CloudFlare保护
- 支持存储模块(播客)发现
- 基于更新频率的自动送料计划
安装
django-feed-reader
是用python 3编写的,支持django 2.2+
pip install django-feed-reader
- 将
feeds
添加到INSTALLED_APPS
- 在
settings.py
中设置一些值,以便feed阅读器礼貌地向服务器宣布:- 将
FEEDS_USER_AGENT
设置为服务的名称和(可选版本),例如"ExampleFeeder/1.2"
- 将
FEEDS_SERVER
设置为您服务的首选网址,以便提要主机可以在需要时找到您,例如https://example.com
- 将
- 设置一个定期刷新提要的机制(请参见下文)
基本型号
feed由一个Source
对象表示,该对象(除其他外)有一个feed_url
。
Source
s有包含内容的Posts
。
Posts
可能有Enclosure
s,这是播客用来发送音频的。应用程序不下载附件,如果你想这样做,你将需要在你的项目中使用提供的URL。
对模型及其字段的完整描述(可能)即将到来。同时,为什么不读models.py
,这都是显而易见的东西。
刷新源
为了节省大量提要列表的资源,应用程序将根据提要更新的频率调整轮询提要的频率。它对一个feed进行轮询的最快速度是每小时一次。最慢的投票是每24小时一次。
在达到24小时限制之前,不会更新的订阅源的轮询速度会逐渐变慢。当feed改变时,它的轮询频率会增加。
你需要决定如何和何时进行民意测验。当轮询器运行时,它会检查当前到期的所有提要。最理想的运行频率是每5-10分钟一次。
使用cron进行轮询。
设置按所需计划调用python manage.py refreshfeeds
的作业。
请小心,以确保使用的是正确的目录和正确的python环境。
用芹菜投票
在应用程序中创建新的芹菜任务和计划(有关详细信息,请参阅芹菜文档)。你的tasks.py
应该是这样的:
fromceleryimportshared_taskfromfeeds.utilsimportupdate_feeds@shared_taskdefget_those_feeds():# the number is the max number of feeds to poll in one goupdate_feeds(30)
跟踪订阅服务器和订阅源的读/未读状态
应用程序不会(当前)跟踪订阅源中帖子的已读/未读状态。这需要在你的项目中根据你的需要来做。
应用程序假设每个提要只有一个订阅服务器,即项目本身。如果您的项目可以允许单个用户进行个人订阅,则可以通过在Source
对象上设置num_subs
,让应用程序根据每个订阅源知道它有多少订阅服务器。
然后,应用程序将通过用户代理将此报告给提要源以进行分析。
处理云耀斑
根据运行服务器的位置,可能会遇到CloudFlare的Web验证码问题。很多网站都设置了cloudflare,在rss提要上设置了默认的安全性,这可能会阻止服务器端rss阅读器。
这是一个巨大的痛苦,并影响到许多自托管的rss阅读器。说真的,谷歌吧。
django-feed-reader
将尽最大努力通过明智地使用公共代理服务器来获取这些提要,但这是随意的,您不能依赖这些提要的调度。
cloudflare阻止的提要将在其^{is_cloudflare
标志。}并将尽最大努力更新。