0

Программа просто зависает, пытаясь сделать запрос и никогда не продолжить. Пытался использовать try и ctach, но он не бросает никаких исключений или ошибок.Когда вы пытаетесь использовать google api v3 для извлечения моего списка загрузок видео YouTube, это не будет продолжаться после запроса?

Это мой код в новом классе:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
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 Youtube 
{ 


    class Youtube_Retrieve_Uploads 
    { 
     public Youtube_Retrieve_Uploads() 
     { 
      try 
      { 
       Run().Wait(); 
      } 
      catch (AggregateException ex) 
      { 
       foreach (var e in ex.InnerExceptions) 
       { 
        Console.WriteLine("Error: " + e.Message); 
       } 
      } 
     } 

     private async Task Run() 
     { 
      UserCredential credential; 
      using (var stream = new FileStream(@"C:\jason file\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; 
       } 
      } 
     } 
    } 
} 

Я использовал точку останова и когда он делает строку:

var channelsListResponse = await channelsListRequest.ExecuteAsync(); 

Это просто висит программа никогда не продолжать.

+0

Я нашел, как загрузить список видео мои видео, а также для удаления видео. Сегодня я загружу свой код. –

+0

По другому вопросу я пришел сюда, чтобы посмотреть. Но я предполагаю, что вы нашли решение, основанное на этом комментарии? – Don

+0

Да, это еще одно сочетание двух вопросов. Чтобы удалить другой? –

ответ

0

Я признаю, что это не идеальное решение, а одно из возможных, но в моем случае я удалил ключевые слова «ожидание» и «асинхронные»(), и теперь это работает.

var channelsListResponse = channelsListRequest.Execute(); 

вместо

var channelsListResponse = await channelsListRequest.ExecuteAsync(); 

И

var playlistItemsListResponse = playlistItemsListRequest.Execute(); 

вместо

var playlistItemsListResponse = await playlistItemsListRequest.ExecuteAsync();