Datasette 插件,添加 .atom 输出格式
项目描述
datasette-atom
Datasette 插件,支持使用 SQL 查询结果生成 Atom 联播。
安装
将此插件安装在与 Datasette 相同的环境中,以启用 .atom
输出扩展。
$ pip install datasette-atom
用法
要创建 Atom 联播,需要定义一个自定义 SQL 查询,该查询返回所需的一组列
atom_id
- 每行的唯一 ID。 这篇文章 提供了有关创建这些 ID 方法的建议。atom_title
- 该行的标题。atom_updated
- 代表条目最后一次以重要方式修改的 RFC 3339 时间戳。这通常是行创建的时间。
以下列是可选的
atom_content
- 应在联播中显示的内容。这将被视为普通字符串,因此在显示时任何嵌入的 HTML 标签都将被转义。atom_content_html
- 应在联播中显示的内容。这将被视为 HTML 字符串,并使用 Bleach 进行清理,以确保在作为<content type="html">
Atom 元素返回之前没有恶意代码。如果两者都提供,则将使用此内容替换atom_content
。atom_link
- 应用作联播条目链接的 URL。atom_author_name
- 条目的作者姓名。如果您提供此信息,还可以提供atom_author_uri
和atom_author_email
以及作者的 URL 和电子邮件地址。
返回这些列的查询可以通过添加 .atom
扩展返回为 Atom 联播。
示例
以下是一个示例SQL查询,用于生成关于 www.niche-museums.com 上的新条目的Atom订阅源。
select
'tag:niche-museums.com,' || substr(created, 0, 11) || ':' || id as atom_id,
name as atom_title,
created as atom_updated,
'https://www.niche-museums.com/browse/museums/' || id as atom_link,
coalesce(
'<img src="' || photo_url || '?w=800&h=400&fit=crop&auto=compress">',
''
) || '<p>' || description || '</p>' as atom_content_html
from
museums
order by
created desc
limit
15
您可以通过将此查询粘贴到此处来尝试它 - 然后点击 .atom
链接以将其作为Atom订阅源查看。
使用预定义查询
Datasette的预定义查询机制是一种配置订阅源的有用方式。如果一个预定义查询定义了一个title
,则该标题将被用作Atom订阅源标题。
以下是一个使用metadata.yaml
文件定义的示例
databases:
browse:
queries:
feed:
title: Niche Museums
sql: |-
select
'tag:niche-museums.com,' || substr(created, 0, 11) || ':' || id as atom_id,
name as atom_title,
created as atom_updated,
'https://www.niche-museums.com/browse/museums/' || id as atom_link,
coalesce(
'<img src="' || photo_url || '?w=800&h=400&fit=crop&auto=compress">',
''
) || '<p>' || description || '</p>' as atom_content_html
from
museums
order by
created desc
limit
15
禁用HTML过滤
Bleach用于atom_content_html
列的HTML允许列表可以在datasette_atom/init.py文件底部的clean(html)
函数中找到。
您可以为使用预定义查询生成的Atom订阅源完全禁用Bleach。只有在您确定该值中不会包含任何用户提供的HTML时,才应执行此操作。
以下是在metadata.json
中这样做的方法
{
"plugins": {
"datasette-atom": {
"allow_unsafe_html_in_canned_queries": true
}
}
}
将此设置为true
将禁用所有数据库中所有预定义查询的Bleach过滤。
您可以仅针对特定预定义查询列表禁用Bleach过滤,如下所示
{
"plugins": {
"datasette-atom": {
"allow_unsafe_html_in_canned_queries": {
"museums": ["latest", "moderation"]
}
}
}
}
这将仅禁用在museums.db
数据库中名为latest
和moderation
的预定义查询的Bleach过滤。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
datasette-atom-0.9.tar.gz (10.3 kB 查看哈希)
构建分布
datasette_atom-0.9-py3-none-any.whl (9.1 kB 查看哈希)