public async Task UploadFileToYouTube(PodcastEpisode episode)
        {
            try
            {
                var youtubeService = new YouTubeService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = await BuildAccountCredentialFromClientSecret(),
                    ApplicationName = "PodcastUploader"
                });

                var video = BuildVideo(episode);
                using (var fileStream = new FileStream(episode.LocalVideoFile, FileMode.Open))
                {
                    var videosInsertRequest = youtubeService.Videos.Insert(video, "snippet,status", fileStream, "video/*");
                    videosInsertRequest.ResponseReceived += (v) => videosInsertRequest_ResponseReceived(v, episode);

                    var chunkSize = 256 * 0x400 * 4;
                    videosInsertRequest.ChunkSize = chunkSize;
                    videosInsertRequest.Upload();
                }
            }
            catch (Exception e)
            {
                throw;
            }
        }
 public Video BuildVideo(PodcastEpisode episode)
 {
     Video video = new Video();
     video.Snippet = new VideoSnippet();
     video.Snippet.Title = Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(episode.EpisodeTitle);
     video.Snippet.Description = episode.EpisodeDescription;
     video.Snippet.Tags = episode.EpisodeKeywords;
     video.Snippet.CategoryId = "22"; // See https://developers.google.com/youtube/v3/docs/videoCategories/list
     video.Status = new VideoStatus { PrivacyStatus = "public" };// or "private" or "public" "unlisted"
     return video;
 }
 private void DownloadEpisode(PodcastEpisode episode)
 {
     episode.LocalEpisodeArtwork = EnsureLocalFileExists(episode.PodcastTitle, episode.RemoteEpisodeArtwork);
     episode.LocalAudioFile = EnsureLocalFileExists(episode.PodcastTitle, episode.RemoteAudioFile, defaultFileExtension: "mp3");
 }
 void videosInsertRequest_ResponseReceived(Video video, PodcastEpisode episode)
 {
     episode.YouTubeUrl = "http://youtube.com/watch?v=" + video.Id;
 }
 public void SavePodcast(PodcastEpisode episode)
 {
     var history = new PodcastHistory(episode.PodcastTitle, episode.EpisodeID);
 }