statuses/media_timeline使ってみた #twitter

Twitterに最近の画像を表示する機能が実装されて、色々いじってみて気づいたんだが、statuses/media_timelineというAPIが追加されていた。これはTwitterと連携している画像サービスやyoutubeなどのURLが含まれているツイートを抽出してくれる(使った感じでは)。そこで、twitter公式のアップローダーからアップロードされた画像URLを取得するプログラムを書いてみた。

#coding: utf8

'''
twitter公式のアップローダーからアップロードされた画像URLの取得

Example:
>>> from tw_media_fetcher import fetch_media_urls
>>> for url in fetch_media_urls(11091562):
>>> print url
http://p.twimg.com/AXhFJIBCAAAwgJA.png
http://p.twimg.com/AXbzldcCMAAXaRd.png
http://p.twimg.com/AXYEkcDCEAADx5X.jpg
http://p.twimg.com/AXQQd7mCAAAYbwH.png
http://p.twimg.com/AXHLGeOCQAAzuHI.png
http://p.twimg.com/AW75mIUCAAAfTv9.jpg
http://p.twimg.com/AW6eVdOCEAEY3G-.jpg
http://p.twimg.com/AWtfSR8CEAEb7tb.jpg
http://p.twimg.com/AWtfCAQCQAEGsUd.jpg
http://p.twimg.com/AWtdRVICAAENn2M.jpg
http://p.twimg.com/AWq-rX_CIAAdIan.jpg
http://p.twimg.com/AWq7LNfCMAALOmF.jpg
http://p.twimg.com/AWexfcvCMAA-zzV.png
'''

import urllib
import urllib2
try:
import json
except:
import simplejson as json

def fetch_media_urls(user_id, offset=0, count=100):
params = {
'offset': offset,
'count': count,
'score': 'true',
'filter': 'false',
'include_entities': 'true',
'user_id': user_id
}
res = urllib2.urlopen('http://api.twitter.com/1/statuses/media_timeline.json?%s' % urllib.urlencode(params)).read()
for tweet in json.loads(res):
try:
for media in tweet['entities']['media']:
yield media['media_url']
except:
pass

説明:
公式アップローダーからアップロードされた画像URLを含むツイートにはentitiesという要素が含まれていて、その中のmediaという配列の中からmedia_urlを抜き出している。

youtubeやその他画像サービスだと、urlsの中に色々と情報が入ってる(これも対応させるのは面倒かも)。


posted by 右京 | Python
blog comments powered by Disqus
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。