跳转到主要内容

将RSS或ATOM源保存到SQLITE数据库

项目描述

Build Status Tests PyPI License

feed-to-sqlite

下载RSS或Atom源并将其保存到SQLite数据库。此程序旨在与datasette配合使用。

安装

pip install feed-to-sqlite

CLI用法

让我们获取我在NewsBlur上分享的项目我的instapaper收藏的ATOM源,并为每个源保存到一个自己的表中。

feed-to-sqlite feeds.db http://chrisamico.newsblur.com/social/rss/35501/chrisamico https://www.instapaper.com/starred/rss/13475/qUh7yaOUGOSQeANThMyxXdYnho

这将使用名为feeds.db的SQLite数据库,如果需要则创建它。默认情况下,每个源都对应一个自己的表,表名基于源标题的slugified版本。

要将多个源的条目加载到一个公共(或已存在的)表中,请传递一个--table参数

feed-to-sqlite feeds.db --table links <url> <url>

这将把所有条目放入名为links的表中。

每个源还会在包含每个源顶级元数据的feeds表中创建一个条目。每个条目都将有一个外键指向原始源。如果将多个源合并到共享表中,这非常有用。

Python API

一个名为ingest_feed的函数完成了大部分工作。以下代码将创建一个名为feeds.db的数据库,并将我的NewsBlur共享项目下载到一个名为links的新表中。

from feed_to_sqlite import ingest_feed

url = "http://chrisamico.newsblur.com/social/rss/35501/chrisamico"

ingest_feed("feeds.db", url=url, table_name="links")

数据导入时的数据转换

在Python中直接工作的时候,可以在将行保存到数据库之前传递一个函数来转换行。

ingest_feednormalize参数是一个函数,将在每个源项上调用,这对于修复链接或进行其他工作很有用。

它的签名是normalize(table, entry, feed_details, client)

  • table是SQLite表(《sqlite-utils.datasette.io/en/stable/python-api.html#accessing-tables》中提供)
  • entry 是一个 feed 项目,作为一个字典
  • feed_details 是一个包含顶级 feed 信息的字典,作为一个字典
  • clienthttpx.Client 的一个实例,可以在规范化过程中使用它进行出站 HTTP 请求

该函数应返回一个表示要保存的行的字典。对于给定的行返回一个假值将导致跳过该行。

开发

测试使用 pytest。运行 pytest tests/ 以运行测试套件。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

feed-to-sqlite-0.5.1.tar.gz (4.6 kB 查看哈希值)

上传时间

构建分布

feed_to_sqlite-0.5.1-py3-none-any.whl (9.2 kB 查看哈希值)

上传时间 Python 3

由以下支持