Extraire les nom des amis facebook qui ont fait des aimes

Résolu/Fermé
intissaroa Messages postés 24 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 19 juillet 2017 - 4 juin 2017 à 00:44
intissaroa Messages postés 24 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 19 juillet 2017 - 19 juil. 2017 à 13:30
Bonjour,
j'ai essayé de retrouver les noms des amis qui ont fait des aimes sur les postes de facebook. voici le code:
public class main {
public static void main(String[] args) throws IOException {
String accessToken = "EAACEdEoseZBhf0e4WXHuNaItvLeoAZD";
FacebookClient fbclient = new DefaultFacebookClient(accessToken);
Connection<Post> result = fbclient.fetchConnection("me/feed", Post.class);
int counter = 0;
for (List<Post> page : result) {
for (Post aPost : page) {
Date time = aPost.getCreatedTime();
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, -10);
Date db = c.getTime();
{
if (!time.before(db)) {
System.out.println("created time " + time + "\r\n");
System.out.println("Id Poste: fb.com/" + aPost.getId() + "\r\n");
System.out.println(" L(userx) " + aPost.getLikes());
counter++;
} else {
System.out.println("date hors période" + "\r\n");
}
}
}
}
}

le resultat de ce code est comme suit:
Likes[data=[NamedFacebookType[id=758248010897019 metadata=null name=Toka Ep Bouzidi type=null], NamedFacebookType[id=836615436419028 metadata=null name=Basma Youssfi type=null], NamedFacebookType[id=200283693703077 metadata=null name=Sahar Hmidet type=null], NamedFacebookType[id=1589600437936215 metadata=null name=Fifi Daly Omm Omar type=null], NamedFacebookType[id=2285678608326303 metadata=null name=Rà Nou type=null], NamedFacebookType[id=149760905397346 metadata=null name=Awatef Cherif type=null], NamedFacebookType[id=197868283998495 metadata=null name=Samar Maamouri type=null], NamedFacebookType[id=191663454652822 metadata=null name=Ben Ali Fatma Benali type=null], NamedFacebookType[id=1594576777456573 metadata=null name=Rania Trigui type=null], NamedFacebookType[id=10204633957434960 metadata=null name=Gasmi Ghassen type=null]] totalCount=0]
===================================


je veux extraire seulement les nom de mes amis..
merci.
A voir également:

4 réponses

forum92 Messages postés 220 Date d'inscription lundi 6 juillet 2015 Statut Membre Dernière intervention 14 août 2018 133
10 juin 2017 à 02:35
Bonjour,
Donc un tableau qui contient name :
tableau[name]
0
Utilisateur anonyme
10 juin 2017 à 23:51
Avec du Regex tu peux :
name=(.+?) type

Test ici :
https://regex101.com/
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
11 juin 2017 à 00:06
Bonjour,

Au lieu de faire
System.out.println(" L(userx) " + aPost.getLikes());
et essayer d'extraire le texte qui en découle, utilise directement l'objet aPost.getLikes() pour récupérer uniquement les données que tu veux.

Exemple :
aPost.getLikes().getData().forEach(data ->
    System.out.println(data.getName())
);
0
intissaroa Messages postés 24 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 19 juillet 2017
15 juin 2017 à 02:02
bonjour j'ai essayé le code suivant:
 aPost.getLikes().getData().forEach(data ->out.write(data.getName()+"\r\n"));

mais il me retourne l'esrreure suivante.
Exception in thread "main" java.lang.NullPointerException
at main.main(main.java:54)
C:\Users\Asus\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 3 seconou est le probléme.
merci d'avance.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
15 juin 2017 à 08:16
Si
data
peut valoir null il faut le vérifier avant d'appeler
getName()
sur un objet qui n'existe pas (ce qui provoque un NullPointerException).

aPost.getLikes().getData().stream()
    .filter(data -> data != null)
    .map(data -> data.getName())
    .forEach(name -> out.write(name + "\r\n"));
0
intissaroa Messages postés 24 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 19 juillet 2017 > KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024
15 juin 2017 à 10:11
merci Kx
j'ai essayé ce code mais il me retourne le même problème.
Exception in thread "main" java.lang.NullPointerException
at main.main(main.java:54)
C:\Users\Asus\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 3 seconds)
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015 > intissaroa Messages postés 24 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 19 juillet 2017
Modifié le 15 juin 2017 à 10:31
Essayes ça et regarde lequel vaut null... et pourquoi.

