将RSS或ATOM源保存到SQLITE数据库
项目描述
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_feed
的normalize
参数是一个函数,将在每个源项上调用,这对于修复链接或进行其他工作很有用。
它的签名是normalize(table, entry, feed_details, client)
table
是SQLite表(《sqlite-utils.datasette.io/en/stable/python-api.html#accessing-tables》中提供)entry
是一个 feed 项目,作为一个字典feed_details
是一个包含顶级 feed 信息的字典,作为一个字典client
是httpx.Client
的一个实例,可以在规范化过程中使用它进行出站 HTTP 请求
该函数应返回一个表示要保存的行的字典。对于给定的行返回一个假值将导致跳过该行。
开发
测试使用 pytest。运行 pytest tests/
以运行测试套件。
项目详情
关闭
feed-to-sqlite-0.5.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f7ef6c4b3e95899b366d8ba3ba831f8fa5c0ee59b8cd81b2481800e6e5c4cefc |
|
MD5 | 618e83ca3c99b71e23a296f287a04f2a |
|
BLAKE2b-256 | dab8c41627e76dfa03bfd120874ad59003906a364b9e1f8f5727b49b8fa1168d |
关闭
feed_to_sqlite-0.5.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f32f50f88898866d41eb516ba90a4f072e21c6f1dbbbc40a6990620f07f76be7 |
|
MD5 | 1344f03208420a9058287a23a57fd165 |
|
BLAKE2b-256 | 747a4de9bbb4d4096e5f8986b2e2bc73ef96801e02a24f7db38a40bcbb5cf0c2 |