1日分のつぶやきまとめアーカイブを作ろうとしたら、オンラインツールがおちまくったのでやっつけでつくりました。タイムラインの取得は認証不要です。
お恥ずかしいながら、コードはかなり適当でございます。
- 下記のファイルをローカルサーバーなりにアップします。
- ユーザー名と1日分のつぶやきを取得したい日付は、下記ファイルをアップし、アクセスする際のURLにパラメータで渡します。たとえば「http://localhost/test/tw/?u=hoge&d=20091115」。「u=hoge」の"hoge"部分にTwitterユーザー名、「d=2001115」の数値部分にyyyymmdd形式で日付を指定してください。
- 投稿内容の「@ユーザー」部分とURLはリンクに変換されます。
- 出力されたテキストをブログにコピペ。
※一応動きますが、動作は保証しません。使いたい方はご自由にお使いください。
<?
# php5
# 指定したユーザーの1日分のつぶやきを取得
# このファイルをアップし、パラメータにつぶやきを取得したい日付をyyyymmdd形式で指定。
# 不正な日付を指定した場合はエラーになるか、現在日付のつぶやきが取得できます。
# ex) http://localhost/test/pj_roomer/tw/?u=***&d=20091115
# タイムライン取得日付
$d=htmlspecialchars($_GET["d"]);
# ユーザー名
$username=htmlspecialchars($_GET["u"]);
if(empty($d) || empty($username)){
echo "<p>パラメータが不正です。「URL?username=ユーザー名&d=yyyymmdd」形式で指定してください。";
exit;
}
#タイムゾーン
date_default_timezone_set('Asia/Tokyo');
#リクエストURL
$url = "http://twitter.com/statuses/user_timeline/".$username.".xml?count=480";
# 結果
$result=file_get_contents($url, false);
$xml = simplexml_load_string($result);
#タイムライン取得日付フォーマット
$now=strtotime($d);
$nowYMD=date("Ymd",$now);
$nowY=date("Y",$now);
$nowM=date("m",$now);
$nowD=date("d",$now);
#タイトル
echo $nowY."年".$nowM."月".$nowD."日のつぶやき";
# つぶやき1日分のHTML生成
$s="<ul class='tl-tweets'>\n";
for($i=0; $i<count($xml->status);$i++){
#投稿日
$dt=strtotime($xml->status[$i]->created_at);
$dtYMD=date("Ymd",$dt);
#指定した日付のみ取得
if(($dtYMD-$nowYMD)!=0) continue;
$s.="<li><span class='twtr2src_time'>";
# つぶやきID
$s.="<a href='http://twitter.com/cocoism/statuses/".$xml->status[$i]->id."'>";
# 投稿時間
$s.=date("H:i",$dt)."</a></span> ";
# 投稿内容
$text=$xml->status[$i]->text;
# 文中の@ユーザー名をリンクに
$text=ereg_replace("(@)([0-9a-z_]{1,15})", "<a href=\"http://twitter.com/\\2\" target=\"_blank\">\\1\\2</a>", $text);
# 文中のURLをリンクに
$text=ereg_replace("[^=\"](https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)", "<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>", $text);
$s.="<span class='twtr2src_text'>".$text."</span>";
$s.="</li>\n";
}
$s.="</ul>";
# つぶやき1日分のHTML出力
echo "<p><textarea style='width:100%; height:10em;'>".$s."</textarea></p>";
echo "<p>▼表示<br />$s</p>";
?>
