twitter api で twitube.jp を作ってみる

ひたすら、ただひたすらにTwitterツールを作ってみます。
よかったら皆さんも使ってみて下さい。
随時更新。

とりあえず走り書きでやってきますが、最終的には綺麗にまとめていきますんで。
少しでもTwitterAPIを使うヒントを提供できれば。

ツイッター上で流れてきた動画をいいねする。
すると、その動画を自分のものとしてツイートできます。
https://twitube.jp

以下はそのメモ。

# フォロー・フォロワーのメソッドは以下のように分けたほうがいい

フォローしている => friends
フォロワー => followers

作っている途中でごちゃごちゃになるので、
フォローしているのは、フレンド。
フォローされているのはフォロワーと
しておくべき。



#データベース及び、javascriptで表示する時の注意

twitter APIには id 型と id_str 型がある。
これからはid_strだけを使っていくべき。

##mysql型はどうすりゃいい？

twitter api の idは、id_strを取得。
bigint 型にして、20桁まで対応させましょう。
(じゃないとDBにうまく登録できません)

##javascriptで数値が丸まっちゃうんだけど。

ajaxで twitter api の id を取得し表示させると、数値が四捨五入される。
よって、 id_str を取得し、それを表示させるようにしましょう。
(123456789のIDが123457000 になって表示されてしまう感じ。)


## 片思い、両思いを取得してみよう

//片思いされている
//片思いしている
//お互いにフォロー中

を取得する方法とその考え。
https://twitube.jp/tweets/omoi/

```

//    自分のフォロワーIDを取得
    public function getFollowers($option = [])
    {
        $res = $this->UserTwitter->get("followers/ids",$option);
        return $res;
    }

//    自分のフレンドを取得

    public function getFriends($option = [])
    {
        $res = $this->UserTwitter->get("friends/ids",$option);
        return $res;
    }

    public function look($option = [])
    {
        $res = $this->UserTwitter->post("users/lookup",$option);
        return $res;
    }


```


上記3つのAPIを使う。
で、それぞれの差分を取得。

```
$omoi = [
            'ryouomoi' => array_intersect($res['follow'],$res['fan']),
            'kataomoi_sareteru' => array_diff($res['follow'],$res['fan']),
            'kataomoi_shiteru' => array_diff($res['fan'],$res['follow'])
        ];

```

こんな感じ、これで両思いか片思いかなどがわかるので、
そのIDで lookup API でユーザー情報を取得する。



https://twitter.com/search?f=tweets&q=filter%3Avideos&src=typd

https://twitter.com/search?f=tweets&q=since%3A%202017-09-11&src=typd

//9月12日 以降の video を持つツイート
https://twitter.com/search?l=ja&q=filter%3Avideos%20since%3A2017-09-12&src=typd&lang=ja

ライブラリだとこんな感じ

```
$data = $this->Twitter->search([
            'q' => 'from:ma7ma7pipipi filter:videos'
        ]);


```


リツイート検索
検索ワードや検索コマンドに、min_retweets:[数字]を加えると、リツイート数が、その数字以上のツイートのみを検索することができます。人気ツイートを検索したい場合に有用です。
使用例: 猫 min_retweets:1000
サンプル: WEBで検索 / アプリで検索
お気に入り(ファボ)検索
検索ワードや検索コマンドに、min_faves:[数字]を加えると、お気に入り(ファボ)された数が、その数字以上のツイートのみを検索することができます。人気ツイートを検索したい場合に有用です。
使用例: 猫 min_faves:1000
サンプル: WEBで検索 / アプリで検索

Twitter リスト検索機能を作るか
どの芸能人が、どのリストに含まれるかをチェックすることで、リストがわかる。

リストメンバーズでリンクを貼るか。

//twitter search のコツ
https://gist.github.com/cucmberium/e687e88565b6a9ca7039

//リツイートは除く
exclude:retweets


//公式APIのキーが流れてる？
http://kww21.endless-world.net/twitter/ConsumerKey.html


list:/RyoSpencer/lists/av
https://twitter.com/RyoSpencer/lists/av


https://twitter.com/torihiki3153/lists/m


#位置情報
statuses/show
Twitterアプリで位置情報をタグをつけたものを取得すると、
place という項目が追加される。
これでも何か作れるかも。

```

 [place] => stdClass Object
        (
            [id] => 09efb4cf2cd6f001
            [url] => https://api.twitter.com/1.1/geo/id/09efb4cf2cd6f001.json
            [place_type] => poi
            [name] => アニメイトカフェ
            [full_name] => アニメイトカフェ
            [country_code] => JP
            [country] => 日本
            [contained_within] => Array
                (
                )

            [bounding_box] => stdClass Object
                (
                    [type] => Polygon
                    [coordinates] => Array
                        (
                            [0] => Array
                                (
                                    [0] => Array
                                        (
                                            [0] => 136.87880513301
                                            [1] => 35.16793345538
                                        )

                                    [1] => Array
                                        (
                                            [0] => 136.87880513301
                                            [1] => 35.16793345538
                                        )

                                    [2] => Array
                                        (
                                            [0] => 136.87880513301
                                            [1] => 35.16793345538
                                        )

                                    [3] => Array
                                        (
                                            [0] => 136.87880513301
                                            [1] => 35.16793345538
                                        )

                                )

                        )

                )

            [attributes] => stdClass Object
                (
                )

        )



```