heidilabs / markov-bot
使用 markov-php 的 Twitter 机器人
Requires
- dg/rss-php: ~1.1
- heidilabs/markov-php: ~0.2
- pimple/pimple: ~3.0
- symfony/console: ~2.6.0
- symfony/yaml: ~2.6.0
- ttools/ttools: ~2.1.0
This package is auto-updated.
Last update: 2019-12-14 08:36:33 UTC
README
这是一个开源的 Twitter 机器人,使用马尔可夫链生成推文。这基本上是一个用 PHP 编写的简单 CLI 应用程序,使用 Symfony 控制台。您可以手动运行命令,或将推文命令添加到 crontab 以定期安排机器人发推。
要求
- php5-cli (仅 CLI,不需要 Web 服务器) 和 php5-curl
- Composer
- Twitter 应用,以及用于要发布推文的用户账户的正确凭据。最简单的方法是使用将要发布推文的同一账户创建应用程序,这样您可以直接在应用程序设置页面中获取用户令牌。有关详细说明,请参阅 本教程。
快速安装说明
- 运行
composer create-project heidilabs/markov-bot myDirectory
以克隆应用程序存储库并安装依赖项 - 通过将
config/config-sample.yml
复制到config/config.yml
来创建您的配置文件。编辑文件以设置您的选项,包括 Twitter 凭据。 - 现在可以使用它了。运行
php console.php
查看可用命令。要测试当前配置而不发布推文,请运行php console.php markov:test
.
命令
twitter:test
测试当前的 Twitter 设置并输出根据提供的密钥连接的用户和将要发布更新的用户。
$ php console.php twitter:test
markov:test
测试当前的机器人设置并输出使用这些设置将发布的推文的示例。
$ php console.php markov:test
markov:tweet
使用当前设置在 Twitter 上发布更新。推文也会输出。
$ php console.php markov:tweet
cache:update
更新 Twitter 和 RSS 源的缓存样本。
$ php console.php cache:update
配置源
目前有 3 个适配器:文件、Twitter 和 RSS。内容在第一次运行时进行缓存,您可以通过运行命令来更新此缓存。例如,您可以将其添加到 crontab 以每天更新一次。
方法
- wordchain:这将根据您提供的样本生成词链。词链基本上将文本分组为 2 个词的部分,并尝试为链中的每个链接找到随机补充。当您有更多内容作为样本时,此方法效果更好。
- 混合来源:这个方法很有趣,因为它混合了两个不同的来源,试图使用两个句子之间的共同交点。
来源
来源可以来自文本文件、Twitter账户或RSS源。内容被本地缓存在一个简单的txt文件中。您可以通过运行 php console.php cache:update
来随时更新样本。来源使用前缀定义,后跟路径(如果是本地文件)、不带协议前缀的URL(如果是RSS)或用户名(如果是Twitter来源)。
- file://path/to/file.txt
- twitter://erikaheidi
- rss://feeds.gawker.com/gizmodo/full
注意:使用完整内容而不是只有标题和描述的RSS工作得更好。
示例
基于文本文件的wordchain
markov.settings: method: wordchain sources: - file://data/nietzsche.txt - file://data/linux.txt
像魔咒一样,应该感到非常羞愧。失去对过程属于何种程度的天赋直觉
基于文本文件的混合来源
markov.settings: method: mixedsource sources: - file://data/nietzsche.txt - file://data/mj.txt
谜语,孩子本质上的冲突性质不是我的儿子她说我是
基于两位不同Twitter用户的混合来源
markov.settings: method: mixedsource sources: - twitter://erikaheidi - twitter://digitalocean
是的。打包开始了!@digitalocean @phpbenelux 多么美好的一天... 设置:深入研究服务发现并了解它是如何工作的
使用Twitter和文本文件的混合来源
markov.settings: method: mixedsource sources: - twitter://erikaheidi - file://data/mj.txt
精彩。做得好 @ChasingUX ,做得好。总是三思而后行(真的要三思。)她告诉我宝宝
使用Twitter和RSS源的混合来源
markov.settings: method: mixedsource sources: - twitter://erikaheidi - rss://feeds.gawker.com/gizmodo/full
在#phpbnl15闭幕式上的魔术表演。顺便说一句:我错过了,这一切都在BitStream上....颜色的变化
管理多个机器人
您可以在同一安装中运行多个机器人,为此您只需要创建其他配置文件并将它们放置在您的 "config" 文件夹中。然后,在调用 markov 命令时,您应该提供 --config
选项,将文件名作为参数传递。
示例
$ php console.php twitter:test --config=other.yml $ php console.php twitter:tweet --config=other.yml