Tweet Entities を利用した短縮URLの伸長
Twitter 上のツイートに含まれる URL は t.co によって短縮されている(プログラム冒頭の例を参照)。オリジナルの URL は Tweet Entities に記載されているから,これを利用して伸長する。
Tweet Entities ・・・ https://dev.twitter.com/docs/tweet-entities
#coding: utf-8 # ツイートに含まれる短縮 URL (t.co) を entities 情報に基づいて伸長する。 # 例を以下に示す: #置換前 : テスト(2013/01/17) : Yahoo http://t.co/Q0bCD94p と Google https://t.co/Iq66XDzR を比べると Google が好き。 #置換後 : テスト(2013/01/17) : Yahoo http://t.co/Q0bCD94p と Google https://www.google.co.jp/ を比べると Google が好き。 # # 2013.01.17 import tweepy import re #短縮 URL の伸長 def expandUrl(tl): # 複数の URL が含まれる場合に備えてループを回す # (注) urls フィールドの値はリストのため,いずれにしてもループを回す必要あり。 for url in tl.entities['urls']: if url is None: break # urls の値が存在しない場合 shortenUrl = url['url'] #短縮URL expandedUrl = url['expanded_url'] #伸長した(オリジナル)URL tl.text = re.sub(shortenUrl, expandedUrl, tl.text) return tl consumer_key = 'consumer key' consumer_secret = 'consumer secret' # my access token から見る oauth_token = 'oauth token' oauth_token_secret = 'oauth token secret' # auth オブジェクトの初期化 auth = tweepy.OAuthHandler(consumer_key, consumer_secret) # あらかじめ取得したOAuth tokenの設定 auth.set_access_token(oauth_token, oauth_token_secret) # api オブジェクトの設定 api = tweepy.API(auth) #ユーザタイムラインの取得 (include_entities=True がポイント) userTimeline = api.user_timeline('screen name', include_entities=True) for tl in userTimeline: print "伸長前 : " + tl.text.encode('utf-8') #短縮 URL の伸長 tl = expandUrl(tl) print "伸長後 : " + tl.text.encode('utf-8')