监控RSS源中网页的变化
项目描述
diffengine 是一个用于监视RSS源以查看故事内容何时发生变化的实用程序。当发现新内容时,会在互联网档案馆保存快照,并为发送到社交媒体生成差异。希望它能帮助人们关注网络新闻的塑造方式。它还创建了一个随时间变化的变化数据库,可用于研究目的。
diffengine 受益于 NYTDiff 和 NewsDiffs 的启发,它们 几乎 做了我们想要的事情。《NYTdiff》能够创建可展示的差异图像并将它们推送到推文,但它是为特定于《纽约时报》API而设计的。NewsDiffs 为监视多个网站(华盛顿邮报、纽约时报、CNN、BBC等)的变化提供了一个全面的框架,但您需要是一名程序员才能为要监视的网站添加 解析模块。它也是一个完整的网站,需要一些承诺来安装和运行。
借助 feedparser,diffengine 采用不同的方法,通过与任何发布变化RSS源的网站进行合作。这包括许多新闻机构,但也包括个人博客和组织网站,它们发布定期的更新。此外,使用 readability 模块,diffengine 能够自动提取页面的主要内容,而无需进行特殊的解析来删除模板材料。与NYTDiff一样,diffengine 不再创建另一个供人们监视的网站,而是将更新推送到人们已经存在的社交媒体,同时构建一个可用于研究目的的本地差异数据库。
安装
- 安装 GeckoDriver
- 安装 Python 3
pip3 install --process-dependency-links diffengine
运行
为了运行 diffengine,您需要选择一个目录位置,其中可以存储 diffengine 配置、数据库和差异。例如,我在我的主目录中有一个目录,但您可以使用任何位置,只要您能写入它即可。
首次运行 diffengine 时,它会提示您输入要监控的 RSS 或 Atom feed URL,并将与 Twitter 进行认证。
% diffengine /home/ed/.diffengine
What RSS/Atom feed would you like to monitor? https://inkdroid.org/feed.xml
Would you like to set up tweeting edits? [Y/n] Y
Go to https://apps.twitter.com and create an application.
What is the consumer key? <TWITTER_APP_KEY>
What is the consumer secret? <TWITTER_APP_SECRET>
Log in to https://twitter.com as the user you want to tweet as and hit enter.
Visit https://api.twitter.com/oauth/authorize?oauth_token=NRW9BQAAAAAAyqBnAAXXYYlCL8g
What is your PIN: 8675309
Saved your configuration in /home/ed/.diffengine/config.yaml
Fetching initial set of entries.
Done!
之后,您只需将 diffengine 添加到您的 crontab 中,使其定期运行,或者如果您愿意,也可以根据您自己的间隔手动运行。以下是我的 crontab,每 30 分钟运行一次以查找新内容。
0,30 * * * * /usr/local/bin/diffengine /home/ed/.diffengine
您可以在任何时候检查您的配置文件,并根据需要添加/删除订阅源。这是存储在您选择的存储目录中的 config.yaml
文件,在我的例子中是 /home/ed/.diffengine/config.yaml
。
日志可以在存储目录中的 diffengine.log
文件中找到,例如 /home/ed/.diffengine/diffengine.log
。
示例
查看 Ryan Baumann 的 "diffengine" Twitter 列表,以获取已知 diffengine Twitter 账户的列表。
多个账户及订阅源实现示例
如果您要设置多个账户,并且可能需要为每个账户设置多个订阅源,为每个账户设置一个目录可能很有帮助。例如
- 多伦多太阳
/home/nruest/.torontosun
- 多伦多之星
/home/nruest/.torontostar
- 环球邮报
/home/nruest/.globemail
- Canadaland
/home/nruest/.canadaland
- CBC
/home/nruest/.cbc
然后您将为每个账户配置一个 cron 条目
0,15,30,45 * * * * /usr/bin/flock -xn /tmp/globemail.lock -c "/usr/local/bin/diffengine /home/nruest/.globemail"
0,15,30,45 * * * * /usr/bin/flock -xn /tmp/torontosun.lock -c "/usr/local/bin/diffengine /home/nruest/.torontosun"
0,15,30,45 * * * * /usr/bin/flock -xn /tmp/cbc.lock -c "/usr/local/bin/diffengine /home/nruest/.cbc"
0,15,30,45 * * * * /usr/bin/flock -xn /tmp/lapresse.lock -c "/usr/local/bin/diffengine /home/nruest/.lapresse"
0,15,30,45 * * * * /usr/bin/flock -xn /tmp/calgaryherald.lock -c "/usr/local/bin/diffengine /home/nruest/.calgaryherald"
如果一个账户有多个订阅源,您可以将 config.yml
配置如下
- name: The Globe and Mail - Report on Business
twitter:
access_token: ACCESS_TOKEN
access_token_secret: ACCESS_TOKEN_SECRET
url: http://www.theglobeandmail.com/report-on-business/?service=rss
- name: The Globe and Mail - Opinion
twitter:
access_token: ACCESS_TOKEN
access_token_secret: ACCESS_TOKEN_SECRET
url: http://www.theglobeandmail.com/opinion/?service=rss
- name: The Globe and Mail - News
twitter:
access_token: ACCESS_TOKEN
access_token_secret: ACCESS_TOKEN_SECRET
url: http://www.theglobeandmail.com/news/?service=rss
twitter:
consumer_key: CONSUMER_KEY
consumer_secret: CONSUMER_SECRET
开发
以下是如何使用 pipenv 开始对 diffengine 进行开发的步骤
% git clone https://github.com/docnow/diffengine
% cd diffengine
% pipenv install
% pytest
============================= test session starts ==============================
platform linux -- Python 3.5.2, pytest-3.0.5, py-1.4.32, pluggy-0.4.0
rootdir: /home/ed/Projects/diffengine, inifile:
collected 5 items
test_diffengine.py .....
=========================== 5 passed in 8.09 seconds ===========================
项目详情
diffengine-0.2.7.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4decdbbde85969ab75a147c020a7ee3440e9ec0796545a71ac8cb2348a54a492 |
|
MD5 | 55c0053f76095f9132dfa3472f39fb32 |
|
BLAKE2b-256 | a0da0afc809b781a12bfb0759becc02506e4a2c405b05d7ce7bcf4bc01c7b89f |