Идентификатор прямой трансляции с другого канала

Я пытаюсь получить сообщения livechat через API С# с другого канала. Для этого мне нужен идентификатор liveboradcast. Мне удалось получить живое видео и идентификатор через поиск, но, похоже, этот идентификатор не является идентификатором прямой трансляции.

Это мой код до сих пор. Как я уже сказал, он возвращает видео и идентификатор, но ответ на трансляцию с этим идентификатором равен 0. Пример:

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

Кто-нибудь знает, где я могу получить идентификатор прямой трансляции!?

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

person macaroni    schedule 09.05.2017    source источник


Ответы (1)


Насколько я знаю, вы можете искать только трансляции, созданные каналом, на котором вы аутентифицированы.

Попробуйте использовать search.list:

  • Возвращает набор результатов поиска, соответствующих параметрам запроса, указанным в запросе API.

Как указано в этом связанном сообщении SO, search.list возвращает видео с определенного канала без аутентификации в качестве этого канала/пользователя. , если вы знаете, что этот канал channelId.

HTTPS-запрос:

HTTP GET https://www.googleapis.com/youtube/v3/search?part=snippet&channelId={channelId}&eventType=live&type=video&key={YOUR_API_KEY}
person Mr.Rebot    schedule 11.05.2017