@@ -164,18 +164,30 @@ private async void timerMain_Tick(object sender, EventArgs e)
164
164
JArray userObj = JArray . Parse ( userRes ) ;
165
165
userId = userObj [ 0 ] [ "data" ] [ "currentUser" ] [ "id" ] . ToString ( ) ;
166
166
}
167
- JObject liveRes = JObject . Parse ( await clientTwitch . DownloadStringTaskAsync ( "https://twitch-api.twitcharchives.workers.dev/streams?user_login=" + String . Join ( "&user_login=" , dataGridSource . List . OfType < Streamer > ( ) . Select ( x => x . Name ) ) ) ) ;
167
+ JObject liveRes = JObject . Parse ( await clientTwitch . UploadStringTaskAsync ( "https://gql. twitch.tv/gql" , "{ \" query \" : \" query {users(logins: [" + String . Join ( ',' , dataGridSource . List . OfType < Streamer > ( ) . Select ( x => " \\ \" " + x . Name + " \\ \" " ) ) + "]) {id,login,displayName,stream{id}}} \" }" ) ) ;
168
168
List < Streamer > streamerList = new List < Streamer > ( ) ;
169
169
170
- foreach ( var streamData in liveRes [ "data" ] )
170
+ for ( int i = 0 ; i < liveRes [ "data" ] [ "users" ] . Count ( ) ; i ++ )
171
+ {
172
+ if ( liveRes [ "data" ] [ "users" ] [ i ] [ "stream" ] . Type == JTokenType . Null )
173
+ {
174
+ liveRes [ "data" ] [ "users" ] [ i ] . Remove ( ) ;
175
+ i -- ;
176
+ }
177
+ }
178
+
179
+ foreach ( var streamData in liveRes [ "data" ] [ "users" ] )
171
180
{
172
181
if ( streamerList . Count == 2 )
173
182
break ;
174
183
175
- string broadcastId = streamData [ "id" ] . ToString ( ) ;
184
+ if ( streamData [ "stream" ] . Type == JTokenType . Null )
185
+ continue ;
186
+
187
+ string broadcastId = streamData [ "stream" ] [ "id" ] . ToString ( ) ;
176
188
if ( ! broadcastCount . ContainsKey ( broadcastId ) || broadcastCount [ broadcastId ] < 6 )
177
189
{
178
- streamerList . Add ( dataGridSource . List . OfType < Streamer > ( ) . Where ( x => x . Name . ToLower ( ) == streamData [ "user_name " ] . ToString ( ) . ToLower ( ) ) . First ( ) ) ;
190
+ streamerList . Add ( dataGridSource . List . OfType < Streamer > ( ) . Where ( x => x . Name . ToLower ( ) == streamData [ "login " ] . ToString ( ) . ToLower ( ) ) . First ( ) ) ;
179
191
}
180
192
}
181
193
@@ -192,23 +204,23 @@ private async void timerMain_Tick(object sender, EventArgs e)
192
204
if ( streamerList . Count == 2 )
193
205
break ;
194
206
195
- if ( liveRes [ "data" ] . Any ( x => x [ "user_name " ] . ToString ( ) . ToLower ( ) == ( ( Streamer ) dataGridSource [ i ] ) . Name . ToLower ( ) ) )
207
+ if ( liveRes [ "data" ] [ "users" ] . Any ( x => x [ "login " ] . ToString ( ) . ToLower ( ) == ( ( Streamer ) dataGridSource [ i ] ) . Name . ToLower ( ) ) )
196
208
{
197
209
streamerList . Add ( ( Streamer ) dataGridSource [ i ] ) ;
198
210
}
199
211
}
200
212
201
213
for ( int i = 0 ; i < streamerList . Count ; i ++ )
202
214
{
203
- JToken streamData = liveRes [ "data" ] . Where ( x => x [ "user_name " ] . ToString ( ) . ToLower ( ) == streamerList [ i ] . Name . ToLower ( ) ) . First ( ) ;
215
+ JToken streamData = liveRes [ "data" ] [ "users" ] . Where ( x => x [ "login " ] . ToString ( ) . ToLower ( ) == streamerList [ i ] . Name . ToLower ( ) ) . First ( ) ;
204
216
string gqlRes = await clientTwitch . UploadStringTaskAsync ( "https://gql.twitch.tv/gql" , "{\" operationName\" : \" ChannelPointsContext\" ,\" variables\" : {\" channelLogin\" : \" " + streamerList [ i ] . Name . ToLower ( ) + "\" },\" extensions\" : {\" persistedQuery\" : {\" version\" : 1, \" sha256Hash\" : \" 9988086babc615a918a1e9a722ff41d98847acac822645209ac7379eecb27152\" }}}" ) ;
205
217
JObject res = JObject . Parse ( gqlRes ) ;
206
218
int newPoints = res [ "data" ] [ "community" ] [ "channel" ] [ "self" ] [ "communityPoints" ] [ "balance" ] . ToObject < int > ( ) ;
207
219
streamerList [ i ] . Points = newPoints ;
208
220
if ( res [ "data" ] [ "community" ] [ "channel" ] [ "self" ] [ "communityPoints" ] [ "availableClaim" ] . ToString ( ) != "" )
209
221
{
210
222
string claim_id = res [ "data" ] [ "community" ] [ "channel" ] [ "self" ] [ "communityPoints" ] [ "availableClaim" ] [ "id" ] . ToString ( ) ;
211
- await clientTwitch . UploadStringTaskAsync ( "https://gql.twitch.tv/gql" , "{\" operationName\" : \" ClaimCommunityPoints\" ,\" variables\" : {\" input\" : {\" channelID\" : \" " + streamData [ "user_id " ] . ToString ( ) + "\" , \" claimID\" : \" " + claim_id + "\" }},\" extensions\" : {\" persistedQuery\" : {\" version\" : 1, \" sha256Hash\" : \" 46aaeebe02c99afdf4fc97c7c0cba964124bf6b0af229395f1f6d1feed05b3d0\" }}}" ) ;
223
+ await clientTwitch . UploadStringTaskAsync ( "https://gql.twitch.tv/gql" , "{\" operationName\" : \" ClaimCommunityPoints\" ,\" variables\" : {\" input\" : {\" channelID\" : \" " + streamData [ "id " ] . ToString ( ) + "\" , \" claimID\" : \" " + claim_id + "\" }},\" extensions\" : {\" persistedQuery\" : {\" version\" : 1, \" sha256Hash\" : \" 46aaeebe02c99afdf4fc97c7c0cba964124bf6b0af229395f1f6d1feed05b3d0\" }}}" ) ;
212
224
}
213
225
214
226
if ( streamerList [ i ] . SpadeUrl == null )
@@ -219,8 +231,8 @@ private async void timerMain_Tick(object sender, EventArgs e)
219
231
}
220
232
221
233
JObject data = new JObject ( ) ;
222
- data [ "channel_id" ] = streamData [ "user_id " ] . ToString ( ) ;
223
- data [ "broadcast_id" ] = streamData [ "id" ] . ToString ( ) ;
234
+ data [ "channel_id" ] = streamData [ "id " ] . ToString ( ) ;
235
+ data [ "broadcast_id" ] = streamData [ "stream" ] [ " id"] . ToString ( ) ;
224
236
data [ "player" ] = "site" ;
225
237
data [ "user_id" ] = userId ;
226
238
JObject data_root = new JObject ( ) ;
@@ -229,13 +241,13 @@ private async void timerMain_Tick(object sender, EventArgs e)
229
241
string payload = Convert . ToBase64String ( Encoding . UTF8 . GetBytes ( data_root . ToString ( Newtonsoft . Json . Formatting . None ) ) ) ;
230
242
await clientTwitch . UploadStringTaskAsync ( streamerList [ i ] . SpadeUrl , payload ) ;
231
243
232
- if ( broadcastCount . ContainsKey ( streamData [ "id" ] . ToString ( ) ) )
244
+ if ( broadcastCount . ContainsKey ( streamData [ "stream" ] [ " id"] . ToString ( ) ) )
233
245
{
234
- broadcastCount [ streamData [ "id" ] . ToString ( ) ] += 1 ;
246
+ broadcastCount [ streamData [ "stream" ] [ " id"] . ToString ( ) ] += 1 ;
235
247
}
236
248
else
237
249
{
238
- broadcastCount [ streamData [ "id" ] . ToString ( ) ] = 1 ;
250
+ broadcastCount [ streamData [ "stream" ] [ " id"] . ToString ( ) ] = 1 ;
239
251
}
240
252
241
253
if ( oldPoints . ContainsKey ( streamerList [ i ] . Name ) )
0 commit comments