监控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栏中的文本——您可以设置delicateURLs
为true
,脚本将保留URL不变。
一切设置完成后,您可以不使用--config
标志运行程序以检查匹配的文章。
trackthenews
如果您指定了自定义安装目录,或者您是从其他目录(例如cron
作业)运行它,则需要指定配置文件安装的目录。
trackthenews ~/foo/bar/path
如新帖子的背景颜色、字体和用户代理等设置都位于指定配置目录中的config.yaml
中。
工作原理
脚本的大部分都致力于Article
类。
Article
是根据输入创建的。目前这些输入是RSS源,存储在rssfeeds.json
中,但在未来的版本中,其他输入可能包括直接URL、新闻API、Twitter源或抓取的页面。- 一系列的
Article
方法将抓取并隔离每篇文章的内容(目前清理是通过Python的Readability端口完成的,但未来的版本可能会包含一些针对特定网站的解析),检查是否适合发布,然后准备推文图像。 - 最后,
Article
自己进行推文。
所有文章都记录在sqlite数据库中。
高级功能:黑名单
在某些情况下,您可能希望抑制文章的发布,即使它们可能符合条件。您可以通过编写两个新函数check_article
和check_paragraph
并在配置目录中创建名为blocklist.py
的文件来实现这一点。
check_article
接受一个Article(因此可以访问其outlet
、title
和url
),并且应该为任何应该完全跳过的文章返回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.txt
、matchlist_case_sensitive.txt
和rssfeeds.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
代码格式检查工具
我们检查所有代码符合 black, flake8 和 isort。要本地运行这些检查
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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 55c5411524a25b45f47d59485537551696978c7d7e5e9e77c1ca1ca95ab7662a |
|
MD5 | c8cc1d4b6970eeb405a12da8c91ddbb5 |
|
BLAKE2b-256 | 5de4ca8c4a420e8301b206268a1097455848b7153c580750d049f662233778e1 |
trackthenews-0.3-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4364a3bdd1d13720cdc0d522f89ee721915d48cd023961740284fb804f84905f |
|
MD5 | 2c26d4f4ee730eb294e3a417a904cdb9 |
|
BLAKE2b-256 | ea02843bad0384bf73e4845dd135e73de35ad3e99994c022d55fb06de2eb8942 |