private async Task Run() { UserCredential credential; string clientSecretsPath = CredentialsManager.GetClientSecretsLocation(); using (FileStream stream = new FileStream(clientSecretsPath, FileMode.Open, FileAccess.Read)) { // This OAuth 2.0 access scope allows for read-only access to the authenticated // user's account, but not other types of account access. credential = await GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, new[] { YouTubeService.Scope.YoutubeReadonly }, "user", CancellationToken.None, new FileDataStore(GetType().ToString()) ); } BaseClientService.Initializer baseClientServiceInitializer = new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = GetType().ToString() }; YouTubeService youtubeService = new YouTubeService(baseClientServiceInitializer); ChannelsResource.ListRequest channelsListRequest = youtubeService.Channels.List("contentDetails"); channelsListRequest.Mine = true; // Retrieve the contentDetails part of the channel resource for the authenticated user's channel. ChannelListResponse channelsListResponse = await channelsListRequest.ExecuteAsync(); foreach (Channel channel in channelsListResponse.Items) { // From the API response, extract the playlist ID that identifies the list // of videos uploaded to the authenticated user's channel. string uploadsListId = channel.ContentDetails.RelatedPlaylists.Uploads; Console.WriteLine("Videos in list {0}", uploadsListId); string nextPageToken = ""; while (nextPageToken != null) { PlaylistItemsResource.ListRequest playlistItemsListRequest = youtubeService.PlaylistItems.List("snippet"); playlistItemsListRequest.PlaylistId = uploadsListId; playlistItemsListRequest.MaxResults = 50; playlistItemsListRequest.PageToken = nextPageToken; // Retrieve the list of videos uploaded to the authenticated user's channel. PlaylistItemListResponse playlistItemsListResponse = await playlistItemsListRequest.ExecuteAsync(); foreach (PlaylistItem playlistItem in playlistItemsListResponse.Items) { // Print information about each video. Console.WriteLine("{0} ({1})", playlistItem.Snippet.Title, playlistItem.Snippet.ResourceId.VideoId); } nextPageToken = playlistItemsListResponse.NextPageToken; } } }
private async Task Run() { UserCredential credential; string clientSecretsPath = CredentialsManager.GetClientSecretsLocation(); using (FileStream stream = new FileStream(clientSecretsPath, FileMode.Open, FileAccess.Read)) { ClientSecrets clientSecrets = GoogleClientSecrets.Load(stream).Secrets; // This OAuth 2.0 access scope allows for full read/write access to the // authenticated user's account. credential = await GoogleWebAuthorizationBroker.AuthorizeAsync( clientSecrets, new[] { YouTubeService.Scope.Youtube }, "user", CancellationToken.None, new FileDataStore(GetType().ToString()) ); } YouTubeService youtubeService = new YouTubeService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = GetType().ToString() }); // Create a new, private playlist in the authorized user's channel. Playlist newPlaylist = new Playlist { Snippet = new PlaylistSnippet { Title = "Test Playlist", Description = "A playlist created with the YouTube API v3" }, Status = new PlaylistStatus { PrivacyStatus = "public" } }; newPlaylist = await youtubeService.Playlists.Insert(newPlaylist, "snippet,status").ExecuteAsync(); // Add a video to the newly created playlist. PlaylistItem newPlaylistItem = new PlaylistItem { Snippet = new PlaylistItemSnippet { PlaylistId = newPlaylist.Id, ResourceId = new ResourceId { Kind = "youtube#video", VideoId = "GNRMeaz6QRI" } } }; newPlaylistItem = await youtubeService.PlaylistItems.Insert(newPlaylistItem, "snippet").ExecuteAsync(); Console.WriteLine("Playlist item id {0} was added to playlist id {1}.", newPlaylistItem.Id, newPlaylist.Id); }
private async Task Run() { UserCredential credential; string clientSecretsPath = CredentialsManager.GetClientSecretsLocation(); using (FileStream stream = new FileStream(clientSecretsPath, FileMode.Open, FileAccess.Read)) { credential = await GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, // This OAuth 2.0 access scope allows an application to upload files to the // authenticated user's YouTube channel, but doesn't allow other types of access. new[] { YouTubeService.Scope.YoutubeUpload }, "user", CancellationToken.None ); } YouTubeService youtubeService = new YouTubeService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = Assembly.GetExecutingAssembly().GetName().Name }); Video video = new Video { Snippet = new VideoSnippet { Title = "Default Video Title", Description = "Default Video Description", Tags = new[] { "tag1", "tag2" }, CategoryId = "22" } }; // See https://developers.google.com/youtube/v3/docs/videoCategories/list video.Status = new VideoStatus { PrivacyStatus = "unlisted" }; // or "private" or "public" string filePath = AssetsManager.GetSampleVideoPath(); // Replace with path to actual movie file. using (FileStream fileStream = new FileStream(filePath, FileMode.Open)) { VideosResource.InsertMediaUpload videosInsertRequest = youtubeService.Videos.Insert(video, "snippet,status", fileStream, "video/*"); videosInsertRequest.ProgressChanged += VideosInsertRequestProgressChanged; videosInsertRequest.ResponseReceived += VideosInsertRequestResponseReceived; await videosInsertRequest.UploadAsync(); } void VideosInsertRequestProgressChanged(IUploadProgress progress) { switch (progress.Status) { case UploadStatus.Uploading: Console.WriteLine("{0} bytes sent.", progress.BytesSent); break; case UploadStatus.Failed: Console.WriteLine("An error prevented the upload from completing.\n{0}", progress.Exception); break; } } void VideosInsertRequestResponseReceived(Video videoParam) { Console.WriteLine("Video id '{0}' was successfully uploaded.", videoParam.Id); } }