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+

  1. pip install django-feed-reader
  2. feeds添加到INSTALLED_APPS
  3. settings.py中设置一些值,以便feed阅读器礼貌地向服务器宣布:
    • FEEDS_USER_AGENT设置为服务的名称和(可选版本),例如"ExampleFeeder/1.2"
    • FEEDS_SERVER设置为您服务的首选网址,以便提要主机可以在需要时找到您,例如https://example.com
  4. 设置一个定期刷新提要的机制(请参见下文)

基本型号

feed由一个Source对象表示,该对象(除其他外)有一个feed_url

Sources有包含内容的Posts

Posts可能有Enclosures,这是播客用来发送音频的。应用程序不下载附件,如果你想这样做,你将需要在你的项目中使用提供的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标志。}并将尽最大努力更新。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用户界面如何在JavaGUI中为按钮创建各种颜色?   使用MSCAPI的RSA密钥包装的java使用   java Spring数据Redis JedisConnectionException:意外的流结束   java饼图未显示预期输出   java hystrixCommand注释commandKey的用途是什么   windows java可以从cmd运行jar,但不能通过双击来运行   java在单击按钮时遍历XML节点   java试图使用日期(int,int,int)构造函数   带有Buildship 2子项目的java不作为项目依赖项链接   java jsonrpc4j:如何从服务器获取列表<SomeObject>?   用于Java应用程序的内存设置MaxDirectMemory和MaxHeapMemory   java如何从以下类型格式化日期   javayoutube。搜索列表搜索不返回任何内容   java My参数在方法中不起作用,因为泛型存在问题   java如何将Map<Key1Type,Val1Type>转换为Map<Key1Type,Val2Type>   JavaJUnit测试:测试用例的改进,测试数组列表的长度?   java如何在Android中解析带有属性值的xml数据?   使用Hibernate对枚举类型进行Java8bean验证