Where to get a list of ALL facebook stream posts types? - facebook-fql

I can find posts types here http://developers.facebook.com/docs/reference/fql/stream/ (in the description of field "type"), but it's definitely not full list. Because the query
SELECT post_id, type, message FROM stream WHERE filter_key in (SELECT filter_key FROM stream_filter WHERE uid=me() AND type='newsfeed') AND is_hidden = 0
returns also types 65, 161. I believe there're also some other post types, which are not documented here http://developers.facebook.com/docs/reference/fql/stream/.
Where can I get the full list?

Seems that it's a known issue on Facebook. On this page with bug description you can find more error codes:
http://developers.facebook.com/bugs/154511994682996/
from: Osborne Lopes · Assistant Manager at National Securities Depository Ltd. (NSDL)
The codes are:
11 - Group created.
12 - Event created.
46 - Status update.
56 - Post on Timeline from another user.
60 - changed profile picture.
65 - Tagged photo.
66 - Note created.
80 - Link posted ( shared Photo/Link).
128 - Video posted.
161 - Likes*.
245 - Likes a photo/Link*.
247 - Photos posted.
237 - App/Games story.
257 - Comment created.
272 - App story.
283 - Likes a Link*.
285 - Checkin to a place.
295 - Post to Timeline of a friend from other friend.
308 - Post in Group.
347 - Likes a Link*.
373 - updated cover photo.

Related

How to get more than 350 favorites with SoundCloud API?

