I vote for that, too! Same scenario, same issues... bulk status request is the right solution, also for users you get from the Search API...
= Oren On Oct 20, 8:02 pm, Michael Steuer <mste...@gmail.com> wrote: > Hi, > > The reason why I¹m using followers/ids and then users/show is efficiency: > > I¹m maintaining a local cache of my users social graph. I¹m also maintaining > local user objects for my users and for their followers. Since both the > social graph and user info are subject to change, both need periodic > updating... They way I¹m doing that now is as follows: > > 1. I request followers/ids for each of my users > 2. If I detect new followers I add them to my users social graph / If I > detect followers removed, I remove them from my users social graph > > Subsequently I parse my user object table for users whose: > 1. info hasn¹t been updated in X days > 2. have no info because they were added as numeric IDs only via the > followers/ids method described above > > I then request users/show for each user matching condition 1 or 2 above. > > This way, I only get an updated user object for each unique user once, when > they¹re first added, or when I expire a previous update to their info. When > I get the followers of another new user, chances are I already know the > majority of his followers user information. > > I¹m not using statuses/followers because I would be getting the same > information over and over and over and over again... Especially when you¹re > talking about users with a lot of followers, it¹s really inefficient > considering you probably already store user info on most of the user¹s > followers... It would be an equally efficient method if overlap in followers > didn¹t exist... Since it does, I believe my approach is more efficient, and > faster over time, as your user database grows and your basically just > querying the social graph... > > ALL THAT SAID I would LOVE to have a method that allows me to get user > objects in batch... If I could request 100 user objects by numeric id in one > API call, the above would be exponentially efficient and result in far fewer > calls to Twitter. > > I am definitely interested in your feedback on my logic above and if you > think it holds... > > Thanks! > > Michael. > > On 10/15/09 7:02 PM, "Tim Haines" <tmhai...@gmail.com> wrote: > > > > > > > FYI, My backend cares. > > > On Fri, Oct 16, 2009 at 2:07 PM, jmathai <jmat...@gmail.com> wrote: > > >> I'm curious why you're using followers/ids and then users/show for > >> each id? I tried using that and using statuses/followers and found > >> that the total times were in the same ballpark. statuses/followers > >> requires far fewer api calls if you're interested in user objects. > > >> FYI, I do want to add and say I agree that either method is EXTREMELY > >> inefficient. Regardless what the argument against pages and for > >> cursors are...the current implementation is painful from an end user > >> perspective. Our backend doesn't really care, but our users don't > >> like to wait 10-30 minutes for a web page to gather a social graph. > > >> I wish instead of a cursor I could get a snapshot id, # of pages and a > >> page parameter. I don't know how it's implemented, but the ability to > >> deterministically parallelize the calls - is such a benefit to the end > >> user. Pages let me do that. > > >> On Oct 15, 9:17 am, Michael Steuer <mste...@gmail.com> wrote: > >>> > That's great!! I'm currently using the suggested method (get IDs, then > >>> > do > >>> > users/show for each of them) and it's horrendously slow and cumbersome. > >>> It'd > >>> > be great if you could get a 100 user objects at the time, based on 100 > >>> > ids > >>> > you provide.. > > >>> > On 10/14/09 7:30 PM, "Chad Etzel" <c...@twitter.com> wrote: > > >>>> > > I agree. I'm lobbying the team for something like this. > >>>> > > -Chad > > >>>> > > On Wed, Oct 14, 2009 at 10:21 PM, Josh Roesslein > >>>> > > <jroessl...@gmail.com> > >>>> wrote: > > >>>>> > >> Yeah we really need a way to bulk request user payloads by giving a > >>>>> list of > >>>>> > >> IDs. > > >>>>> > >> On Wed, Oct 14, 2009 at 9:19 PM, Tim Haines <tmhai...@gmail.com> > >>>>> wrote: > > >>>>>> > >>> Are you suggesting I should retrieve the 2k users 1 at a time > >>>>>> > >>> from > >>>>>> > >>> users/show once I have the ids? I'd essentially like to do this, > but > >>>>>> > >>> 100 at a time. > > >>>>>> > >>> I know I can get the 7000 ids in 2 calls (1 even without the > >>>>>> cursors) > >>>>>> > >>> - but I actually want the whole user objects.. > > >>>>>> > >>> Tim. > > >>>>>> > >>> On Oct 15, 2:56 pm, Chad Etzel <c...@twitter.com> wrote: > >>>>>>> > >>>> If you are pulling down the entire social graph, why not use > >>>>>>> > >>>> the > >>>>>>> > >>>> social graph calls which would deliver all 7000 ids in 2 calls? > > >>>>>>> > >>>> You can also parallelize this process by looping through > >>>>>>> different > >>>>>>> > >>>> users on each thread instead of using each thread to grab a > >>>>>>> different > >>>>>>> > >>>> page/cursor of the same user. > > >>>>>>> > >>>> Regarding the code issue you submitted, if you have the users > cached > >>>>>>> > >>>> locally, you could use the social graph methods to determine > >>>>>>> > >>>> the > >>>>>>> > >>>> missing/new 2k users pretty quickly using the social graph > >>>>>>> methods and > >>>>>>> > >>>> comparing ids. > > >>>>>>> > >>>> -Chad > > >>>>>>> > >>>> On Wed, Oct 14, 2009 at 9:50 PM, Tim Haines > >>>>>>> > >>>> <tmhai...@gmail.com> > wrote: > > >>>>>>>> > >>>>> Hi Chad, > > >>>>>>>> > >>>>> Statuses/followers. > > >>>>>>>> > >>>>> I've just timed another attempt - it took 25 minutes to > >>>>>>>> retrieve 17957 > >>>>>>>> > >>>>> followers with statuses/followers. > > >>>>>>>> > >>>>> Is there anything I can elaborate on in the filed issue to > >>>>>>>> > >>>>> make > it > >>>>>>>> > >>>>> clearer? > > >>>>>>>> > >>>>> Tim. > > >>>>>>>> > >>>>> On Oct 15, 2:42 pm, Chad Etzel <c...@twitter.com> wrote: > >>>>>>>>> > >>>>>> Hi Tim, > > >>>>>>>>> > >>>>>> You said "Retrieving 7000 followers just took > 20 minutes > for me." > >>>>>>>>> > >>>>>> Can you explain what you meant by that? > > >>>>>>>>> > >>>>>> Are you using the friends/ids, followers/ids methods or the > >>>>>>>>> > >>>>>> statuses/friends, statuses/followers methods? > > >>>>>>>>> > >>>>>> -Chad > > >>>>>>>>> > >>>>>> On Wed, Oct 14, 2009 at 8:12 PM, Tim Haines > >>>>>>>>> <tmhai...@gmail.com> wrote: > > >>>>>>>>>> > >>>>>>> Hi'ya, > > >>>>>>>>>> > >>>>>>> I'm migrating my code to use cursors at the moment. It's > >>>>>>>>>> frustrating > >>>>>>>>>> > >>>>>>> that calls need to be synchronous rather than how paged > >>>>>>>>>> calls could be > >>>>>>>>>> > >>>>>>> asynchronous. Retrieving 7000 followers just took > 20 > >>>>>>>>>> minutes for > >>>>>>>>>> > >>>>>>> me. > > >>>>>>>>>> > >>>>>>> I filed an issue that proposes a solution here: > > >>>>>>>>>> >>>>>>>http://code.google.com/p/twitter-api/issues/detail?id=1078 If > you > >>>>>>>>>> > >>>>>>> retrieve friends or followers, please take a look and > >>>>>>>>>> > >>>>>>> give > it a star > >>>>>>>>>> > >>>>>>> if it's important to you. > > >>>>>>>>>> > >>>>>>> If anyone can suggest a work around for this, I'd be > >>>>>>>>>> > >>>>>>> happy > >>>>>>>>>> to hear it. > > >>>>>>>>>> > >>>>>>> Cheers, > > >>>>>>>>>> > >>>>>>> Tim. > > >>>>> > >> -- > >>>>> > >> Josh