Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2013-06-17 14:07:42 Processing et Twitter4j

Yuki
membre
Date d'inscription: 2013-06-17
Messages: 11

Processing et Twitter4j



Bonjour,

Depuis quelques jours, j'essai de créer un programme en processing avec l'aide de la librairie twitter4j, je veux que le programme récupère des info ou des mots clés dans des tweets et les affichent de manière "artistique"
Mon problème, c'est que le programme plante avec l'erreur "the function getFromUser() does not exist."
Voici mon code (j'utilise processing 2 et twitter4j 3.0.3) :

ArrayList<String> words = new ArrayList();
 
void setup() {
  //Set the size of the stage, and the background to black.
  size(550,550);
  background(0);
  smooth();
  
  //Credentials
  ConfigurationBuilder cb = new ConfigurationBuilder();
  cb.setOAuthConsumerKey("xxxxxxx");
  cb.setOAuthConsumerSecret("xxxxxx");
  cb.setOAuthAccessToken("xxxxxx");
  cb.setOAuthAccessTokenSecret("xxxxxx");
 
  //Make the twitter object and prepare the query
  Twitter twitter = new TwitterFactory(cb.build()).getInstance();
  Query query = new Query("#OWS");
  query.count(100);
 
  //Try making the query request.
  try {
    QueryResult result = twitter.search(query);
    ArrayList tweets = (ArrayList) result.getTweets();
 
    for (int i = 0; i < tweets.size(); i++) {
      Status t = (Status) tweets.get(i);
      String user = t.getFromUser();
      String msg = t.getText();
      Date d = t.getCreatedAt();
      println("Tweet by " + user + " at " + d + ": " + msg);
       
      //Break the tweet into words
      String[] input = msg.split(" ");
      for (int j = 0;  j < input.length; j++) {
       //Put each word into the words ArrayList
       words.add(input[j]);
      }
    };
  }
  catch (TwitterException te) {
    println("Couldn't connect: " + te);
  };
}
 
void draw() {
  //Draw a faint black rectangle over what is currently on the stage so it fades over time.
  fill(0,1);
  rect(0,0,width,height);
   
  //Draw a word from the list of words that we've built
  int i = (frameCount % words.size());
  String word = words.get(i);
   
  //Put it somewhere random on the stage, with a random size and colour
  fill(255,random(50,150));
  textSize(random(10,30));
  text(word, random(width), random(height));
}

Il est peut être utile de dire qu'avant que cette erreur arrive, j'ai du changer la classe Tweet en "Status"
et la fonction setRpp(int) en count(int) a cause des changements entre les différentes versions de T4J.
Merci d'avance

Cordialement, Yuki


Evil rats on no star live.

Hors ligne

 

#2 2013-06-17 14:16:09 Re : Processing et Twitter4j

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: Processing et Twitter4j



Bonsjours...

As-tu suivis mes conseils donnés ici ?


L'Amour au Peuple !

Hors ligne

 

#3 2013-06-17 15:39:43 Re : Processing et Twitter4j

Yuki
membre
Date d'inscription: 2013-06-17
Messages: 11

Re: Processing et Twitter4j



Re, je suis allé voir tes conseil, et j'ai réussi cette étape, mais j'ai maintenant un probleme avec cette fonction     "QueryResult result = twitter.search(query);" j'ai l'erreur suivante : "ClassNotFoundException: com.google.appengine.api.urlfetch.HTTPRequest" et je ne comprend pas vraiment pourquoi....


Evil rats on no star live.

Hors ligne

 

#4 2013-06-17 18:31:13 Re : Processing et Twitter4j

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: Processing et Twitter4j



Voilà le code auquel Mushussu et moi sommes arrivé pour n'écouter que les nouveaux tweets parmi les 10 derniers...
Je viens de le tester, il fonctionne chez moi : P5 2.0 // linux Mint // twitter4j-3.0.3

Bon courage...

Code (processing) :

Dernière modification par Olivier (2013-06-17 18:35:05)


L'Amour au Peuple !

Hors ligne

 

#5 2013-06-17 19:51:11 Re : Processing et Twitter4j

Yuki
membre
Date d'inscription: 2013-06-17
Messages: 11

Re: Processing et Twitter4j



Re, merci de ta réponse, mais avec ton code, j'ai exactement la même erreur >.< je ne comprends vraiment pas sad
Si quelqu'un a une solution à ça merci d'avance, je vais essayer sur une partition linux (je suis en ce moment sur windows)

Dernière modification par Yuki (2013-06-17 19:51:33)


Evil rats on no star live.

Hors ligne

 

#6 2013-06-18 12:03:06 Re : Processing et Twitter4j

Yuki
membre
Date d'inscription: 2013-06-17
Messages: 11

Re: Processing et Twitter4j



J'ai finalement résolut mon problème : le programme ne se lançais pas car il n'était pas lancé sur une plateforme "GAE", il suffisait donc de supprimer les fichiers du type twitter4j-appengine-X.X.X.jar et de relancer processing.


Evil rats on no star live.

Hors ligne

 

#7 2013-06-18 14:24:50 Re : Processing et Twitter4j

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: Processing et Twitter4j



Chouette... smilesmile

Quand ton projet aura abouti, n'hésites pas à nous le présenter dans la section Codes et Travaux.


L'Amour au Peuple !

Hors ligne

 

#8 2013-06-21 10:13:02 Re : Processing et Twitter4j

Yuki
membre
Date d'inscription: 2013-06-17
Messages: 11

Re: Processing et Twitter4j



Salut, j'ai presque fini mon projet mais je ne parviens pas a faire quelque chose, est ce que tu sais comment obtenir le nombre d'éléments contenue dans une arraylist et le mettre dans une variable ?


Evil rats on no star live.

Hors ligne

 

#9 2013-06-21 12:15:06 Re : Processing et Twitter4j

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: Processing et Twitter4j



Il faut utiliser .size() ...

Mais je pense que n'importe quel exemple d'utilisation d'ArrayList t'aurais donné la réponse... tongue


L'Amour au Peuple !

Hors ligne

 

#10 2013-06-23 21:22:08 Re : Processing et Twitter4j

Yuki
membre
Date d'inscription: 2013-06-17
Messages: 11

Re: Processing et Twitter4j



^^' merci bien :p


Evil rats on no star live.

Hors ligne

 

#11 2013-06-26 12:13:42 Re : Processing et Twitter4j

Yuki
membre
Date d'inscription: 2013-06-17
Messages: 11

Re: Processing et Twitter4j



Maintenant mon programme fonctionne parfaitement, il répuere les tweets et agit en fonction, mais il ne fait qu'une requete, alors que moi je voudrais qu'il lise les tweets en stream, j'ai un programme "exemple" de stream mais une erreur revien a chaque fois... : sur cette ligne "TwitterStream twitter = new TwitterStreamFactory().getInstance();" processing me retourne "cannot find a class or type named twitterstream", je comprend pas trop...
Voila un extrait de mon code :

Code (java) :

static String OAuthConsumerKey = "***********************";
static String OAuthConsumerSecret = "**************************";

static String AccessToken = "****************************";
static String AccessTokenSecret = "*************************";

// if you enter keywords here it will filter, otherwise it will sample
String keywords[] = {
};



TwitterStream twitter = new TwitterStreamFactory().getInstance();
PImage img;
boolean imageLoaded;

void setup() {
  size(800, 600);
  noStroke();
  imageMode(CENTER);

  connectTwitter();
  twitter.addListener(listener);
  if (keywords.length==0) twitter.sample();
  else twitter.filter(new FilterQuery().track(keywords));
}

void draw() {
  background(0);
  if (imageLoaded) image(img, width/2, height/2);
}

// Initial connection
void connectTwitter() {
  twitter.setOAuthConsumer(OAuthConsumerKey, OAuthConsumerSecret);
  AccessToken accessToken = loadAccessToken();
  twitter.setOAuthAccessToken(accessToken);
}

// Loading up the access token
private static AccessToken loadAccessToken() {
  return new AccessToken(AccessToken, AccessTokenSecret);
}

// This listens for new tweet
StatusListener listener = new StatusListener() {
  public void onStatus(Status status) {

Evil rats on no star live.

Hors ligne

 

#12 2013-06-26 14:05:52 Re : Processing et Twitter4j

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: Processing et Twitter4j



Le dernier bout de code que je t'ai posté lit les tweets toutes les 4 secondes en n'affichant que ceux qu'il n'a pas déjà affiché...
Du steam en gros... tongue

Sachant qu'en dessous de 4 secondes, l'API de Twitter te kick...

Je ne suis donc pas sûr que tu puisses vraiment obtenir plus proche du temps réel que notre solution.
Je ne dis pas que c'est la meilleure façon de le faire (visiblement il y a une solution interne à la lib), mais le résultat sera difficilement perfectible...

Bon courage... smile

Dernière modification par Olivier (2013-06-26 14:06:34)


L'Amour au Peuple !

Hors ligne

 

#13 2013-06-26 14:55:45 Re : Processing et Twitter4j

Yuki
membre
Date d'inscription: 2013-06-17
Messages: 11

Re: Processing et Twitter4j



ok, merci je vais regarder ça de plus pres :p


Evil rats on no star live.

Hors ligne

 

#14 2013-06-29 13:49:09 Re : Processing et Twitter4j

Yuki
membre
Date d'inscription: 2013-06-17
Messages: 11

Re: Processing et Twitter4j



Salut, ton programme avec le stream est bien mais j'obtient cette erreur : "IndexOutOfBoundsException: Index: 36 , Size: 36" a cette ligne :   Status t = (Status)tweets.get(i); 
voila un extrait du programme, merci d'avance...

Code (processing) :


Evil rats on no star live.

Hors ligne

 

#15 2013-06-29 16:33:01 Re : Processing et Twitter4j

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: Processing et Twitter4j



Yep...
Effectivement...

Je ne sais pas si c'est liée, mais, a priori, le code que je t'ai donné gère mal les tweets identiques qui floodent...
Nous n'avions pas ce pb sur le hashtag que nous utilisions...

J'ai une autre version du code qui gère le stream de tweets, mais je ne pourrais pas te le donner avant lundi (autre ordi).
(Mushussu si tu passes par là... smile )

Bon courage...


L'Amour au Peuple !

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2025