克罗恩的大脑不见了。有状态的、基于时间的脚本。
scriptter的Python项目详细描述
编剧是你的亲信。你写一个脚本(使用一个特殊的 YAML格式),指定要运行的命令序列和可读的 每组命令之间的延迟。然后,对脚本运行scriptter 每分钟(或尽可能频繁)。编剧会确保 命令按指定的顺序和定时运行。
用途:
我认为Scripter是一种编写Twitter机器人的方法,特别是Twitter 互相交谈的机器人。但Twitter没有限制: 在shell中可以做的任何事情,在scriptter中都可以。
示例:
这里有一个简单的脚本来运行两个twitter之间的日常对话 帐户,使用t Twitter CLI:
defaults: delay: 1min activate: t set active update: t update cmd: - '{activate} {as}' - '{update} "{say}"' timezone: US/Eastern --- as: Costello say: "@Abbott I'm not... stay out of the infield! I want to know what's the guy's name in left field?" --- as: Abbott say: "@Costello No, What is on second." --- as: Costello say: "@Abbott I'm not asking you who's on second." --- as: Abbott say: "@Costello Who's on first!" --- as: Costello say: "@Abbott I don't know." --- cmd: - '{activate} Abbott' - '{update} "@Costello Third base!"' - '{activate} Costello' - '{update} "@Abbott Third base!"' --- delay: 10min as: Costello say: '@Abbott Look, you gotta outfield?'
经典,我知道。下面是发生的事情:每当脚本运行时 记住它在哪里停止了,下一个项目应该在什么时候运行。什么时候? 到时候,它会查看cmd成员。如果成员不在上 这个项目看起来是默认的。cmd可以是单个字符串,也可以是列表 弦。命令字符串可以是包含formatting instructions的模板。
模板化
命令模板的上下文来自项本身,由 文档中的任何全局默认值。我们就这样定义 activate和update在顶部,任意使用它们 等一下。要使用的twitter帐户(as)和tweet的内容 (say)在每个项中定义。
延时
他们说喜剧是关于…时机!那么我们如何控制 我们的喜剧指挥?delay属性是人类可读的时间跨度或 延迟,例如“5分钟”、“5分钟”或“明天早上8点”,相对于 上一个项目。我们在顶部设置了默认值delay(或者如果不设置 默认情况下,默认值是5mins。
第一个项的delay是特殊的:它确定 脚本将开始第一次调用。对于 是根据一天中的时间设置的–可以说tomorrow at 8am,脚本将 从早上开始,在你开始你的cron工作的第二天。
重复脚本
有些脚本应该只运行一次,有些应该永远重复。默认情况下,您的 脚本完成后将重复(返回到开头)。改变 此行为,包括在脚本顶部:
defaults: repeat: false
命令行
您通常会通过命令行与scriptter进行交互:
$ scriptter --help
正常运行
要实际运行计划,请执行命令并更改状态:
$ scriptter run schedule.yaml
试运行
要进行试运行并了解脚本程序在给定状态下将执行的操作:
$ scriptter trial schedule.yaml
这将以当前状态对计划进行一次试运行,但停止 实际执行任何动作或改变状态。
检查延迟
如果您需要了解项目列表将如何及时显示,请使用 check命令:
$ scriptter check schedule.yaml
这将首先验证完整的计划是否有效、格式是否正确,以及 可渲染。它将按顺序遍历和模拟每个项目,并报告 该项何时运行以及将执行哪些命令。