meta données pour cette page
  •  

Ceci est une ancienne révision du document !


/** * djData follow me on Facebook! * ArtHackDay - Sight and Sound edition - PER CAPITA * a project by userZero & linse * 01/10/16 */ import oscP5.*; import netP5.*;

OscP5 oscP5; NetAddress myRemoteLocation;

String access_token =“EAACEdEose0cBAOZA2CnpqAZAZBI67DeSpKycTcFRIuhtr1LLOHzsoc41ZBn95rdcdZCCCsBGlWmbHZC0qER7qvkTkMlAeM2NNjhzhACwmriLkhE8EqSQ5U9AGq58eDomeQ0eHZCZBWtEzmiBnFE2xEugrtFPZA0bXJeRpIfhXaM0OWgZDZD”; int lastSecond = 0; int likes = 0; ArrayList<String> messageList;

ArrayList<String> musicGenres;

void setup() {

oscP5 = new OscP5(this,4343);
// connect to pd Patch
myRemoteLocation = new NetAddress("127.0.0.1",4242);
messageList = new ArrayList();
loadMusic("/home/mxd/arthackday/sounds");

}

void draw() {

if(second()%3 == 1 && lastSecond != second()){
  pollFeed();
  pollLikes();
}

}

void loadMusic(String _dir){

String[] _files = split(getFileNames(_dir), ' ');
musicGenres = new ArrayList();
String[] _tmp;
for(String _s : _files){
  _tmp = split(_s, '.');
  if(_tmp.length > 1){
    if(_tmp[1].equals("wav")) musicGenres.add(_tmp[0]);
  }
}
println("////////////////////// MUSIC /////////////////////////");
println(musicGenres);
println("//////////////////////////////////////////////////////");

}

public String getFileNames(String _dir){

File userData = new File(_dir);
File[] listOfFiles = userData.listFiles();
String _out = "";
for (int i = 0; i < listOfFiles.length; i++) {
  if (listOfFiles[i].isFile()) {
    _out +=  listOfFiles[i].getName()+" ";
  } else if (listOfFiles[i].isDirectory()) {
  }
}
return _out;

}

public void checkForMusic(String _message){

String _keyWords[] = _message.replaceAll("[^a-zA-Z0-9_]", "").toLowerCase().split("_");//.replaceAll(".","_")
println("///////////////////////////////////////////////");
for(String _word : _keyWords){
  println(_word);
  for(String _genre : musicGenres){
    if(_word.equals(_genre)) play(_word);
  }
}
println("///////////////////////////////////////////////");

}

void pollLikes(){

String response[] = loadStrings("https://graph.facebook.com/?fields=likes&id=http://www.facebook.com/djdaataa&access_token="+access_token);
lastSecond = second();
if(response == null){
  println("request FAIL");
  return;
}
String str = "";
for(int i = 0; i < response.length;i++)
str+=response[i];
JSONObject json = JSONObject.parse(str);
like(json.getInt("likes"));

}

void pollFeed(){

String response[] = loadStrings(" https://graph.facebook.com/1272223639476617/feed?access_token="+access_token);
lastSecond = second();
if(response == null){
  println("request FAIL");
  return;
}
println("GOT response");
String str = "";
for(int i = 0; i < response.length;i++)
str+=response[i];
JSONObject json = JSONObject.parse(str);
JSONArray data = json.getJSONArray("data");
ArrayList<String> _polledMessages = new ArrayList();
for(int i = 0; i < data.size(); i++){
  if(!data.getJSONObject(i).isNull("message")){
    JSONObject from = data.getJSONObject(i).getJSONObject("from");
    String _mess = from.getString("name")+" says "+data.getJSONObject(i).getString("message");
    _polledMessages.add(_mess.replaceAll(" ", "_"));
  }
}
receiveMessages(_polledMessages);

}

void receiveMessages(ArrayList<String> _polledMessages){

int _newCount = _polledMessages.size() - messageList.size();
if(_polledMessages.size() > 0 && messageList.size() > 0)
if(!_polledMessages.get(0).equals(messageList.get(0))) _newCount = 1;
if(_newCount != 0){
  messageList = _polledMessages;
  String _mess = "";
  for(int i = 0; i < _newCount; i++){
    _mess += messageList.get(i)+" ";
  }
  post(_mess);
}

}

public void play(String _genre){

print("PLAYING ");
println(_genre);
OscMessage mess = new OscMessage("/datadj/play");
mess.add(_genre+".wav");
oscP5.send(mess, myRemoteLocation);

}

void post(String _mess){

println("SENDING : "+ _mess);
OscMessage mess = new OscMessage("/datadj/posts");
mess.add(_mess);
oscP5.send(mess, myRemoteLocation);
checkForMusic(_mess);

}

void like(int _cnt){

if(_cnt != likes) {
  likes = _cnt;
  println("LIKES : "+_cnt);
  OscMessage mess = new OscMessage("/datadj/likes");
  mess.add(_cnt);
  oscP5.send(mess, myRemoteLocation);
}

}

set new token LIVE void oscEvent(OscMessage theOscMessage) { if(theOscMessage.checkAddrPattern(“/token”)==true) { access_token = theOscMessage.get(0).stringValue(); println(“NEW TOKEN : ”+access_token); } }