こんにちは。Twitterを利用して協調フィルタリングを実装してみようと思いPHPに手を出すことにしました。
初めてでタイムライン読み込みさえハマってしまったので、反省程度に残しておきます。
動作確認やテンプレートにでもお使いください。
(2014/12/03更新) @mpyw 様から、TwistOAuthを利用したより良いコードを提示して頂いた為、誠に勝手ながらこちらで引用させて頂きたいと思います。
<?php
require_once 'TwistOAuth.php';
function h($str, $double = true) {
return htmlspecialchars($str, ENT_QUOTES, 'UTF-8', $double);
}
date_default_timezone_set('Asia/Tokyo');
$ck = '';
$cs = '';
$at = '';
$as = '';
try {
$to = new TwistOAuth($ck, $cs, $at, $as);
$statuses = $to->get('statuses/home_timeline', ['count' => '20']);
} catch (TwistException $e) {
$error = $e->getMessage();
}
header('Content-Type: text/html; charset=utf-8');
?>
<!DOCTYPE html>
<html>
<head>
<title>PHP TwistOAuth test</title>
</head>
<body>
<?php if (isset($error)): ?>
<p style="color:red;"><?=h($error)?></p>
<?php else: ?>
<ul>
<?php foreach ($statuses as $status): ?>
<li style="margin:10px;">
<ul>
<li>名前 … <?=h($status->user->screen_name)?></li>
<li>スクリーンネーム … @<?=$status->user->screen_name?></li>
<li>現在地 … <?=h($status->user->location)?></li>
<li>自己紹介 … <?=h($status->user->description)?></li>
<li>時刻 … <?=date('Y/m/d H:i:s', strtotime($status->created_at))?></li>
<li>本文 … <?=h($status->text, false)?></li>
</ul>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</body>
</html>
(下記が元バージョンになります)
使ったもの: PHP、twitteroauth (GitHub: abraham)
<html>
<head>
<meta charset="UTF-8">
<title>PHP twitteroauth test</title>
</head>
<body>
<?php
// twitteroauth.phpを読み込む。パスは適宜変更してください
require_once("twitteroauth.php");
// Consumer key
$consumer_key = "コンシューマーキー";
// Consumer secret
$consumer_secret = "コンシューマーシークレット";
// Access Token
$access_token = "アクセストークン";
// Access Token Secret
$access_token_secret = "アクセストークンシークレット";
// OAuthオブジェクト生成
$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
// ホームタイムラインを取得。JSONデコードは済んでいる
$req = $to->get("statuses/home_timeline",array("count"=>"20"));
// JSONの配列(結果)を表示
echo "<pre>";
var_dump($result);
echo "</pre>";
?>
</body>
</html>