将饲料中的变化推送到其他印第安部落的管道
Pushl的Python项目详细描述
按下
一个简单的工具,可以解析内容提要,并在内容更改时发送适当的推送通知(webub、webnotice等)。
动机见http://publ.beesbuzz.biz/blog/113-Some-thoughts-on-WebMention。
功能
- 将为声明WebSub集线器的源发送WebSub通知
- 将为在这些源上发现或直接指定的条目发送WebNotify通知
- 可以在条目页上执行附加源的自动发现
- 可以对配置为RFC 5005 的atom提要执行完全回填
- 当配置为使用缓存目录时,可以检测条目删除和更新,以实现WebNotify更新和删除协议(以及节省一些时间和带宽)
站点设置
首先,您需要让atom(或rss)提要实现the WebSub protocol。简而言之,feed的顶级元素中应该有一个<link rel="hub" href="http://path/to/hub" />
。
有许多websub集线器可用;我使用Superfeedr。
对于WebMentions,使用各种微格式配置站点模板;默认情况下,pushl将按优先级降序使用以下标记作为顶级入口容器:
- 任何具有
class
的h-entry
- 标签
- 任何带有
class
的entry
有关如何配置站点模板的详细信息,请参见microformats h-entry specification。
安装
您可以使用pip
安装它,例如:
pip3 install pushl
但是,我建议将其安装在虚拟环境中,例如:
virtualenv3 $HOME/pushl $HOME/pushl/bin/pip3 install pushl
然后将指向$HOME/pushl/bin/pushl
的符号链接放到$path中的目录中,例如
ln -s $HOME/pushl/bin/pushl $HOME/bin/pushl
用法
基本
pushl -c $HOME/var/pushl-cache http://example.com/feed.xml
虽然您可以在不使用-c
参数的情况下运行它,但强烈建议您使用它,以便后续运行的垃圾邮件更少,并且能够检测到更改和删除。
从单个条目发送ping
如果您只想从条目页面发送webreferences而不处理整个提要,那么-e/--entry
标志表示以下url是页面或条目,而不是提要;例如
pushl -e http://example.com/some/page
将简单地发送该页面的web引用。
其他饲料发现
-r/--recurse
标志将发现在条目上声明的任何其他提要,并对其进行处理。如果您还希望在每个类别的源上发送websub通知,则此功能非常有用。例如,my site具有可从单个条目中发现的每个类别提要,因此pushl -r http://beesbuzz.biz/feed
将为所有具有最近更改的类别发送websub通知。
请注意,-r
和-e
一起使用也会导致进一步处理在条目页上声明的提要。在提要自动发现上下文中使用它是很有诱惑力的,例如
pushl -re http://example.com/blog/
这也将发送来自博客页面本身的webnot您想要做的事情。
旧料回填
如果feed实现了RFC 5005,那么-a
标志也会扫描过去的条目以查找webalbite。建议在进行初始回填时仅使用此标志,因为它可能会在较大的站点上花费很长时间(并且可能会使端点运算符对您非常恼火)。若要发送较旧条目的更新,最好使用-e
逐个执行。
双协议/多域网站
如果您的网站有多个可以访问它的url(例如http+https或多个域名),那么您通常只希望从规范url发送web引用。您可以在pushl中通过使用-s/--websub-only
标志将辅助feed设置为websub来配置此功能:
pushl -r https://example.com/feed -s http://example.com/feed http://alt-domain.example.com/feed
自动更新
pushl
可以从cron作业运行,不过最好使用flock -n
来防止多个实例相互践踏。更新站点的cron作业示例可能如下例如:
*/5 * * * * flock -n $HOME/.pushl-lock pushl -rc $HOME/.pushl-cache http://example.com/feed
我的设置
在我的设置中,我已经在我的网站的pipenv:
中安装了pushl
cd$HOME/beesbuzz.biz pipenv install pushl
并将此脚本创建为$HOME/beesbuzz.biz/pushl.sh
:
#!/bin/shcd$(dirname "$0")LOG=$(date +%Y%m%d.log)if["$1"=="quiet"];thenexec >> $LOG2>&1elseexec2>&1| tee -a $LOGfi date flock -n run.lock $HOME/.local/bin/pipenv run pushl -rvvc $HOME/var/pushl \ https://beesbuzz.biz/feed \ http://publ.beesbuzz.biz/feed \ https://tumblr.beesbuzz.biz/rss \ -s http://beesbuzz.biz/feed
然后我有一个cron工作:
*/5 * * * * $HOME/beesbuzz.biz/pushl.sh quiet
每5分钟运行一次。
我的网站也有一个git deployment hook,它的最后一步(在重新启动^ {CD22>})是运行^ {