InstagramAPI(python-instagram)を使ってみる。

Instagramの API がいつのまにかリリースされていました。

–> Instagram developer

instagramの画像をだらだら眺めるものを作ってみたのときにはなかった気がするので最近ですかね?
(そういえば、最近iphoneアプリにinstagram系を見かけると思ってたけど、これがリリースされたからなのか)

というわけで、Instagram APIのpythonライブラリのpython-instagramを触ってみたいと思います。

1. python-instagramのサンプルを動かしてみる。

1-1. InstagramDeveloperでアプリを登録する。

ここの「Register your application」から登録します。
(その前にinstagramのアカウントがないとダメだった気がします。)

110412-0001.jpg

110412-0006.jpg

例)
Application Name:テスト
Description:テストアプリです。
Website:http://localhost:8515
OAuth redirect_uri:http://localhost:8515/oauth_callback

登録が完了すると「Manage」に登録したアプリケーションのCLIENT IDなどを確認できます。

1-2.python用のライブラリ python-instagramを取得する。

ここにpythonとrubyのライブラリがあるのでpythonのライブラリを取得します。

110412-0005.jpg

取得すると「sample_app.py」があるので、これを動かして動作を確認します。

1-3.準備

「python setup.py install」でインストールするとライブラリも良きにはからってくれます。
 sample_app.pyを開いて以下を書き換えます。
・CONFIGのclient_id、client_secret、redirect_uriを1-1で登録した内容に書き換えます。

1-4.実行します。

 ここまでをそれっぽい環境に作ってみるとこんな感じです。
[bash]
mkvirtualenv instagramapp
git clone git@github.com:Instagram/python-instagram.git
cd python-instagram/
python setup.py install
pip install bottle
vi sample_app.py
# CONFIGを修正
[/bash]

 それでは、sample_app.pyを実行してブラウザで http://localhost:8515 にアクセスします。

[bash]
python sample_app.py
[/bash]

110412-0009.jpg

「Connect with Instagram」というリンクがあるのでクリックすると、Instagramへのログイン画面に遷移します。

110412-0010.jpg

ログインすると、今回作成したアプリからのアクセス許可を求める画面になります。
許可するので「Yes」をクリックします。

110412-0011.jpg

そうすると、redirect_uriに登録しているURLに遷移します。
サンプルのプログラムでは自分の投稿した最近の画像を表示するようになっています。

110412-0013.jpg

2. Instagramのpythonライブラリを使ってみる

2-1. client_idのみで利用してみる。

 OAuthによる認証が必要ではない機能もあるので、それを使ってみます。

2-2. 実は動いてくれないライブラリ

 ここまできて何だそりゃ! って感じですが、実は公式にあるpython-instagramは微妙にバグがあるみたいで使えなかったりします。media_popularとかやってみてもすぐエラーになります。
 そこでforkして修正してるリポジトリがあるのでこっちのを使わせてもらいます。
 が、それでもエラーになるので一部修正する。

さっきまでのファイルがあると思いますので、いれかえちゃいましょう。
[bash]
cd (python-instagramがあるディレクトリ)
rm -Rf python-instagram
git clone git://github.com/mgunneras/python-instagram.git
cd python-instagram
vi instagram/models.py
[/bash]

[diff]
diff –git a/instagram/models.py b/instagram/models.py
index 95e4799..3a74563 100644
— a/instagram/models.py
+++ b/instagram/models.py
@@ -104,7 +104,7 @@ class Location(ApiModel):
@classmethod
def object_from_dictionary(cls, entry):
point = None
– if entry[‘latitude’]:
+ if entry.get(‘latitude’, None):
point = Point(entry[‘latitude’],
entry[‘longitude’])
location = cls(entry.get(‘id’, 0),
[/diff]

[bash]
python setup.py install
[/bash]

2-3. client idのみでpopular検索してみる。

 CLIENT IDには1-1で取得したCLIENT IDを設定します。
 これで10件データを取得できます。

[python]
from instagram import InstagramAPI

api = InstagramAPI(client_id="e9c32d794cd64b049d4a0bea688134cd")
items = api.media_popular(count=10)
for item in items:
print "user name: %s" % item.user.username
[/python]

取得したデータの構造はここらに書いてます。

2-4.皆大好きねこ画像。

[python]
from instagram import InstagramAPI

api = InstagramAPI(client_id="e9c32d794cd64b049d4a0bea688134cd")
items, next = api.tag_recent_media(count=10, tag_name="cat")
for item in items:
print "user name: %s" % item.user.username
[/python]

3. わざわざpython使わなくてもjavascriptでもOK

 Javascriptだけでも簡単にできるようです。こんなかんじです。

 参考元:Instagram API が面白いかも – すぎゃーんメモ

InstagramAPIメモ

client.pyから。client.py,tests.pyをみたほうがよいっ。

MEDIA_ACCEPT_PARAMETERS = [“count”, “max_id”]
SEARCH_ACCEPT_PARAMETERS = [“q”, “count”]

media_popular

パラメータ:MEDIA_ACCEPT_PARAMETERS

media_search

パラメータ:SEARCH_ACCEPT_PARAMETERS + [‘lat’, ‘lng’, ‘min_timestamp’, ‘max_timestamp’],

media_likes

パラメータ:[‘media_id’]

like_media

パラメータ: [‘media_id’]

unlike_media

パラメータ:[‘media_id’]

create_media_comment

パラメータ:[‘media_id’, ‘text’]

delete_comment

パラメータ:[‘media_id’, ‘comment_id’]

media_comments

パラメータ:[‘media_id’]

media

パラメータ:[‘media_id’]

user_media_feed

パラメータ:MEDIA_ACCEPT_PARAMETERS

user_recent_media

パラメータ:MEDIA_ACCEPT_PARAMETERS + [‘user_id’]

user_search

パラメータ:SEARCH_ACCEPT_PARAMETERS

user_follows

パラメータ:[“user_id”]

user_followed_by

パラメータ:[“user_id”],

user

パラメータ:[“user_id”]

location_recent_media

パラメータ:MEDIA_ACCEPT_PARAMETERS + [‘location_id’]

location_search

パラメータ:SEARCH_ACCEPT_PARAMETERS + [‘lat’, ‘lng’, ‘foursquare_id’]

location

パラメータ:[“location_id”]

tag_recent_media

パラメータ:MEDIA_ACCEPT_PARAMETERS + [‘tag_name’]

tag_search

パラメータ:SEARCH_ACCEPT_PARAMETERS

tag

パラメータ:[“tag_name”]

user_follows

user_followed_by

user_incoming_requests

change_user_relationship

パラメータ:[“user_id”, “action”],