Instagram&处理 - 实时视图

时间:2014-06-26 08:27:25

标签: api processing instagram

我正在开发一个类似于instaprint的小应用程序,需要一些帮助。我正在使用来自Globalgram的Andrew Haskin的源代码,它在instagram中搜索特定的主题标签,并显示使用该主题标签发布的最新图像。问题是它只进行一次,我需要它连续搜索主题标签并在添加新标签时显示图像,所以刷新,我一直在修补但无济于事。任何帮助将不胜感激

以下代码:

import com.francisli.processing.http.*;

PFont InstagramFont;
PImage backgroundimg;
PImage brand;
PImage userphoto;
PImage profilepicture;

String username;
String tag;
String[] tagStrings;


com.francisli.processing.http.HttpClient client;

void setup() {
  size(580, 900);
  smooth();
  backgroundimg = loadImage("iso_background.jpg");
  brand = loadImage("iso.jpg");

  InstagramFont = loadFont("Helvetica-Bold-36.vlw");

  client = new com.francisli.processing.http.HttpClient(this, "api.instagram.com");
  client.useSSL = true;

  //// instantiate a new HashMap
  HashMap params = new HashMap();
  //// put key/value pairs that you want to send in the request
  params.put("access_token", "------ACCESS TOKEN HERE------");
  params.put("count", "1");
  client.GET("/v1/tags/coffee/media/recent.json", params);
}

void responseReceived(com.francisli.processing.http.HttpRequest request, com.francisli.processing.http.HttpResponse response) {
  println(response.getContentAsString());

  //// we get the server response as a JSON object
  com.francisli.processing.http.JSONObject content = response.getContentAsJSONObject();

  //// get the "data" value, which is an array
  com.francisli.processing.http.JSONObject data = content.get("data");

  //// get the first element in the array
  com.francisli.processing.http.JSONObject first = data.get(0);

  //// the "user" value is another dictionary, from which we can get the "full_name" string value
  println(first.get("user").get("full_name").stringValue());
  //// the "caption" value is another dictionary, from which we can get the "text" string value
  //println(first.get("caption").get("text").stringValue());
  //// get profile picture
  println(first.get("user").get("profile_picture").stringValue());
  //// the "images" value is another dictionary, from which we can get different image URL data
  println(first.get("images").get("standard_resolution").get("url").stringValue());

  com.francisli.processing.http.JSONObject tags = first.get("tags");
  tagStrings = new String[tags.size()];
  for (int i = 0; i < tags.size(); i++) {
    tagStrings[i] = tags.get(i).stringValue();
  }


  username = first.get("user").get("full_name").stringValue();


  String profilepicture_url = first.get("user").get("profile_picture").stringValue();
  profilepicture = loadImage(profilepicture_url, "png");

  String userphoto_url = first.get("images").get("standard_resolution").get("url").stringValue();
  userphoto = loadImage(userphoto_url, "png");

 //noLoop();
}


void draw() {
  background(255);
  imageMode(CENTER);
  image(brand, 100, height/1.05);


  if (profilepicture != null) {
    image(profilepicture, 60, 70, 90, 90);
  }
  imageMode(CENTER);
  if (userphoto != null) {
    image(userphoto, width/2, height/2.25, 550, 550);
  }

  textFont(InstagramFont, 20);
  if (username != null) {
    text(username, 110, 115);
    fill(0);
  }

   textFont(InstagramFont, 15);
  if ((tagStrings != null) && (tagStrings.length > 0)) {
    String line = tagStrings[0];
    for (int i = 1; i < tagStrings.length; i++) {
      line += ", " + tagStrings[i];
    }
    text(line, 25, 720, 550, 50);
    fill(0);
  }

}

1 个答案:

答案 0 :(得分:1)

AFAIK应该是

client.GET("/v1/tags/coffee/media/recent.json", params);

实际上对Instagram进行民意调查的一句话。尝试将其包装在这样的函数中:

void getGrams() {
  client.GET("/v1/tags/coffee/media/recent.json", params);
}

然后在setup()中调用一次,然后在需要时调用...

我开始尝试在mousePressed()或keyPressed()上执行此操作,以便在您真正想要它时只触发一次

不要尝试在没有计时器的情况下使用draw()(类似if(frameCount % 5000 == 0),每隔五秒就会触发一次((这可能太快但你明白了))