跳转到主要内容

监控RSS源的关键词并针对匹配结果采取行动。这是自由新闻基金会的一个特别项目。

项目描述

Track The News

trackthenews 是驱动 @FOIAfeed 的脚本,这是一个Twitter机器人,它监视新闻机构报道中是否融入了公共记录法,如信息自由法(FOIA),并发布匹配文章的链接和摘录。底层软件可以跟踪任何关键词的任何RSS源集合。

如果您想运行自己的trackthenews实例,您可以下载并安装该软件包,并运行其内置配置过程。它可以通过pip安装

我们目前针对Python 3.9进行测试,尽管它可能与其他版本兼容。

pip3 install trackthenews

或者通过克隆GitHub仓库并运行setup.py

python3 setup.py install

安装完成后,您可以在相应的目录中运行以下命令来创建配置

trackthenews --config

默认情况下,脚本将所有配置文件放在当前工作目录中的新ttnconfig文件夹中,但您也可以指定一个目录供其使用。

python3 trackthenews --config ~/foo/bar/path

此配置过程将创建必要的文件,并引导您设置匹配故事的Twitter机器人。配置完成后,您需要使用文本编辑器将matchwords和RSS源添加到相应的文件中。

示例RSS源和匹配词文件可在项目的GitHub仓库中找到。RSS源文件是对应每个源的对象的JSON数组。每个对象都需要一个url字段,并且也应该有一个outlet字段。

接下来两个字段是可选的:如果您知道源使用重定向URL,可以将redirectLinks设置为true,脚本将尝试跟踪这些重定向以存储和推文规范URL;如果源使用需要查询字符串或哈希字符串来正确显示的URL——基本上,如果内容依赖于?#后的URL栏中的文本——您可以设置delicateURLstrue,脚本将保留URL不变。

一切设置完成后,您可以不使用--config标志运行程序以检查匹配的文章。

trackthenews

如果您指定了自定义安装目录,或者您是从其他目录(例如cron作业)运行它,则需要指定配置文件安装的目录。

trackthenews ~/foo/bar/path

如新帖子的背景颜色、字体和用户代理等设置都位于指定配置目录中的config.yaml中。

工作原理

脚本的大部分都致力于Article类。

  • Article是根据输入创建的。目前这些输入是RSS源,存储在rssfeeds.json中,但在未来的版本中,其他输入可能包括直接URL、新闻API、Twitter源或抓取的页面。
  • 一系列的Article方法将抓取并隔离每篇文章的内容(目前清理是通过Python的Readability端口完成的,但未来的版本可能会包含一些针对特定网站的解析),检查是否适合发布,然后准备推文图像。
  • 最后,Article自己进行推文。

所有文章都记录在sqlite数据库中。

高级功能:黑名单

在某些情况下,您可能希望抑制文章的发布,即使它们可能符合条件。您可以通过编写两个新函数check_articlecheck_paragraph并在配置目录中创建名为blocklist.py的文件来实现这一点。

  • check_article接受一个Article(因此可以访问其outlettitleurl),并且应该为任何应该完全跳过的文章返回True
  • check_paragraph接受一个Article和一个单个匹配段落,并且应该为任何应该跳过的段落返回True(如果其他段落匹配,文章仍然会发布,但不包括跳过的段落)。

开发

快速入门

poetry env use 3.9  # Necessary if you have a different default python version
poetry install
poetry run trackthenews sample_project
# Follow the setup script instructions
cat sample_project/matchlist-sample.txt > sample_project/matchlist.txt
cat sample_project/rssfeeds-sample.json > sample_project/rssfeeds.json
poetry run trackthenews sample_project

详细说明

要开发trackthenews,克隆仓库并使用poetry安装包,并运行CLI工具

# Ensure you're using Python 3.9
poetry env use 3.9
# This will create a virtual environment and install trackthenews and its dependencies
poetry install --with=dev
# This will run the setup script
poetry run trackthenews sample_project

首次运行时,这将带您通过交互式设置过程。遵循说明。您需要一个带有应用程序密钥的Twitter账户或Mastodon账户。

设置过程完成后,您的机器人配置将位于sample_project目录中。填写matchlist.txtmatchlist_case_sensitive.txtrssfeeds.json文件或从提供的示例中复制配置。

cat sample_project/matchlist-sample.txt > sample_project/matchlist.txt
cat sample_project/rssfeeds-sample.json > sample_project/rssfeeds.json

matchlist_case_sensitive.txt 是可选的,我们不提供示例。

现在运行机器人

poetry run trackthenews sample_project

代码格式检查工具

我们检查所有代码符合 blackflake8isort。要本地运行这些检查

poetry run black --check .  # To automatically fix issues, exclude --check flag
poetry run flake8
poetry run isort --check-only --diff .  # To automatically fix issues, exclude --check-only and --diff flag

我们还提供以下 makefile 快捷方式来运行这些命令

make black
make flake8
make isort
make black-fix  # Automatically fix issues
make isort-fix  # Automatically fix issues
make all        # Run all three checks (check only, no fixes)

许可证

MIT。

项目详情


下载文件

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

源代码分发

trackthenews-0.3.tar.gz (285.1 kB 查看哈希值)

上传时间 源代码

构建分发

trackthenews-0.3-py3-none-any.whl (282.5 kB 查看哈希值)

上传时间 Python 3

支持者