tam7t/photograbber

Maximum of 400 photos can be retrieved

Opened this issue · 10 comments

Discussed in "400 tagged photos" issue at http://photograbber.org/known-issues.html.

Duplicate of https://code.google.com/p/photograbber/issues/detail?id=67&sort=status.

Reported by nos...@gmail.com, Jul 8, 2011

What steps will reproduce the problem?

  1. Run photograbber
  2. compare photograbber's numbers to Facebook's number of photos of you
  3. The numbers are different

What is the expected output? What do you see instead?

I expect it to grab all photos where I am tagged but it does not. Photograbber grabs 1015 > photos but if you view my profile, it shows 1374 photos of me.

Comment by to...@ourbunny.com, Mar 16, 2013

I believe the original issue was a permissions problem, but it seems facebook has changes something to where only 400 most recent tagged photos are returned by their API. I will look into this further and likely file a bug with facebook.

@tam7t: Great work on PhotoGrabber!

I'm keen to look into this and see if there's anything we can do to work around the Facebook API limitations.

@tam7t: Before I get stuck in I was wondering if you had had any luck so far looking into it and any pointers for getting started? Specifically, I was wondering if you would mind pointing me in the direction of the documentation for the API call that appears to be limited and the call site?

Cheers!

Relevant stackoverflow: http://stackoverflow.com/questions/14040405/photo-tags-query-response-of-max-400-elements

Some older information on the way Facebook limit's and permissions work: https://developers.facebook.com/blog/post/478/

This photo app also runs into the 400 tagged photo limit: https://play.google.com/store/apps/details?id=com.giannz.photodownloader

I have done a few searches of the Facebook API bug tracker and haven't found the 400 photo limit mentioned there or in any of Facebook's documentation. I haven't gotten around to filing a bug report myself either, so that might be a good first step.

Pseudocode of a possible work around:

tag_list = []
for friend in me.friends:
    for album in friend.albums:
        for pic in album:
            if me in pic.tagged: tag_list.append(pic)

But this would require a huge number of requests (especially using the GraphAPI) and would likely run into throttling limits.

Hope this information helps. Thanks for taking an interest in PhotoGrabber!

That's awesome, thanks @tam7t. Hopefully I might be able to give that a go over the next couple of weeks.

+1 for this one, thank you.

@tam7t : Just wondering if this issue is sorted out

Check out http://socialsafe.net/, it's desktop application for backing up social web applications, like Facebook and LinkedIn. I've just started using it and it appears to be able to download all your facebook photos so (a) might serve the purpose of photograbber but also (b) may be able to reach the developers to work out how they did it, they might be open to sharing the implementation, I guess depends on whether they consider that know how to be a core part of their business model or not.

Has there been any progress or findings on this issue? Most of the other options for downloading photos don't preserve the data the same way PhotoGrabber does, but I've been tagged in more than 400 photos.

Even if the Facebook API is limiting the request to 400 photos, it should probably also be providing some sort of pagination feature that would allow retrieving the rest of the photos. If someone familiar with the Facebook API could at least point me in the right direction, I may attempt to fork the code soon and get this working.

Not that I'm aware of I'm afraid @Sammyiam!

Yeah, I looked into it more, Facebook's just not providing any more after 400, regardless of paging. I've ended up manually extracting a list of all the photo ids, and I'm working on writing some code to just download them all that way. Tedious, but I only need to do it once.

+1 for fixing this as only retrieving 400 of XXX photos renders the app not able to perform what people expect it to.