指定ユーザーの指定日付1日分のつぶやきを取得してHTML出力

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>";
?>

0 コメント:

にほんブログ村 ブログブログへ 人気ブログランキングへ