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
(Tcl) 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.
load ./chilkat.dll # 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.. set json [new_CkJsonObject] set success [CkJsonObject_LoadFile $json "qa_data/tokens/twitter.json"] set rest [new_CkRest] set oauth1 [new_CkOAuth1] CkOAuth1_put_ConsumerKey $oauth1 "TWITTER_CONSUMER_KEY" CkOAuth1_put_ConsumerSecret $oauth1 "TWITTER_CONSUMER_SECRET" CkOAuth1_put_Token $oauth1 [CkJsonObject_stringOf $json "oauth_token"] CkOAuth1_put_TokenSecret $oauth1 [CkJsonObject_stringOf $json "oauth_token_secret"] CkOAuth1_put_SignatureMethod $oauth1 "HMAC-SHA1" CkOAuth1_GenNonce $oauth1 16 CkRest_SetAuthOAuth1 $rest $oauth1 0 set bAutoReconnect 1 set success [CkRest_Connect $rest "api.twitter.com" 443 1 $bAutoReconnect] if {$success != 1} then { puts [CkRest_lastErrorText $rest] delete_CkJsonObject $json delete_CkRest $rest delete_CkOAuth1 $oauth1 exit } # This ends the initial setup... # ---------------------------------------------------------------------- # This Twitter user has about 77.5K followers.. CkRest_AddQueryParam $rest "screen_name" "MarcusMiller959" set jsonResponse [new_CkJsonObject] CkJsonObject_put_EmitCompact $jsonResponse 0 # Get the 1st page of results using a cursor of "-1". set sbNextCursor [new_CkStringBuilder] CkStringBuilder_SetString $sbNextCursor "-1" set pageNum 1 set caseSensitive 0 set bContinue 1 # Get a maximum of 5 pages (of 5000 ids each). while {$bContinue == 1} { if {[CkStringBuilder_ContentsEqual $sbNextCursor "0" $caseSensitive] == 1} then { # This will cause the loop to exit.. set bContinue 0 } else { # Adds or replaces the query param. CkRest_AddQueryParam $rest "cursor" [CkStringBuilder_getAsString $sbNextCursor] # Get the next page of follower IDs set resp [CkRest_fullRequestNoBody $rest "GET" "/1.1/followers/ids.json"] if {[CkRest_get_LastMethodSuccess $rest] != 1} then { puts [CkRest_lastErrorText $rest] delete_CkJsonObject $json delete_CkRest $rest delete_CkOAuth1 $oauth1 delete_CkJsonObject $jsonResponse delete_CkStringBuilder $sbNextCursor exit } CkJsonObject_Load $jsonResponse $resp if {[CkRest_get_ResponseStatusCode $rest] != 200} then { puts [CkJsonObject_emit $jsonResponse] delete_CkJsonObject $json delete_CkRest $rest delete_CkOAuth1 $oauth1 delete_CkJsonObject $jsonResponse delete_CkStringBuilder $sbNextCursor exit } # Show the number of IDs returned in this set numIds [CkJsonObject_SizeOfArray $jsonResponse "ids"] puts "Page $pageNum, Number of Ids: $numIds" # Show the 1st 10 ids in this page. set i 0 while {$i < $numIds} { CkJsonObject_put_I $jsonResponse $i puts " $i: [CkJsonObject_stringOf $jsonResponse {ids[i]}]" set i [expr $i + 1] if {$i > 10} then { # Force the loop to exit. set i $numIds } } set pageNum [expr $pageNum + 1] if {$pageNum > 5} then { set bContinue 0 } else { CkStringBuilder_SetString $sbNextCursor [CkJsonObject_stringOf $jsonResponse "next_cursor_str"] } } } # 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 # delete_CkJsonObject $json delete_CkRest $rest delete_CkOAuth1 $oauth1 delete_CkJsonObject $jsonResponse delete_CkStringBuilder $sbNextCursor |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.