I have about 600 likes on my soundcloud (my profile: https://soundcloud.com/bogem/likes) and I try to get full list of my likes.
But I can't get more than 300 favorites:
$ curl 'https://api.soundcloud.com/users/75306957/favorites?client_id=HIDDEN&limit=150&offset=300'
{"errors":[{"error_message":"403 - Forbidden"}]}
Even authorised:
$ curl 'https://api.soundcloud.com/me/favorites?client_id=HIDDEN&limit=150&oauth_token=HIDDEN&offset=300'
{"errors":[{"error_message":"403 - Forbidden"}]}
What do I do wrong or is there any limits?
You'll need to use the linked_partitioning pagination method which will return you a collection object that contains your likes, and a next_href that gives you the URL to paginate to.
There's a blog post about dropping support for offset-based pagination.

Facebook share count from debugger page

How can I get number of shares that is shown on facebook debugger page via API?
I've empirically found it to fit the most for comparing with share counters from some others social networks, but it looks like this number does not show up anywhere except that debugger page.
Here are some details.
By now I've found 3 API calls that return somewhat relevant data:
via graph API: http://graph.facebook.com/?id=http%3A%2F%2Farzamas.academy%2Fspecial%2Fruslit
via FQL: https://graph.facebook.com/fql?q=SELECT%20url,%20normalized_url,%20share_count,%20like_count,%20comment_count,%20total_count,commentsbox_count,%20comments_fbid,%20click_count%20FROM%20link_stat%20WHERE%20url=%27http%3A%2F%2Farzamas.academy%2Fspecial%2Fruslit%27
via some old API: https://api.facebook.com/method/links.getStats?urls=http%3A%2F%2Farzamas.academy%2Fspecial%2Fruslit&format=json
The values in second and third call are identical, for my test url http://arzamas.academy/special/ruslit the current ones are
share_count: 492, like_count: 5042, comment_count: 491, total_count: 6025
The counter from the first call is named shares and is equal to total_count from second and third call.
When you paste the url in facebook debugger and click 'Show existing scrape information', one of the first rows in table is
Canonical URL: http://arzamas.academy/special/ruslit (6025 likes, 1635 shares)
Number of likes is equal to total_count from API calls, but how can I get that 1635 shares number via API?
I've found that specifying Graph API version newer than 2.0 gives another number (share.share_count), for some reason it is the sum of both numbers, that are shown in debugger (likes + shares).
https://developers.facebook.com/tools/explorer/145634995501895/?method=GET&path=%3Fid%3Dhttp%253A%252F%252Farzamas.academy%252Fspecial%252Fruslit&version=v2.3&
So now I can get counters from two calls and subtract to get the value that I need. There are obvious cons for this method:
2 calls
token requirement
looks not very reliable
But it should work, I'll try to implement it and will mark this answer as correct if there are no additional caveats and until there is no better solution.

Facebook Open Graph API: weird behavior of parameter limit while getting a paginated user's news feed

I've written a little script in JAVA, that tests the parameter limit with four different values (10, 100, 1000 and 10000) when querying a user's news feed of Facebook using the Open Graph API and the RestFB client. As you'll see, it has a strange behavior...
Scenario:
public static void main(String[] args) {
// vars
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
FacebookClient client = new DefaultFacebookClient(accessToken);
Connection<Post> home;
List<Post> postList;
Map<String, Post> postMap;
int i;
// limits to test
String[] limits = {"10", "100", "1000", "10000"};
for (String limit : limits) {
// init list and map (looking for duplicate posts)
postList = new LinkedList<Post>();
postMap = new LinkedHashMap<String, Post>();
// get news feed
home = client.fetchConnection(id + "/home", Post.class, Parameter.with("limit", limit));
// going through pages
i = 1;
for (List<Post> page : home) {
for (Post post : page) {
// store into list
postList.add(post);
// store into map (unique post id)
postMap.put(post.getId(), post);
}
i++;
}
// sort posts by created time
Collections.sort(postList, new Comparator<Post>() {
#Override
public int compare(Post post1, Post post2) {
return post1.getCreatedTime().compareTo(post2.getCreatedTime());
}
});
// log
try {
FileWriter out = new FileWriter("log/output.txt", true);
out.write("LIMIT: " + limit + "\n");
out.write("\tPAGES: " + (i - 1) + "\n");
out.write("\tLIST SIZE: " + postList.size() + "\n");
out.write("\tMAP SIZE: " + postMap.size() + "\n");
out.write("\tOLDER POST: " + dateFormat.format(postList.get(0).getCreatedTime()) + "\n");
out.write("\tYOUGNER POST: " + dateFormat.format(postList.get(postList.size() - 1).getCreatedTime()) + "\n");
out.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
Output:
LIMIT: 10
PAGES: 7
LIST SIZE: 56
MAP SIZE: 56
OLDER POST: 2009-03-22 14:58:03
YOUGNER POST: 2012-05-11 15:48:49
LIMIT: 100
PAGES: 3
LIST SIZE: 174
MAP SIZE: 172
OLDER POST: 2012-01-12 23:01:34
YOUGNER POST: 2012-05-11 15:48:49
LIMIT: 1000
PAGES: 2
LIST SIZE: 294
MAP SIZE: 292
OLDER POST: 2009-03-22 14:58:03
YOUGNER POST: 2012-05-11 15:48:49
LIMIT: 10000
PAGES: 2
LIST SIZE: 294
MAP SIZE: 292
OLDER POST: 2009-03-22 14:58:03
YOUGNER POST: 2012-05-11 15:48:49
Interpretations and questions:
Obviously, you can't get all the posts a user has had on his news feed since his account was created. Is limit limited?
With a limit of 100, 1000 and 10000, I must have had each time two duplicated posts within the whole returned news feed (174 - 172 = 194 - 192). Why? I never saw the same post twice on my personal news feed...
With (and only with) a limit of 100, the older post I get was created during the year 2012, meanwhile the other values of limit make the query retrieving a post that was created during the year 2009. I can understand that with an upper limit (1000 or 10000), the query retrieves older posts. But why does a limit of 10 make the query retrieving an older post than a query limited by 100?
Last but not least point: I'm not getting the same number of posts. Obviously, the more the limit is high, the more the number of retrieved posts is high. What I thought first, is that the only consequence of a smaller limit was an upper number of pages (which is the case though), but that the number of retrieved posts would not change. But it does. Why? That said, the number of posts seems to converge between a limit of 100 and 1000, because the number of posts is identical with a limit of 1000 and a limit of 10000.
PS: specifying a since and/or a until parameter to the query doesn't change anything.
Any answer/comment is welcome :)
Cheers.
Edit:
This is my best recall:
LIMIT: 200
PAGES: 3
LIST SIZE: 391
MAP SIZE: 389
OLDER POST: 2012-01-27 14:17:16
YOUGNER POST: 2012-05-11 16:52:38
Why 200? Is it specified anywhere in the documentation?
Its not in documentation but personally I have tested following for my project.
Facebook limit is limited to 500 posts. No matter you put a limit higher than 500 it will fetch only 500 results max. Try with 500 (or more), you will get maximum posts.
You wont get 500 posts every time but will get above 490 posts in general.
Some posts get filtered by various reasons (like privacy, blocked user, not suitable for specific region and other things)
This answers your 1st and 4th quetion.
For question no. 2 , I do not work in java, so I cant say if there's a prob in your code/logic or what your code is doing.
For question no. 3 , God help facebook !
Edit
For 4th problem, you may be hitting the queries/hour limit of graph api (facebook uses it to prevent spamming, you cant query apis frequently in quick succession)
Also,
this is why, you do not get all results returned by facebook.
(if you specified a limit of “5” but the five posts returned are not
visible to the viewer, you will get an empty result set.)
In addition to the limits mentioned in the documentation for each of
the tables and connections listed above, it is helpful to know that
the maximum number of results we will fetch before running the
visibility checks is 5,000.
Reference: Paging with graph api and fql
Also, there is a limit on no of results for a particular table. You can get a detail about them on respective fql tables.
For stream table (the one for posts/feed),
Each query of the stream table is limited to the previous 30 days or
50 posts, whichever is greater, however you can use time-specific
fields such as created_time along with FQL operators (such as < or >)
to retrieve a much greater range of posts.
Reference: Fql stream table
Look here too:
Facebook FQL stream limit?
There is an ongoing bug in Facebook open graph API paging having to do with the limit parameter. The higher the limit, the more pages of posts --- as if a lower limit also culls a sampling of posts. The problem has surfaced and retreated ever since the post search function was down for a month in September.
A new bug has surfaced: at present a post search without an access_token and a small limit (like 12) will return few and sparsely populated results pages. The same search made with the access_token given in the API documentation example will give full pages of 12 results +/- and no skipping. I have no idea what kind of access_token they use, but no attempts on my part have duplicated their results. The post search without access token is more or less non-functional (again)!
There could be some logic on facebook side to prevent data mining. Try add some delay while going through pages and see if better.

How to get numbers of shared item through facebook share button?

I am using facebook's below code to share particular urls.
http://www.facebook.com/sharer.php?u={URL}.
I want to count which my url is most shared by user.
So how could I get the most shared urls? Is is possible to get such things?
for example:
I am sharing urls like
1) www.mysite.com/page1.html (shared 2 times)
2) www.mysite.com/page2.html (shared 5 times)
3) www.mysite.com/page3.html (shared 10 times)
Is it possible that i can get the counter of shared for each page?
Waiting for reply....
Thanks,
Niko.
This is possible through the Facebook api
just use this
http://graph.facebook.com/?id=http://www.google.com
and you will get
"id": "http://www.google.com",
"shares": 9913603,
"comments": 926
Below 2 way we can get counter :
1) http://graph.facebook.com/?id=http://www.google.com
2) https://api.facebook.com/method/links.getStats?urls=http://www.google.com&format=json
First (1), will give total counter
Second (2), will return
share_count,
like_count,
comment_count,
total_count,
click_count,
comments_fbid,
commentsbox_count

Facebook - How to get the comments of a fb:comment

I need to get the comments posted on a fb:comments widget. Here is what I've tried:
http://graph.facebook.com/comments?id={{ url_of_the_page }} - Returns an empty list
Executing the following FQL
SELECT post_fbid, fromid, object_id, text, time
FROM comment
WHERE object_id IN
(SELECT comments_fbid
FROM link_stat
WHERE url ={{ page_url }}) - Return an empty response with the fql header
I'm beginning to think that this is not possible. Am I missing something or is this indeed not possible?
That is how you do it. What is the url you are trying? For example, this random Techcrunch article works in the same way as you describe:
http://graph.facebook.com/comments?id=http://techcrunch.com/2011/09/20/digg-experiments-with-topic-newsrooms-aggregates-news-by-most-meaningful-stories/