Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) Twitter - Get Follower IDsDemonstrates how to get a list of follower IDs for a Twitter user. If the number of followers is more than can be returned in a single response, this example will use cursors to page through the followers. Note: Rate limits will prevent a program from paging through huge lists of followers. In general, a maximum of 16 GET requests (pages) can be retrieved in a short period of time.
IncludeFile "CkStringBuilder.pb" IncludeFile "CkRest.pb" IncludeFile "CkJsonObject.pb" IncludeFile "CkOAuth1.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. ; ---------------------------------------------------------------------- ; This initial setup, which involves setting the OAuth1 properties and connecting ; to api.twitter.com, is only required once at the beginning. Once connected, the same ; object instance may be re-used, and if necessary, it will automatically reconnect ; as needed. ; Assume we've previously obtained an access token and saved it to a JSON file.. json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkJsonObject::ckLoadFile(json,"qa_data/tokens/twitter.json") rest.i = CkRest::ckCreate() If rest.i = 0 Debug "Failed to create object." ProcedureReturn EndIf oauth1.i = CkOAuth1::ckCreate() If oauth1.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkOAuth1::setCkConsumerKey(oauth1, "TWITTER_CONSUMER_KEY") CkOAuth1::setCkConsumerSecret(oauth1, "TWITTER_CONSUMER_SECRET") CkOAuth1::setCkToken(oauth1, CkJsonObject::ckStringOf(json,"oauth_token")) CkOAuth1::setCkTokenSecret(oauth1, CkJsonObject::ckStringOf(json,"oauth_token_secret")) CkOAuth1::setCkSignatureMethod(oauth1, "HMAC-SHA1") CkOAuth1::ckGenNonce(oauth1,16) CkRest::ckSetAuthOAuth1(rest,oauth1,0) bAutoReconnect.i = 1 success = CkRest::ckConnect(rest,"api.twitter.com",443,1,bAutoReconnect) If success <> 1 Debug CkRest::ckLastErrorText(rest) CkJsonObject::ckDispose(json) CkRest::ckDispose(rest) CkOAuth1::ckDispose(oauth1) ProcedureReturn EndIf ; This ends the initial setup... ; ---------------------------------------------------------------------- ; This Twitter user has about 77.5K followers.. CkRest::ckAddQueryParam(rest,"screen_name","MarcusMiller959") jsonResponse.i = CkJsonObject::ckCreate() If jsonResponse.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::setCkEmitCompact(jsonResponse, 0) ; Get the 1st page of results using a cursor of "-1". sbNextCursor.i = CkStringBuilder::ckCreate() If sbNextCursor.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkStringBuilder::ckSetString(sbNextCursor,"-1") pageNum.i = 1 caseSensitive.i = 0 bContinue.i = 1 ; Get a maximum of 5 pages (of 5000 ids each). While bContinue = 1 If CkStringBuilder::ckContentsEqual(sbNextCursor,"0",caseSensitive) = 1 ; This will cause the loop to exit.. bContinue = 0 Else ; Adds or replaces the query param. CkRest::ckAddQueryParam(rest,"cursor",CkStringBuilder::ckGetAsString(sbNextCursor)) ; Get the next page of follower IDs resp.s = CkRest::ckFullRequestNoBody(rest,"GET","/1.1/followers/ids.json") If CkRest::ckLastMethodSuccess(rest) <> 1 Debug CkRest::ckLastErrorText(rest) CkJsonObject::ckDispose(json) CkRest::ckDispose(rest) CkOAuth1::ckDispose(oauth1) CkJsonObject::ckDispose(jsonResponse) CkStringBuilder::ckDispose(sbNextCursor) ProcedureReturn EndIf CkJsonObject::ckLoad(jsonResponse,resp) If CkRest::ckResponseStatusCode(rest) <> 200 Debug CkJsonObject::ckEmit(jsonResponse) CkJsonObject::ckDispose(json) CkRest::ckDispose(rest) CkOAuth1::ckDispose(oauth1) CkJsonObject::ckDispose(jsonResponse) CkStringBuilder::ckDispose(sbNextCursor) ProcedureReturn EndIf ; Show the number of IDs returned in this numIds.i = CkJsonObject::ckSizeOfArray(jsonResponse,"ids") Debug "Page " + Str(pageNum) + ", Number of Ids: " + Str(numIds) ; Show the 1st 10 ids in this page. i.i = 0 While i < numIds CkJsonObject::setCkI(jsonResponse, i) Debug " " + Str(i) + ": " + CkJsonObject::ckStringOf(jsonResponse,"ids[i]") i = i + 1 If i > 10 ; Force the loop to exit. i = numIds EndIf Wend pageNum = pageNum + 1 If pageNum > 5 bContinue = 0 Else CkStringBuilder::ckSetString(sbNextCursor,CkJsonObject::ckStringOf(jsonResponse,"next_cursor_str")) EndIf EndIf Wend ; A successful JSON response for the 1st page looks like this: ; { ; "ids": [ ; 3140496044, ; 793204773751324672, ; 789951187781050369, ; 763520773587922945, ; ... ; 15031286, ; 2668251246, ; 3751659443 ; ], ; "next_cursor": 1531680438812851153, ; "next_cursor_str": "1531680438812851153", ; "previous_cursor": 0, ; "previous_cursor_str": "0" ; } ; The output of this program looks like this: ; Page 1, Number of Ids: 5000 ; 0: 931953350 ; 1: 786708055 ; 2: 560845700 ; 3: 3140496044 ; 4: 793204773751324672 ; 5: 789951187781050369 ; 6: 763520773587922945 ; 7: 793143274059988992 ; 8: 793139683412762624 ; 9: 1588222783 ; 10: 703821370778451968 ; Page 2, Number of Ids: 5000 ; 0: 15031286 ; 1: 2668251246 ; 2: 3751659443 ; 3: 3324584493 ; 4: 2440214809 ; 5: 1322335441 ; 6: 4439178393 ; 7: 4911573711 ; 8: 720792880080560128 ; 9: 720805087124267008 ; 10: 172926330 ; Page 3, Number of Ids: 5000 ; 0: 93867176 ; 1: 2992946183 ; 2: 2825296077 ; 3: 3784572861 ; 4: 2150051321 ; 5: 2460881603 ; 6: 4128849341 ; 7: 2234697931 ; 8: 2379418164 ; 9: 3425171542 ; 10: 325759186 ; Page 4, Number of Ids: 5000 ; 0: 22793412 ; 1: 3347750489 ; 2: 316923043 ; 3: 2481719196 ; 4: 3363591905 ; 5: 3238116492 ; 6: 58467130 ; 7: 3015182362 ; 8: 2985342719 ; 9: 3095965720 ; 10: 17505957 ; Page 5, Number of Ids: 5000 ; 0: 2541434684 ; 1: 140022957 ; 2: 134845054 ; 3: 772810508 ; 4: 16979294 ; 5: 2320540225 ; 6: 105439442 ; 7: 2796744529 ; 8: 251128801 ; 9: 350229758 ; 10: 2683994716 ; CkJsonObject::ckDispose(json) CkRest::ckDispose(rest) CkOAuth1::ckDispose(oauth1) CkJsonObject::ckDispose(jsonResponse) CkStringBuilder::ckDispose(sbNextCursor) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.