跳转到主要内容

Datasette 插件,添加 .atom 输出格式

项目描述

datasette-atom

PyPI Changelog Tests License

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_uriatom_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&amp;h=400&amp;fit=crop&amp;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&amp;h=400&amp;fit=crop&amp;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数据库中名为latestmoderation的预定义查询的Bleach过滤。

项目详情


下载文件

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

源分布

datasette-atom-0.9.tar.gz (10.3 kB 查看哈希)

上传时间

构建分布

datasette_atom-0.9-py3-none-any.whl (9.1 kB 查看哈希)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面