Tweepyでt.coを展開する

APIドキュメントは古かった

Welcome to tweepy’s documentation! — tweepy v1.4 documentation
1.4のドキュメントがSphinxであるのだけど、現在は1.8だし、Twitter APIの仕様もけっこう変わってたりする。一番大きいのはUserStraemなのかもしれないけど、今回はそれはおいとく。

ソースを読んだ

とりあえず home_timeline の部分の params を読んでもないし、全体的にgrepかけても項目がなくて、entitiesがとれない→t.coが展開できないかと思ってた。githubもちょっとみたけれどあんまりよくわかんなかった。

誰かのブログにあった

どこかでブログにありました。参考に載せたかったけど結局見つからず。

結局単純に引数に与えてやればよかった。

#DjangoのViews.py
def get_home_timeline(request):
    #OAuthをとりつける外部関数
    auth = setOAuth(request)
    api = tweepy.API(auth_handler=auth)
    #こうやって引数に与えてやればいい
    home_timeline = api.home_timeline(count = 100,since_id = request.session.get('since_id'), include_entities=True)

簡単ですね。展開するサンプル(微妙なのであとでメソッドを分ける予定)

    for i in home_timeline:
        text = i.text

        for url in i.entities['urls']:
            #なかったらスルーして次へ
            if url is None:
                continue
            else:
                for ii in i.entities['urls']:
                    #正規表現で見つける
                    if re.search(ii['url'], text):
                        #いろいろハマったけど、素直にentitiesのディクショナリから参照してそれぞれ置換してあげればよかった
                        text = re.sub(ii['url'], ii['expanded_url'], text)

結論

ドキュメントや、せめてソースに書いておいてください……