将饲料中的变化推送到其他印第安部落的管道

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将按优先级降序使用以下标记作为顶级入口容器:

  • 任何具有classh-entry
  • 标签
  • 任何带有classentry

有关如何配置站点模板的详细信息,请参见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>})是运行^ {},如果最大延迟5分钟的速度不够快。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java三角测距   java Spring异步任务返回未来   java如何显示数据库中的下一条记录   java这些读取用户输入的方法有什么不同?   java Spring+Spring安全请求只接受contenttype xwwwformurlencoded   checkName()和将用户输入存储到ArrayList和boolean[]的java问题   java如何使用JPA和Facade?   java Neo4j类型不匹配   java如何依赖Maven的系统包?   通过FileChooser保存pdf格式会提示在java中出现第二个对话框   java如何将通量链接到另一个通量/单声道并应用另一个背压?   java如何修复安卓 studio中的权限错误?   尝试清除JavaFX ObservableMap时出现java ConcurrentException   java编辑文本。GetText,返回关于null引用的异常,但已声明该异常   mysql组织。乔达。时间LocalDate在Redhat(Linux)java上显示少一天   在java中通过序列化获取多个对象   有人有java注释“java.lang.Synthetic”的背景吗?