Skip to content

Commit

Permalink
Don't send clip query as an array
Browse files Browse the repository at this point in the history
  • Loading branch information
ScrubN committed Jan 13, 2024
1 parent c54a49a commit 3a4f386
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 8 deletions.
2 changes: 1 addition & 1 deletion TwitchDownloaderCore/ClipDownloader.cs
Expand Up @@ -92,7 +92,7 @@ void DownloadProgressHandler(StreamCopyProgress streamProgress)
private async Task<string> GetDownloadUrl()
{
var listLinks = await TwitchHelper.GetClipLinks(downloadOptions.Id);
var clip = listLinks[0].data.clip;
var clip = listLinks.data.clip;

if (clip.playbackAccessToken is null)
{
Expand Down
10 changes: 5 additions & 5 deletions TwitchDownloaderCore/TwitchHelper.cs
Expand Up @@ -116,22 +116,22 @@ public static async Task<GqlClipResponse> GetClipInfo(object clipId)
return await response.Content.ReadFromJsonAsync<GqlClipResponse>();
}

public static async Task<GqlClipTokenResponse[]> GetClipLinks(string clipId)
public static async Task<GqlClipTokenResponse> GetClipLinks(string clipId)
{
var request = new HttpRequestMessage()
{
RequestUri = new Uri("https://gql.twitch.tv/gql"),
Method = HttpMethod.Post,
Content = new StringContent("[{\"operationName\":\"VideoAccessToken_Clip\",\"variables\":{\"slug\":\"" + clipId + "\"},\"extensions\":{\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"36b89d2507fce29e5ca551df756d27c1cfe079e2609642b4390aa4c35796eb11\"}}}]", Encoding.UTF8, "application/json")
Content = new StringContent("{\"operationName\":\"VideoAccessToken_Clip\",\"variables\":{\"slug\":\"" + clipId + "\"},\"extensions\":{\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"36b89d2507fce29e5ca551df756d27c1cfe079e2609642b4390aa4c35796eb11\"}}}", Encoding.UTF8, "application/json")
};
request.Headers.Add("Client-ID", "kimne78kx3ncx6brgo4mv6wki5h1ko");
using var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
response.EnsureSuccessStatusCode();

var gqlClipTokenResponses = await response.Content.ReadFromJsonAsync<GqlClipTokenResponse[]>();
if (gqlClipTokenResponses[0].data.clip.videoQualities is { Length: > 0})
var gqlClipTokenResponses = await response.Content.ReadFromJsonAsync<GqlClipTokenResponse>();
if (gqlClipTokenResponses.data.clip.videoQualities is { Length: > 0 })
{
Array.Sort(gqlClipTokenResponses[0].data.clip.videoQualities, new ClipQualityComparer());
Array.Sort(gqlClipTokenResponses.data.clip.videoQualities, new ClipQualityComparer());
}

return gqlClipTokenResponses;
Expand Down
4 changes: 2 additions & 2 deletions TwitchDownloaderWPF/PageClipDownload.xaml.cs
Expand Up @@ -55,7 +55,7 @@ private async Task GetClipInfo()
btnGetInfo.IsEnabled = false;
comboQuality.Items.Clear();
Task<GqlClipResponse> taskClipInfo = TwitchHelper.GetClipInfo(clipId);
Task<GqlClipTokenResponse[]> taskLinks = TwitchHelper.GetClipLinks(clipId);
Task<GqlClipTokenResponse> taskLinks = TwitchHelper.GetClipLinks(clipId);
await Task.WhenAll(taskClipInfo, taskLinks);

GqlClipResponse clipData = taskClipInfo.Result;
Expand All @@ -78,7 +78,7 @@ private async Task GetClipInfo()
viewCount = taskClipInfo.Result.data.clip.viewCount;
game = taskClipInfo.Result.data.clip.game?.displayName ?? "Unknown";

foreach (var quality in taskLinks.Result[0].data.clip.videoQualities)
foreach (var quality in taskLinks.Result.data.clip.videoQualities)
{
comboQuality.Items.Add(new TwitchClip(quality.quality, Math.Round(quality.frameRate).ToString("F0"), quality.sourceURL));
}
Expand Down

0 comments on commit 3a4f386

Please sign in to comment.