2012年11月5日月曜日

ツイッターの投稿を「このツイートをサイトに埋め込む」形式で1日毎にまとめてブログに貼り付ける

Twitterのoembed APIを使用する。

ツイートのIDで下記埋め込みhtmlが取得できる。

1. Request
https://api.twitter.com/1/statuses/oembed.xml?id=265292979831455744

2. Response

This XML file does not appear to have any style information associated with it. The document tree is shown below.

<oembed>
<provider_url>http://twitter.com</provider_url>
<type>rich</type>
<version>1.0</version>
<height/>
<author_name>苫とし</author_name>
<html>
<blockquote class="twitter-tweet" lang="ja"><p>test<a href="http://t.co/4ESgfpXm" title="http://twitter.com/toshi01951/status/265292891063189504/photo/1">twitter.com/toshi01951/sta…</a></p>&mdash; 苫としさん (@toshi01951) <a href="https://twitter.com/toshi01951/status/265292979831455744" data-datetime="2012-11-05T03:22:29+00:00">11月 5, 2012</a></blockquote> <script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</html>
<width>550</width>
<cache_age>31536000000</cache_age>
<author_url>https://twitter.com/toshi01951</author_url>
<provider_name>Twitter</provider_name>
<url>
https://twitter.com/toshi01951/status/265292979831455744
</url>
</oembed>

1. ツイートを取得
2. IDを取得
3. IDを元に「埋め込みhtml」を取得する。
で良い。これを繰り返す。

□ 任意のユーザーの特定の日付のツイートを検索する方法
http://search.twitter.com/search.json?q=from:toshi01951+since:2012-11-01+OR+until:2012-11-01

試したが、この方法は使えなかった。日付検索のAPIの時刻はGMT(グリニッジ標準時)ベースなので。

□ タイムライン(user_timeline APIの使用)
http://api.twitter.com/1/statuses/user_timeline.xml?id=toshi01951

こんな感じでタイムラインが取得可能。

□ ソース

<?php
    //twitter user_timeline api
    $vRequest = "http://api.twitter.com/1/statuses/user_timeline.xml?id=toshi01951";

    //apiからをxmlでもらう
    $oXml = simplexml_load_file($vRequest);

    //オブジェクトを展開
    if(isset($oXml->error) && $oXml->error != ''){
        echo "取得に失敗しました。<br/>\n";
        echo "パラメーターの指定を確認して下さい。<br/>\n";
        echo "エラーメッセージ:".$oXml->error."<br/>\n";
    } else {
        foreach($oXml->status as $oStatus){
            $iStatusId =         $oStatus->id; //つぶやきステータスID
            //echo $iStatusId."\n";
            // oembed API
            $vRequest2 = "http://api.twitter.com/1/statuses/oembed.xml?id=".$iStatusId;
            //apiからxmlでもらう
            $oXml2 = simplexml_load_file($vRequest2);
            echo $oXml2->html."\n";
        }
    }
?>







0 件のコメント:

コメントを投稿