Как получить статус видео с помощью API данных YouTube с помощью C#

#c# #api #youtube-api #youtube-data-api

Вопрос:

Я пробовал код в течение 3 дней для получения информации о статусе видео на моем канале YouTube, но не преуспел.

Ниже приведен код, который я использовал, я могу writeln() указать название, идентификатор, описание видео, но не могу получить статус видео.

 private async Task Editvideo()
{
    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.
                // playlistItem.Status = new PlaylistItemStatus();
                // string videostatus = playlistItem.Status.PrivacyStatus;
                // Console.WriteLine(videostatus);
                Console.WriteLine("{0} ({1})", playlistItem.Snippet.Title, playlistItem.Snippet.ResourceId.VideoId);
            }

            nextPageToken = playlistItemsListResponse.NextPageToken;
        }
    }
}
 

Ответ №1:

Ответ на ваш вопрос будет немедленным, если принять во внимание спецификацию параметра part запроса PlaylistItems.list конечной точки API:

part (строка)

part Параметр указывает разделенный запятыми список одного или нескольких playlistItem свойств ресурса, которые будут включены в ответ API.

Если параметр определяет свойство, содержащее дочерние свойства, дочерние свойства будут включены в ответ. Например, в playlistItem ресурсе snippet свойство содержит множество полей, включая title , description position , и resourceId свойства. Таким образом, если вы зададите part=snippet этот параметр , ответ API будет содержать все эти свойства.

Следующий список содержит part имена, которые можно включить в значение параметра:

  • contentDetails
  • id
  • snippet
  • status

Теперь должно быть очевидно, что при необходимости status свойство, возвращаемое конечной точкой, part также должно содержать status , как показано ниже:

 var playlistItemsListRequest = youtubeService
        .PlaylistItems.List("snippet,status");            
 

Благодаря этому изменению кода ответ, полученный от API, будет включать запрошенный объект в разделе playlistItem.Status .

Комментарии:

1. О, действительно, когда нам нужны результаты возвращаемых status свойств, part необходимо их содержать. Я переоделся, part как вы сказали выше, и код работал нормально. Большое Вам спасибо