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 ) ;
}
}
Dernière modification par lv-esad (2013-11-13 20:49:52)
Hors ligne
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.
Hors ligne
Pages: 1