Reputation: 436
I am trying to retrieve all the essential information regarding facebook posts using facebook4j.
Here is my code:
final Reading reading1 = new Reading().since("-1 month").limit(38).fields("comments", "likes", "id", "message", "caption", "description", "created_time", "from").summary();
final ResponseList<Post> feeds1 = facebook.getPosts("viratkohli", reading1);
final Reading reading2 = new Reading().since("-1 month").fields("likes", "id", "message", "created_time", "from", "story").limit(100).summary();
final ResponseList<Post> feeds2 = facebook.getPosts("viratkohli", reading2);
for (int i = 0; i < feeds2.size(); i++) {
// Get post.
Post post1 = feeds2.get(i);
// Get (string) message.
String message = post1.getMessage();
Date d = post1.getCreatedTime();
String id = post1.getId();
PagableList<Like> pl = post1.getLikes();
String story = post1.getStory();
System.out.println("post: "+i+": "+message);
System.out.println("Created time: "+d.toString());
System.out.println("id: "+id);
System.out.println("story: "+story);
System.out.println();
for(Like like: pl) {
String like_name = like.getName();
String like_id = like.getId();
System.out.println("like name: "+like_name);
System.out.println("like id: "+like_id);
System.out.println();
}
System.out.println("******************");
}
for(int j=0;j<feeds1.size();j++){
Post post2 = feeds1.get(j);
System.out.println(j);
final PagableList<Comment> comments = post2.getComments();
for(int k=0; k<comments.size(); k++) {
// Get comment.
Comment comment = comments.get(k);
String id2 = comment.getId();
String comm = comment.getMessage();
Date d2 = comment.getCreatedTime();
Integer co = comment.getLikeCount();
System.out.println("Comment "+k+": "+comm);
System.out.println("id: "+id2);
System.out.println("created time: "+d2);
}
System.out.println("~~~~~~~~~~~~~");
}
Currently, I'm able to get the following info:
max. of 100 recent posts, 25 recent likes, 25 recent comments for each post (for max. of 40 posts).
Any help on overcoming the limit issue will be greatly appreciated.
Upvotes: 1
Views: 1944
Reputation: 436
Here is the right answer:
final Reading reading = new Reading().summary().fields("id", "message", "likes.summary(true)", "shares", "comments.summary(true)").limit(20).since("-1 month");
final ResponseList<Post> feeds = facebook.getPosts("green", reading);
for (int i = 0; i < feeds.size(); i++) {
// Get post.
Post post = feeds.get(i);
Integer likesCount = post.getLikes().getSummary().getTotalCount();
Integer sharesCount = post.getSharesCount();
Integer commentsCount = post.getComments().getSummary().getTotalCount();
if(sharesCount == null)
sharesCount = 0;
if(likesCount == null)
likesCount = 0;
if(CommentsCount == null)
commentsCount = 0;
System.out.println("No. of shares for post "+i+": "+sharesCount);
System.out.println("No. of likes for post "+i+": "+likesCount);
System.out.println("No. of comments for post"+i+": "+commentsCount);
System.out.println();
Upvotes: 1
Reputation: 96151
If you only want the total number of likes, but not the individual likes - then set limit
to 0, and summary
to 1.
https://developers.facebook.com/docs/graph-api/reference/object/likes#read
Upvotes: 1