どうもイトサル(@itosaru)です。

instagramのAPIを使ってみたいです。
投稿情報を取得するにはどうすればいいでしょうか。
この記事ではinstagram基本表示APIを使って投稿(メディア)情報を取得するプログラムについて説明します。
なおプログラムはPythonを使います。
メディア情報の取得方法は2つある
instagram基本表示APIを使ったメディア情報の取得には2つの方法があります。
- 単独のメディア情報を取得する
- 複数のメディア(アルバム)情報を取得する
注意点としてはどちらも1つの特定の投稿のものを対象に取得するという点です。
後者のアルバムは複数のメディアを1つの投稿でアップロードできる機能ですね。
特定の1つの投稿ではなく複数の投稿情報を取得したい場合は「get_user_media()」を使います。
「get_user_media()」の詳細はこちらをご覧ください。

サンプルプログラム
メディア情報を取得するサンプルプログラムを書きました。
なおプログラムを実行するうえで「instagramBasicDisplay」ライブラリが必要です。
まだインストールしていない場合は下記pipコマンドを実行してインストールしましょう。
pip install instagram-basic-display
なおこのプログラムは前回までのinstagram基本表示APIをベースに機能追加しています。
from instagram_basic_display.InstagramBasicDisplay import InstagramBasicDisplay
instagram_basic_display = InstagramBasicDisplay(app_id ='InstagramアプリID', app_secret='Instagram App Secret',redirect_url='設定したリダイレクトURL')
def get_authorize_code():
print(instagram_basic_display.get_login_url())
def get_access_token(authorize_code):
auth_token = instagram_basic_display.get_o_auth_token(authorize_code)
print(auth_token)
def get_profile(access_token):
profile = instagram_basic_display.get_user_profile()
print(profile)
print()
print("区分を入力してください")
print("1:認証コード発行")
print("2:アクセストークン発行")
print("3:プロフィール情報取得")
print("4:メディア情報一括取得")
print("5:メディア情報取得")
print("6:アルバム情報取得")
kbn = int(input())
if(kbn == 1):
get_authorize_code()
elif(kbn == 2):
authorize_code = input("認証コードを入力してください:")
get_access_token(authorize_code)
elif(kbn == 3):
access_token = input("アクセストークンを入力してください:")
instagram_basic_display.set_access_token(access_token)
#プロフィールの取得
profile = instagram_basic_display.get_user_profile()
print()
print(profile)
elif(kbn == 4):
access_token = input("アクセストークンを入力してください:")
instagram_basic_display.set_access_token(access_token)
#投稿したメディアの取得
media = instagram_basic_display.get_user_media()
print()
print(media)
elif(kbn == 5):
access_token = input("アクセストークンを入力してください:")
instagram_basic_display.set_access_token(access_token)
media_id = input("メディアのidを入力してください:")
#投稿したメディアの取得
media = instagram_basic_display.get_media(media_id)
print()
print(media)
elif(kbn == 6):
access_token = input("アクセストークンを入力してください:")
instagram_basic_display.set_access_token(access_token)
media_id = input("メディアのidを入力してください:")
#投稿したメディアの取得
media = instagram_basic_display.get_media_children(media_id)
print()
print(media)
メディア情報を取得する前段階として
- アクセストークン発行用の認証コードの発行
- 認証コードを使ったアクセストークンの発行
の2つが必要です。
詳しくはこちらの記事をご覧ください。

単独のメディア情報を取得するメソッド
1つの投稿の単独メディアを取得するには
get_media()
を使います。
引数としてメディアのIDが必要です。
メディアのIDはメディア情報の一括取得「get_user_media()」で確認することができます。

実行した結果はこちら。

リターンデータは「get_user_media()」とほぼ一緒ですが、こちらは単独のメディアを取得するものなのでpaging情報が付随していません。
複数のメディア(アルバム)情報を取得するメソッド
1つの投稿のアルバム情報を取得するには
get_media_children()
メソッドを使います。
引数として「get_media()」同様メディアのIDが必要です。
実行した結果がこちら。

アルバムにあるメディア情報を一括で取得することができました。
なおアルバムではない単独のメディアのIDを指定した場合は空データが返ってきます。

まとめ
この記事ではinstagram基本表示APIを使ってメディア情報を取得する方法についてお伝えしました。
今回の内容の振り返りです。
- 単独のメディア情報を取得する:get_media()
- 複数のメディア(アルバム)情報を取得する:get_media_children()
どちらも引数としてメディアのIDが必要なので、「get_user_media()」とセットで使うことになりそうですね。
コメント