System.out.println("aPost: " + aPost);
System.out.println("getLikes: " + aPost.getLikes());
System.out.println("getData: " + aPost.getLikes().getData());
0
intissaroa Messages postés 24 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 19 juillet 2017 > KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024
Modifié le 15 juin 2017 à 10:47
System.out.println("getLikes: " + aPost.getLikes());

l' instruction renvoient nulle. car il y a des poste sur Facebook qui peuvent avoir 0 like.
System.out.println("getData: " + aPost.getLikes().getData());

cet instruction renvoi
Exception in thread "main" java.lang.NullPointerException

s'il n y a pas de like sur la poste de Facebook
0
intissaroa Messages postés 24 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 19 juillet 2017
10 juil. 2017 à 12:37
@KX
bonjour, j'ai fait le code suivant:

import com.restfb.Connection;
import com.restfb.DefaultFacebookClient;
import com.restfb.FacebookClient;
import com.restfb.types.Post;
import java.io.*;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Optional;

public class main {

public static void main(String[] args) throws IOException {
String accessToken ="EAACEdEose0cBANEXpFEXQZALRTI8k84B2po0w";
FacebookClient fbclient = new DefaultFacebookClient(accessToken);
Connection<Post> result = fbclient.fetchConnection("me/feed",Post.class );
int counter = 0;
for(List<Post> page : result)
{
for(Post aPost : page)
{
Calendar c = Calendar.getInstance();
Calendar a = Calendar.getInstance();
a.add(Calendar.YEAR, -10);
Date Fin = a.getTime();
Date db = c.getTime();
Date time = aPost.getCreatedTime();
double CONST_DURATION_OF_DAY = 1000l * 60 * 60 * 24;
double diff = Math.abs(db.getTime() - time.getTime());
double numberOfDay = Math.round((diff/CONST_DURATION_OF_DAY) *
100) / 100;
double numberofyear = (double) Math.round((numberOfDay/356) * 100)
/ 100;
double dbwint = (100-(numberofyear*10))/100 ;
double Wint = (double) Math.round( dbwint * 100) / 100;

if(!time.before(Fin))
{

System.out.println("created time "+time+"\r\n");
System.out.println("Id Poste: fb.com/"+aPost.getId()+"\r\n");
System.out.println("le poid de l'interaction Wint "+Wint+"\r\n");
Optional.ofNullable(aPost .flatMap(post -> Optional.ofNullable(post.getLikes()))
.flatMap(likes -> Optional.ofNullable(likes.getData()))
.ifPresent(likes -> likes.stream()
.map(likeItem -> Optional.ofNullable(likeItem.getName()))
.forEach(optName -> optName.ifPresent(name ->
System.out.println(name + "\r\n"))));

System.out.println("==================================="+"\r\n");

counter++;

}
else {System.out.println("date hors période"+"\r\n");}

}
System.out.println("number of results"+counter);

}
}
}
}



l'output est comme suit:

created time Thu Jun 15 03:52:53 CEST 2017 
Id Poste: fb.com/1562752627337463_1951227231823332
le poid de l'interaction Wint 1.0
Fifi Daly Omm Omar
Toka Ep Bouzidi
===================================
created time Wed Jun 14 21:14:14 CEST 2017
Id Poste: fb.com/1562752627337463_1951069731839082
le poid de l'interaction Wint 0.9
Sami Dali
Toka Ep Bouzidi
Àmine OuLéd Ahméd
Faiza Ouled Ahmed
Rania Trigui
Hàifà Gassoumi
Awatef Cherif
Dali Montassar
Souad Brahmi
Nabiha Ben Aissa
Deli Maha
===================================
created time Wed Jun 14 19:39:27 CEST 2017
Id Poste: fb.com/149760905397346_444326185940815
le poid de l'interaction Wint 0.9

===================================
created time Wed Jun 14 01:26:57 CEST 2017
Id Poste: fb.com/1562752627337463_1950398421906213
le poid de l'interaction Wint 0.7
Nesrine Jalleli
Esmeralda Sagittaire
Aymen J'rb
===================================


mon probléme c'est comment calculer la somme de poid pour chaque ami:
exemple: pour l'ami Toka Ep Bouzidi , le poid = 1.0+0.9= 1.9.
merci bien de m'aider.
0