Catégories
Liens
Ceci est une ancienne révision du document !
Voici une nouvelle version du sketch se connectant à toutes les pages suivantes : https://twitter.com/afpfr https://twitter.com/BFMTV https://twitter.com/franceinfo https://twitter.com/le_Parisien sans passer par l'API de Twitter et permettant d'extraire le texte des tweets enfouis dans les balises html. Moins de résultats qu'avec l'API, on pouvait s'en douter. En pj un fichier txt donnant les résultats de tous les tweets récupérés un 16 Mars à 21h. Sera ce suffisant pour repérer de manière significative les mots "tendance" ? Le code Processing (un peu raide) que je transmets à Nicolas Braun, il choisira en justifiant d'utiliser ou pas l'API : import java.util.regex.Matcher; import java.util.regex.Pattern; StringList tweetsAff = new StringList(); int yAffDebut = 14; void setup() { size(800, 600); PFont f = createFont("ArialUnicodeMS", 24); textFont(f); textAlign (LEFT, LEFT); textSize(12); fill(0); nouveauxTweets(); String[] aEnregistrer = new String[tweetsAff.size()]; for (int i = 0; i<tweetsAff.size(); i++) { aEnregistrer[i] = tweetsAff.get(i); } saveStrings("tweets.txt",aEnregistrer); } void draw() { background(255); for (int i = 0; i<tweetsAff.size(); i++) { text(tweetsAff.get(i), 10, yAffDebut+14*i); } } void nouveauxTweets() { tweetsAff = new StringList(); String [] sourceTweet = {"afpfr", "BFMTV", "franceinfo", "le_parisien"}; for (int s = 0; s < sourceTweet.length; s++) { String lines[] = loadStrings("https://twitter.com/" + sourceTweet[s]); String html = join(lines, "\n"); String[][] mLigne = matchAll(html, "<div class=\"js-tweet-text-container\">(.*?)</div>"); for (int i = 0; i<mLigne.length; i++) { String texte = mLigne[i][1].replaceAll("\\<.*?>", ""); texte = remplaceHtml(texte); texte = finTweet(texte); print(texte); tweetsAff.append(texte); } } } String remplaceHtml(String texte) { String[] charHtml = {"'", """, "#"}; String[] remplace = {"'", "\"", ""}; for (int i=0; i<charHtml.length; i++) { String REGEX = charHtml[i]; String REPLACE = remplace[i]; Pattern p = Pattern.compile(REGEX); Matcher m = p.matcher(texte); texte = m.replaceAll(REPLACE); } return texte; } String finTweet(String texte) { String[] baliseFin = {"http", "AFP"}; for (int i = 0; i< baliseFin.length; i++) { int pFin = texte.indexOf(baliseFin[i]); if (pFin > 0) { texte = texte.substring(0, pFin); } } return texte; } void keyPressed() { if (key == CODED) { if (keyCode == UP) { yAffDebut +=5; } if (keyCode == DOWN) { yAffDebut -=5; } } }