2017-05-09 10 views
0

ライブチャットメッセージを別のチャネルのc#APIで取得しようとしています。 これを達成するには、liveboradcast idが必要です。 私は検索でライブビデオとIDを取得できましたが、このIDはライブブロードキャストIDではないようです。異なるチャネルのライブブロードキャストID

これまでのコードです。 私はそれがビデオとIDを返しますが、このIDを持つブロードキャスト応答が0 例で言ったように:ボスRiesenaffe/Megapithecusハード、オーデルオッシュのNICHTは、[GER/HD]」

;)ARK:サバイバルエボルヴ(t3CwM9MJSNI) "

誰でもどこでlivebroadcast idを取得できるのか知っていますか?

Stream SStream = new FileStream("client_secrets.json", FileMode.Open); 

     UserCredential Credentials = await GoogleWebAuthorizationBroker.AuthorizeAsync(GoogleClientSecrets.Load(SStream).Secrets, new[] { YouTubeService.Scope.YoutubeForceSsl }, "user", CancellationToken.None, new FileDataStore(this.GetType().ToString())); 


     Service = new YouTubeService(new BaseClientService.Initializer 
     { 
      HttpClientInitializer = Credentials, 
      ApplicationName = "name" 
     }); 

     var searchListRequest = Service.Search.List("snippet"); 

     searchListRequest.EventType = SearchResource.ListRequest.EventTypeEnum.Live; 

     searchListRequest.Type = "video"; 

     searchListRequest.ChannelId = "thechannelid"; 

     searchListRequest.MaxResults = 50; 

     var searchListResponse = await searchListRequest.ExecuteAsync(); 

     List<string> videos = new List<string>(); 

     string ID = null; 
     foreach (var searchResult in searchListResponse.Items) 

     { 

      switch (searchResult.Id.Kind) 

      { 
       case "youtube#video": 
        ID = searchResult.Id.VideoId; 
        videos.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.VideoId)); 
        break; 
      } 
     } 

     Console.WriteLine(String.Format("Videos:\n{0}\n", string.Join("\n", videos))); 

     LiveBroadcastsResource.ListRequest Request = Service.LiveBroadcasts.List("id,snippet,contentDetails,status"); 
     Request.BroadcastType = LiveBroadcastsResource.ListRequest.BroadcastTypeEnum.All; 
     //Request.BroadcastStatus = LiveBroadcastsResource.ListRequest.BroadcastStatusEnum.Active; 
     Request.MaxResults = 10; 
     Request.Id = ID; 
     Console.WriteLine("ID: " + Request.Id); 

     //Request.Mine = false; 

     var BroadCastResponse = Request.Execute(); 
     Console.WriteLine(BroadCastResponse.Items.Count); 
     foreach (LiveBroadcast c in BroadCastResponse.Items) 
     { 
      Console.WriteLine("Title: " + c.Snippet.Title); 
     } 

答えて

0

AFAIKでは、認証されたチャネルが作成したブロードキャストのみを検索できます。

search.listを使用してみてください:

  • は、APIリクエストで指定されたクエリパラメータに一致する検索結果のコレクションを返します。

この関連SO postで述べたように、あなたがそのチャンネルのchannelIdを知っていれば、search.listは、そのチャンネル/ユーザーとして認証されずに、特定のチャネルからビデオを返します。

HTTPS要求:

HTTP GET https://www.googleapis.com/youtube/v3/search?part=snippet&channelId={channelId}&eventType=live&type=video&key={YOUR_API_KEY} 
関連する問題