codebird でさらにつぶやき取得
#08 もっとつぶやきを取得しよう
http://dotinstall.com/lessons/more_php_v2/21808
を参考に
max_id をつかって
もっとつぶやきを取得する
注意点つぃては
32bit か 64bit なのかでmax_id の使い方が変わるということ
Linux 環境なら
uname -r で
64bit か 32bit か見れる
ちなみに、私の場合だと
2.6.32-358.18.1.el6.x86_64
なので 64 bit
今回は
max_id をつかってもっとつぶやきを取得する
ちなみに、max_id には
最後のつぶやきのIDが格納されている
これを元に、これより前のものをひっぱってくる
twitter API にも max_id というフィールドがあり
これを指定すれば、これより前のものを
デフォルトなら20件引っ張ってくることができる
このフィールドの説明は
https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline
の英文を参照
編集するのは index.html
とりあえず
コンソールでIDのみの格納が確認できたので
console.log(max_id);
はコメントアウト
編集するところは
$.get() の
{} のところ
more.php を呼び出すときに max_id をパラメータで渡したいので
{max_id:max_id}
とする
次に、more.php も編集する
$tweets = (array)$cb->statuses_userTimeline($params);
を if で条件分岐するようにする
max_id がセットされているか判別するには
if(isset($_GET['max_id'])){
で判別できる
isset() は、指定した変数がセットされているか判定する
これについては
http://php.net/manual/ja/function.isset.php
のリファレンスを参照
ここで行う処理は max_id を $params へセットする
$params['max_id'] = $_GET['max_id'];
そして、パラメータにカウントを入れる
これは、何回とってくるか、という設定
デフォルトでは20件
今回は、次の20件を取得したい
max_id は最後の
つぶやきになるので、それを含めて取得するので
21件になる
$params['count']=21;
そして、先頭の1件を削除するので
$tweets = (array)$cb->statuses_userTimeline($params); array_shift($tweets);
とする
array_shift() は
http://php.net/manual/ja/function.array-shift.php
のリファレンスにあるように
先頭の要素を1つ取り出す
つまり、21だったのが20になる
つまり、これで前回の最後のつぶやきを含めて21件取得し
新たに取得した1番めが
前回の最後のつぶやきと重なるので
array_shift() で削除することで
新しく20件取得しているように見える
という仕組み