@@ -60,30 +60,19 @@ function Invoke-TwitterRequest {
6060 $script :LastHeaders = $ResponseHeaders
6161
6262 $ResponseData = [ResponseData ]::new($RequestParameters , $Authentication , $ResponseHeaders , $LastStatusCode , $ApiResponse )
63-
6463 Write-TwitterResponse - ResponseData $ResponseData
6564
66- # recursively call this function for pagination or cursoring
67- $script :CurrentPage = 2
68- $Progress = @ {
69- Activity = ' Retrieving paged results from Twitter API'
70- Status = ' Current page'
71- }
72-
7365 if ($ResponseData.ApiResponse.psobject.Properties.Name -match ' meta|next_cursor' ) {
7466
75- Write-Progress @Progress - CurrentOperation $CurrentPage
76- $CurrentPage ++
77-
78- Start-Sleep - Milliseconds (Get-Random - Minimum 300 - Maximum 600 )
79-
80- if ($ResponseData.ApiResponse.meta.next_token.length -gt 0 ) {
67+ $Progress = @ {
68+ Activity = ' Retrieving paged results from Twitter API'
69+ }
8170
82- # Twitter API V2
83- ' Returned {0} objects' -f $ResponseData.ApiResponse.meta.result_count | Write-Verbose
71+ if ($RequestParameters.Endpoint -match ' \/2\/' -and $null -ne $ResponseData.ApiResponse.meta.next_token ) {
8472
85- if ($RequestParameters.Query.Keys -match ' pagination_token' ) {
86- $RequestParameters.Query.Remove (' pagination_token' )
73+ # Twitter API V2 pagination
74+ if ($ResponseData.ApiResponse.meta.result_count ) {
75+ ' Returned {0} objects' -f $ResponseData.ApiResponse.meta.result_count | Write-Verbose
8776 }
8877
8978 # The endpoint /2/tweets/search/recent uses a different token for pagination
@@ -101,16 +90,20 @@ function Invoke-TwitterRequest {
10190 }
10291 $RequestParameters.Query.Add ($NextPageKey , $ResponseData.ApiResponse.meta.next_token )
10392
104- } elseif ($ResponseData.ApiResponse.next_cursor ) {
93+ } elseif ($null -ne $ ResponseData.ApiResponse.next_cursor -and $ResponseData .ApiResponse.next_cursor -ne 0 ) {
10594
106- # Twitter API V1.1, calls to endpoints will assume starting cursor of -1
95+ # Twitter API V1.1 cursoring , calls to endpoints will assume starting cursor of -1
10796 if ($RequestParameters.Query.Keys -match ' cursor' ) {
10897 $RequestParameters.Query.Remove (' cursor' )
10998 }
11099 $RequestParameters.Query.Add (' cursor' , $ResponseData.ApiResponse.next_cursor )
111-
112- Invoke-TwitterRequest - RequestParameters $RequestParameters
100+ } else {
101+ return
113102 }
103+
104+ Write-Progress @Progress
105+ Start-Sleep - Milliseconds (Get-Random - Minimum 300 - Maximum 600 )
106+ Invoke-TwitterRequest - RequestParameters $RequestParameters
114107 }
115108 }
116109 catch {
0 commit comments