コード例 #1
0
        async Task ProcessYouTubeUrlAsync()
        {
            VideoMetaData        = null;
            AudioOnlyStreamInfos = Array.Empty <AudioOnlyStreamInfo>();
            CheckedAudioOnlyStreamInfoHashCode = NoSelection;
            ProcessYouTubeUrlButtonEnabled     = false;
            DownloadButtonEnabled = false;
            Progress = 0;
            OpusAudioStreamPresent = false;
            ExtractOpus            = false;

            try
            {
                var taskVideoMetaData        = YouTubeDownloadApi.GetVideoMetaDataAsync(YouTubeUrl);
                var taskAudioOnlyStreamInfos = YouTubeDownloadApi.GetAudioOnlyStreamsAsync(YouTubeUrl);

                await Task.WhenAll(taskVideoMetaData, taskAudioOnlyStreamInfos);

                VideoMetaData        = await taskVideoMetaData;
                AudioOnlyStreamInfos = await taskAudioOnlyStreamInfos;

                var highest = AudioOnlyStreamInfos.TryGetWithHighestBitrate();
                CheckedAudioOnlyStreamInfoHashCode = highest?.GetHashCode() ?? NoSelection;
                OpusAudioStreamPresent             = AudioOnlyStreamInfos.Any(a => a.IsOpus());
                ExtractOpus = OpusAudioStreamPresent;
            }
            finally
            {
                DownloadButtonEnabled          = true;
                ProcessYouTubeUrlButtonEnabled = true;
            }
        }