images from Instagram API

instagram APIで取得した画像のスライドショー。APIから取得できるのは、自身のアカウントの過去20件のデータのみなので、あまり使い道がなさそう。

/*
 2016.12.23
 Instagram APIから画像取得
 【参照】http://research.michaelday.org.uk/2015/06/04/twitter-and-instagram-feeds-in-processing/
 【トークン生成】http://instagram.pixelunion.net/
*/

import http.requests.*;
import codeanticode.syphon.*;

SyphonServer server;// [lib]Syphon

PFont InstagramFont;
PImage userphoto;

JSONArray data;
int timingTransision = 100; // 写真切替間隔
float fadeTime = 5; // フェードアウト時間
String token = "生成したトークン"; //InstagramAPIトークン設定

void settings(){
  size(600, 600, P3D);
  PJOGL.profile=1;// [lib]Syphon
}

void setup(){
  server = new SyphonServer(this, "Processing Syphon");// [lib]Syphon
  smooth();
  getInstagramData();
  organizeInstagramData(); //最初の1回目用
  image(userphoto, 0, 0, width, height); //最初の1回目用
}

// instagram APIからデータ取得
void getInstagramData() {
  GetRequest get = new GetRequest("https://api.instagram.com/v1/users/self/media/recent/?access_token=" + token);
  get.send();
  JSONObject content = parseJSONObject(get.getContent()); 
  data = content.getJSONArray("data");
  println("取得データ = " + data); 
}

// 取得したJSONデータから、ランダムで画像表示
void organizeInstagramData(){
  float numberCount = random(0, 19); // instagramAPIが最新から20件前までのデータまでしか取得できないため0〜19までの20
  int imageNumber = (int)numberCount;
  println("画像" + imageNumber);
  JSONObject numberOf = data.getJSONObject(imageNumber); 
  JSONObject images = numberOf.getJSONObject("images");
  JSONObject standard_resolution = images.getJSONObject("standard_resolution");
  String URL = standard_resolution.getString("url");
  //println("URL = " + URL);
  String[] imageUrl = splitTokens(URL, "?"); // 取得URLに付属するパラメーター値分割
  userphoto = loadImage(imageUrl[0]); // パラメーター以前のURL取得
}

void draw() {
  server.sendScreen();// [lib]Syphon
  fill(0, fadeTime); //フェードアウト用
  rect(0, 0, width, height); //フェードアウト用
  if (frameCount % timingTransision == 0) {
    organizeInstagramData();
    if (userphoto != null) {
      image(userphoto, 0, 0, width, height);
    } else {
      //println("userphoto null");
    }
  }
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください