B'soir ! Dans le cadre d'un petit projet je souhaite renvoyer le contenu de tweets (contenant un #adéfinir ), en udp sur le port 6400. Du coup j'ai testé quelques bouts de codes trouvés par ci par là http://codelab.fr/4537 mais rien ne fonctionne... J'imagine que "tweetText" n'est pas approprié, mais j'en sais rien ...
citation :import twitter4j.conf.*; import twitter4j.internal.async.*; import twitter4j.internal.org.json.*; import twitter4j.internal.logging.*; import twitter4j.json.*; import twitter4j.internal.util.*; import twitter4j.management.*; import twitter4j.auth.*; import twitter4j.api.*; import twitter4j.util.*; import twitter4j.internal.http.*; import twitter4j.*; import twitter4j.internal.json.*; import java.util.*; import hypermedia.net.*; UDP udps; Twitter twitter; // objet twitter String searchString = "#11novembre"; // utilisé dans la recherche de tweets List<Status> tweets; // liste contenant 100 tweets PImage img; // conteneur de l'image de profil String imageUrl; // url de l'image de profil String tweetText; // le texte du tweet float xPos, yPos; // coordonnées de notre tweet float imageWidth, imageHeight; // taille de l'image de profil int currentTweet = 0; //variable nous indiquant quel tweet doit être affiché int tweetRows, tweetColumns; //variables servant a placer le tweet dans le sketch int tweetRowsCount = 0, tweetColumnsCount = 0; //variables indiquant sur quelle ligne et sur quelle colone il faut afficher le tweet //Mensuration du tweet a afficher int tweetWidth ; // largeur total du tweet + photo affiché int tweetHeight ; // taille de l'image de profil int tweetTextSize ; // place occupé par le text du tweet int frameNumber = 0; void setup(){ //variables d'affichages background(0); // couleur du fond d'ecran textSize(11); // taille du texte textLeading(11); //taille des interlignes du texte tweetColumns = 5; //nombre de collones a afficher dans le sketch tweetRows = 16; // nombre de lignes a afficher dans le sktech tweetWidth = 278; // largeur total du tweet + photo affiché tweetHeight = 48; // taille de l'image de profil tweetTextSize = tweetWidth - tweetHeight ; // place occupé par le text du tweet // la taille du sketch est dynamique et depend du nombre de collones, de lignes ainsi que de la taille des twetts que nous affichons size(tweetColumns*tweetWidth,tweetRows*tweetHeight); //preparation des identifiants de l'application ConfigurationBuilder cb = new ConfigurationBuilder(); cb.setOAuthConsumerKey(" "); cb.setOAuthConsumerSecret(" "); cb.setOAuthAccessToken(" "); cb.setOAuthAccessTokenSecret(" "); TwitterFactory tf = new TwitterFactory(cb.build()); //création de l'objet twitter qui servira tout au long du sketch twitter = tf.getInstance(); //fonction appellé pour la premiere fois afin de charger des tweets dans notre liste getNewTweets(); //la fonction refreshTweets est ensuite appellé dans un thread a par afin de ne pas ralentir le sketch lorsque de nouveaux tweets sont chargé dans le tableau thread("refreshTweets"); } void draw(){
// si le compteur "curentTweet" depasse le total de tweets dans la list nous faisons une remise a zero du sketch if (currentTweet >= tweets.size()){ currentTweet = 0; tweetColumnsCount = 0; tweetRowsCount = 0; background(0); } // contient le tweet à afficher pour cette frame Status status = tweets.get(currentTweet); currentTweet ++; //------------------------------------------------ //On determine la position du tweet xPos = tweetColumnsCount*tweetWidth; yPos = tweetRowsCount*tweetHeight; //image de profil imageUrl = status.getUser().getProfileImageURL(); img = loadImage(imageUrl,"jpg"); imageWidth = img.width; imageHeight = img.height; // texte du tweet tweetText = status.getText(); //Affichage du tweet // fill(0); // image(img, xPos, yPos); text(tweetText ,xPos+tweetHeight, yPos, tweetTextSize, tweetHeight);
// determiner la position du prochain tweet if(tweetColumnsCount%tweetColumns == 0 && tweetColumnsCount !=0){ tweetColumnsCount = 0; tweetRowsCount ++; if(tweetRowsCount%tweetRows ==0 && tweetRowsCount !=0){ tweetRowsCount = 0; } } else{ tweetColumnsCount++; } } //fonction qui vient chercher les 100 derniers tweets void getNewTweets(){ try { Query query = new Query(searchString); query.count(100); QueryResult result = twitter.search(query); tweets = result.getTweets(); } catch (TwitterException te) { println("Echec de la recherche de tweets: " + te.getMessage()); exit(); } } //charge de nouveau tweets dans la list "tweets" toutes les void refreshTweets(){ while (true){ getNewTweets(); println("tweets mis a jours"); delay(30000); String ip = "127.0.0.1"; // the remote IP address int port = 6400; // the destination port udps.send( tweetText, ip, port ) ;
} }
|
salut lv-esad,
je vais regarder le tuto dont tu t'es servi.
pour ma part, je me suis un peu intéresser à ce sujet pour un projet professionnel.
j'avais retenu une autre solution (plus simple?), sur la base de ce tuto http://www.learningprocessing.com/tutorials/php/
avec une partie server en PHP pour récupérer les twit (avec l'api REST qui marche pas terrible, faut que j'essaie l'api STREAM, qui sont 2 api de twitter) --> je nourris une BDD, MySql, --> je sauve le dernier twitt dans un fichier .txt (en fonction de la réponse du client, voir ci-dessous) et côté client : --> processing récupére le fichier .txt, et l'affiche avec une petite anim --> processing previens le serveur via l'upload du autre fichier .txt de la récup du dernier twitt
cordialement.
|