Ejemplo n.º 1
0
        public async Task <FileInfo?> DownloadVideoFileAsync(string videoId)
        {
            VideoPlaybackAccessToken videoToken = await GetVideoPlaybackToken(HttpClient, videoId);

            string videoPlaylistUrl = await GetVideoPlaylistUrl(HttpClient, videoId, videoToken);

            return(await DownloadVideoFile(videoId, videoPlaylistUrl));
        }
Ejemplo n.º 2
0
        private static async Task <string> GetVideoPlaylistUrl(HttpClient httpClient, string videoId, VideoPlaybackAccessToken accessToken)
        {
            var request = new HttpRequestMessage()
            {
                Method     = HttpMethod.Get,
                RequestUri = new Uri($"http://usher.twitch.tv/vod/{videoId}?nauth={accessToken.Value}&nauthsig={accessToken.Signature}&allow_source=true&player=twitchweb")
            };

            request.Headers.Add("Client-ID", TwitchClientId);
            HttpResponseMessage response = await httpClient.SendAsync(request);

            response.EnsureSuccessStatusCode();
            var lines = (await response.Content.ReadAsStringAsync()).Split('\n');

            for (int i = 0; i < lines.Length; i++)
            {
                if (lines[i].Contains("#EXT-X-MEDIA") && i < lines.Length - 2)
                {
                    return(lines[i + 2]);
                }
            }
            return("");
        }