Przykładowe fragmenty kodu .NET

Poniżej znajdziesz przykładowy kod, który korzysta z biblioteki klienta interfejsów API Google dla środowiska .NET. Jest ona dostępna dla platformy YouTube Data API. Przykładowy kod możesz pobrać z folderu dotnet repozytorium przykładowego kodu interfejsów API YouTube na GitHubie.

Utwórz playlistę

Następujący przykładowy kod wywołuje metodę playlists.insert interfejsu API w celu utworzenia prywatnej playlisty należy do kanału, który autoryzował żądanie.

using System; using System.IO; using System.Reflection; using System.Threading; using System.Threading.Tasks;  using Google.Apis.Auth.OAuth2; using Google.Apis.Services; using Google.Apis.Upload; using Google.Apis.Util.Store; using Google.Apis.YouTube.v3; using Google.Apis.YouTube.v3.Data;  namespace Google.Apis.YouTube.Samples {   /// <summary>   /// YouTube Data API v3 sample: create a playlist.   /// Relies on the Google APIs Client Library for .NET, v1.7.0 or higher.   /// See https://developers.google.com/api-client-library/dotnet/get_started   /// </summary>   internal class PlaylistUpdates   {     [STAThread]     static void Main(string[] args)     {       Console.WriteLine("YouTube Data API: Playlist Updates");       Console.WriteLine("==================================");        try       {         new PlaylistUpdates().Run().Wait();       }       catch (AggregateException ex)       {         foreach (var e in ex.InnerExceptions)         {           Console.WriteLine("Error: " + e.Message);         }       }        Console.WriteLine("Press any key to continue...");       Console.ReadKey();     }      private async Task Run()     {       UserCredential credential;       using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))       {         credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(             GoogleClientSecrets.Load(stream).Secrets,             // This OAuth 2.0 access scope allows for full read/write access to the             // authenticated user's account.             new[] { YouTubeService.Scope.Youtube },             "user",             CancellationToken.None,             new FileDataStore(this.GetType().ToString())         );       }        var youtubeService = new YouTubeService(new BaseClientService.Initializer()       {         HttpClientInitializer = credential,         ApplicationName = this.GetType().ToString()       });        // Create a new, private playlist in the authorized user's channel.       var newPlaylist = new Playlist();       newPlaylist.Snippet = new PlaylistSnippet();       newPlaylist.Snippet.Title = "Test Playlist";       newPlaylist.Snippet.Description = "A playlist created with the YouTube API v3";       newPlaylist.Status = new PlaylistStatus();       newPlaylist.Status.PrivacyStatus = "public";       newPlaylist = await youtubeService.Playlists.Insert(newPlaylist, "snippet,status").ExecuteAsync();        // Add a video to the newly created playlist.       var newPlaylistItem = new PlaylistItem();       newPlaylistItem.Snippet = new PlaylistItemSnippet();       newPlaylistItem.Snippet.PlaylistId = newPlaylist.Id;       newPlaylistItem.Snippet.ResourceId = new ResourceId();       newPlaylistItem.Snippet.ResourceId.Kind = "youtube#video";       newPlaylistItem.Snippet.ResourceId.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);     }   } } 

Pobierz moje przesłane pliki

Następujący przykładowy kod wywołuje metodę playlistItems.list interfejsu API, aby pobrać listę filmów przesłany na kanał powiązany z prośbą. Kod wywołuje również metodę channels.list z parametrem Parametr mine ma wartość true, by pobierać identyfikator playlisty, która identyfikuje przesłane na kanał treści. filmy.

using System; using System.IO; using System.Reflection; using System.Threading; using System.Threading.Tasks;  using Google.Apis.Auth.OAuth2; using Google.Apis.Services; using Google.Apis.Upload; using Google.Apis.Util.Store; using Google.Apis.YouTube.v3; using Google.Apis.YouTube.v3.Data;  namespace Google.Apis.YouTube.Samples {   /// <summary>   /// YouTube Data API v3 sample: retrieve my uploads.   /// Relies on the Google APIs Client Library for .NET, v1.7.0 or higher.   /// See https://developers.google.com/api-client-library/dotnet/get_started   /// </summary>   internal class MyUploads   {     [STAThread]     static void Main(string[] args)     {       Console.WriteLine("YouTube Data API: My Uploads");       Console.WriteLine("============================");        try       {         new MyUploads().Run().Wait();       }       catch (AggregateException ex)       {         foreach (var e in ex.InnerExceptions)         {           Console.WriteLine("Error: " + e.Message);         }       }        Console.WriteLine("Press any key to continue...");       Console.ReadKey();     }      private async Task Run()     {       UserCredential credential;       using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))       {         credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(             GoogleClientSecrets.Load(stream).Secrets,             // This OAuth 2.0 access scope allows for read-only access to the authenticated              // user's account, but not other types of account access.             new[] { YouTubeService.Scope.YoutubeReadonly },             "user",             CancellationToken.None,             new FileDataStore(this.GetType().ToString())         );       }        var youtubeService = new YouTubeService(new BaseClientService.Initializer()       {         HttpClientInitializer = credential,         ApplicationName = this.GetType().ToString()       });        var channelsListRequest = youtubeService.Channels.List("contentDetails");       channelsListRequest.Mine = true;        // Retrieve the contentDetails part of the channel resource for the authenticated user's channel.       var channelsListResponse = await channelsListRequest.ExecuteAsync();        foreach (var 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.         var uploadsListId = channel.ContentDetails.RelatedPlaylists.Uploads;          Console.WriteLine("Videos in list {0}", uploadsListId);          var nextPageToken = "";         while (nextPageToken != null)         {           var 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.           var playlistItemsListResponse = await playlistItemsListRequest.ExecuteAsync();            foreach (var playlistItem in playlistItemsListResponse.Items)           {             // Print information about each video.             Console.WriteLine("{0} ({1})", playlistItem.Snippet.Title, playlistItem.Snippet.ResourceId.VideoId);           }            nextPageToken = playlistItemsListResponse.NextPageToken;         }       }     }   } } 

Szukaj według słowa kluczowego

Następujący przykładowy kod wywołuje metodę search.list interfejsu API w celu pobrania wyników wyszukiwania powiązane z konkretnym słowem kluczowym.

using System; using System.Collections.Generic; using System.IO; using System.Reflection; using System.Threading; using System.Threading.Tasks;  using Google.Apis.Auth.OAuth2; using Google.Apis.Services; using Google.Apis.Upload; using Google.Apis.Util.Store; using Google.Apis.YouTube.v3; using Google.Apis.YouTube.v3.Data;  namespace Google.Apis.YouTube.Samples {   /// <summary>   /// YouTube Data API v3 sample: search by keyword.   /// Relies on the Google APIs Client Library for .NET, v1.7.0 or higher.   /// See https://developers.google.com/api-client-library/dotnet/get_started   ///   /// Set ApiKey to the API key value from the APIs & auth > Registered apps tab of   ///   https://cloud.google.com/console   /// Please ensure that you have enabled the YouTube Data API for your project.   /// </summary>   internal class Search   {     [STAThread]     static void Main(string[] args)     {       Console.WriteLine("YouTube Data API: Search");       Console.WriteLine("========================");        try       {         new Search().Run().Wait();       }       catch (AggregateException ex)       {         foreach (var e in ex.InnerExceptions)         {           Console.WriteLine("Error: " + e.Message);         }       }        Console.WriteLine("Press any key to continue...");       Console.ReadKey();     }      private async Task Run()     {       var youtubeService = new YouTubeService(new BaseClientService.Initializer()       {         ApiKey = "REPLACE_ME",         ApplicationName = this.GetType().ToString()       });        var searchListRequest = youtubeService.Search.List("snippet");       searchListRequest.Q = "Google"; // Replace with your search term.       searchListRequest.MaxResults = 50;        // Call the search.list method to retrieve results matching the specified query term.       var searchListResponse = await searchListRequest.ExecuteAsync();        List<string> videos = new List<string>();       List<string> channels = new List<string>();       List<string> playlists = new List<string>();        // Add each result to the appropriate list, and then display the lists of       // matching videos, channels, and playlists.       foreach (var searchResult in searchListResponse.Items)       {         switch (searchResult.Id.Kind)         {           case "youtube#video":             videos.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.VideoId));             break;            case "youtube#channel":             channels.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.ChannelId));             break;            case "youtube#playlist":             playlists.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.PlaylistId));             break;         }       }        Console.WriteLine(String.Format("Videos:\n{0}\n", string.Join("\n", videos)));       Console.WriteLine(String.Format("Channels:\n{0}\n", string.Join("\n", channels)));       Console.WriteLine(String.Format("Playlists:\n{0}\n", string.Join("\n", playlists)));     }   } } 

Prześlij film

Następujący przykładowy kod wywołuje metodę videos.insert interfejsu API w celu przesłania filmu do kanału powiązane z żądaniem.

using System; using System.IO; using System.Reflection; using System.Threading; using System.Threading.Tasks;  using Google.Apis.Auth.OAuth2; using Google.Apis.Services; using Google.Apis.Upload; using Google.Apis.Util.Store; using Google.Apis.YouTube.v3; using Google.Apis.YouTube.v3.Data;  namespace Google.Apis.YouTube.Samples {   /// <summary>   /// YouTube Data API v3 sample: upload a video.   /// Relies on the Google APIs Client Library for .NET, v1.7.0 or higher.   /// See https://developers.google.com/api-client-library/dotnet/get_started   /// </summary>   internal class UploadVideo   {     [STAThread]     static void Main(string[] args)     {       Console.WriteLine("YouTube Data API: Upload Video");       Console.WriteLine("==============================");        try       {         new UploadVideo().Run().Wait();       }       catch (AggregateException ex)       {         foreach (var e in ex.InnerExceptions)         {           Console.WriteLine("Error: " + e.Message);         }       }        Console.WriteLine("Press any key to continue...");       Console.ReadKey();     }      private async Task Run()     {       UserCredential credential;       using (var stream = new FileStream("client_secrets.json", 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         );       }        var youtubeService = new YouTubeService(new BaseClientService.Initializer()       {         HttpClientInitializer = credential,         ApplicationName = Assembly.GetExecutingAssembly().GetName().Name       });        var video = new Video();       video.Snippet = new VideoSnippet();       video.Snippet.Title = "Default Video Title";       video.Snippet.Description = "Default Video Description";       video.Snippet.Tags = new string[] { "tag1", "tag2" };       video.Snippet.CategoryId = "22"; // See https://developers.google.com/youtube/v3/docs/videoCategories/list       video.Status = new VideoStatus();       video.Status.PrivacyStatus = "unlisted"; // or "private" or "public"       var filePath = @"REPLACE_ME.mp4"; // Replace with path to actual movie file.        using (var fileStream = new FileStream(filePath, FileMode.Open))       {         var videosInsertRequest = youtubeService.Videos.Insert(video, "snippet,status", fileStream, "video/*");         videosInsertRequest.ProgressChanged += videosInsertRequest_ProgressChanged;         videosInsertRequest.ResponseReceived += videosInsertRequest_ResponseReceived;          await videosInsertRequest.UploadAsync();       }     }      void videosInsertRequest_ProgressChanged(Google.Apis.Upload.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 videosInsertRequest_ResponseReceived(Video video)     {       Console.WriteLine("Video id '{0}' was successfully uploaded.", video.Id);     }   } }