carloscgo / laravel-twitter-streaming
轻松地在Laravel应用中处理Twitter流API
Requires
- php: ^7.0
- illuminate/support: ^5.3
- spatie/twitter-streaming-api: ^1.0.1
Requires (Dev)
- orchestra/testbench: ^3.3
- phpunit/phpunit: 5.*|6.*|7.*
This package is not auto-updated.
Last update: 2024-09-29 06:02:33 UTC
README
Twitter提供了一个流API,您可以利用它做一些有趣的事情,例如监听包含特定字符串或用户可能执行的操作(例如点赞推文、关注某人等)的推文。此包使得使用API变得非常简单。
TwitterStreaming::publicStream($business_id) ->whenHears('#laravel', function(array $tweet) { echo "{$tweet['user']['screen_name']} tweeted {$tweet['text']}"; }) ->startListening();
这是一个示例Laravel应用,其中已预安装此包。它包含一个artisan命令,用于启动监听过程。
安装
您可以通过composer安装此包
composer require carloscgo/laravel-twitter-streaming
您必须安装此服务提供者。
// config/app.php 'providers' => [ ... CarlosCGO\LaravelTwitterStreaming\TwitterStreamingServiceProvider::class, ];
此包还包括一个外观,它提供了调用类的一种简单方式。
// config/app.php 'aliases' => [ ... 'TwitterStreaming' => CarlosCGO\LaravelTwitterStreaming\TwitterStreamingFacade::class, ];
必须使用此命令发布配置文件
php artisan vendor:publish --provider="CarlosCGO\LaravelTwitterStreaming\TwitterStreamingServiceProvider" --tag="config"
它将被发布在config/laravel-twitter-streaming.php
return [ /** * To work with Twitter's Streaming API you'll need some credentials. * * If you don't have credentials yet, head over to https://apps.twitter.com/ */ 'table' => env('TWITTER_CONFIG_TABLE'), 'where_field_business' => env('TWITTER_FIELD_BUSINESS'), ];
获取凭证
为了使用此包,您需要从Twitter获取一些凭证。请前往Twitter应用管理以创建一个应用。
创建您的应用后,点击“密钥和访问令牌”选项卡以获取您的consumer_key
、consumer_secret
、access_token
和access_token_secret
。
使用方法
目前,此包适用于公共流和用户流。两者都提供了startListening
函数来启动监听过程。除非您取消,否则您的PHP进程将无限期地执行该函数。函数之后的代码将不会运行。
下面的例子中使用了外观。如果您不喜欢外观,可以将其替换为
app(CarlosCGO\LaravelTwitterStreaming\TwitterStreaming::class)
公共流
公共流可以用来监听正在被推特的特定词语。
whenHears
的第一个参数必须是一个字符串或包含您想监听的词语的数组。第二个参数应该是一个可调用的,当您的词语在Twitter上被使用时将被执行。
use TwitterStreaming; TwitterStreaming::publicStream($business_id) ->whenHears('#laravel', function(array $tweet) { echo "{$tweet['user']['screen_name']} tweeted {$tweet['text']}"; }) ->startListening();
用户流
use TwitterStreaming; TwitterStreaming::userStream($business_id) ->onEvent(function(array $event) { if ($event['event'] === 'favorite') { echo "Our tweet {$event['target_object']['text']} got favorited by {$event['source']['screen_name']}"; } }) ->startListening();
关于如何在生产环境中运行的建议
在生产环境中使用时,您可以选择创建一个artisan命令来监听来自Twitter的传入事件。您可以使用Supervisord来确保该命令始终运行。
一些建议
这些API是实时工作的,因此可能会报告大量活动。如果您需要处理这些活动的某些重负载工作,最好将这项工作放入队列中,以保持监听过程快速。
更新日志
请参阅更新日志以获取更多关于最近更改的信息。
测试
$ composer test
贡献
请参阅贡献以获取详细信息。
许可证
麻省理工学院许可证(MIT)。请参阅许可文件获取更多信息。