3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Tracking Hashtag and Create new list

Posted at

自己紹介

大阪を拠点に活動しているフロントエンドエンジニアです。

HAL大阪2年生。

Twitterやってます。

@konojunya

作ったもの

今回作ったものは本当に簡単なもので、

「twitterのハッシュタグを見つけ次第、リストにそのユーザーをぶち込むもの」

です。

スクリーンショット 2016-07-09 1.44.49.png

使ったもの

TwistOAuthが簡単に使えて、使い慣れているので今回も使わせていただきました。

PHPは5.5.31を使いました。

使い方

settings.phpに設定しておけば、動くようにしています。

twitterのidとパスワード、作るリストの名前、追っかけるハッシュタグを入力してください。

settings.php
$screen_name = "hoge";
$password = "hogehoge";
$list_name = "マレフィセントリスト";
$target_hashtag = "#マレフィセント";

まぁハッシュタグだけはコマンドライン引数にしてもいいと思いますが、今回は割愛します。

設定をしたら、コマンドラインで

$ php script.php

これをイベントの間動かしっぱなしにしておけば、OKです。

コード

すべてのコードは、僕のgithubに置いています。

konojunya/tracking_hashtag

script.php
<?php
// この1行で、リストを作っています。作られたリストのIDを代入しておきます。(後で使うため)
$list_id_str = $to->post("lists/create",array("name"=>$list_name))->id_str;

// ストリーミング開始
$to->streaming('statuses/filter', function ($status) use ($to,$list_id_str) {
	if (isset($status)) {
		try {
                       // ここでツイートしていた人をリストに入れていきます。
			$to->post("lists/members/create",array("list_id" => $list_id_str,"screen_name" => $status->user->screen_name));
			echo $status->user->name." - @".$status->user->screen_name." をlistに追加しました!\n";
		}catch (TwistException $e){
			$error = $e->getMessage();
			echo $error.PHP_EOL;
		}
		flush();
	}
},array('track' => $target_hashtag));

単純なコードですね。

サクッと作ったものなので、あまり気にしていない場所があります。

例えば、もうすでにリストにいるのに同じ人をリストに入れているかのような標準出力がでるとかあります。

twitterのapiには、GETでlist/members/showというのがあり、リスト内にそのメンバーがいるかどうかというものがありますが、データでエラーとして帰ってくるんではなくエラーが出るので、今回は使っていません。

いい感じにできる人いたらプルリクください()

あとがき

まぁ30〜40分程度で作れたので良かったです。笑

何かバグなどありましたら @konojunyaまでお願いします。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?