2017-05-09 4 views
0

Ich versuche, die Livechat Nachrichten vie die C# API von einem anderen Kanal zu bekommen. Um dies zu erreichen, brauche ich die liveboradcast ID. Ich habe es geschafft, das Live-Video und ID über die Suche zu bekommen, aber es scheint, dass diese ID nicht die Live-Broadcast-ID ist.Livebroadcast ID von verschiedenen Kanal

Das ist mein Code bisher. Wie ich sagte, es ein Video Kosten und die ID, aber die Broadcast-Antwort mit dieser ID ist 0. Beispiel:

„[GER/HD] Boss Riesenaffe/Megapithecus Hard, oder auch nicht;) ARK: Überleben Evolved (t3CwM9MJSNI) "

Wer weiß, wo ich die Live Broadcast ID bekommen kann?

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); 
     } 

Antwort

0

AFAIK, Sie können nur nach Sendungen suchen, für die der Kanal, den Sie authentifiziert haben, erstellt wurde.

Versuchen search.list mit:

  • Gibt eine Auflistung von Suchergebnissen, die die Abfrageparameter in der API-Anforderung angegebenen übereinstimmen.

Wie in diesen verwandten SO post erklärte search.list Video von einem bestimmten Kanal zurückkehrt, ohne wie dieser Kanal/Benutzer authentifiziert wird, wenn Sie channelId dass Kanals kennen.

HTTPS-Anfrage:

HTTP GET https://www.googleapis.com/youtube/v3/search?part=snippet&channelId={channelId}&eventType=live&type=video&key={YOUR_API_KEY} 
Verwandte Themen