API YouTube: как получить liveChatId?

В документации сказано:

"Параметр liveChatId указывает идентификатор чата, сообщения которого будут возвращены. Идентификатор живого чата, связанный с трансляцией, возвращается в свойстве snippet.liveChatId ресурса liveBroadcast".

Но при использовании API Explorer и youtube.liveBroadcasts.list для получения фрагмента liveBroadcast отсутствует свойство liveChatId для возвращаемого результата.

Я использую следующий URI (ключ опущен):

https://www.googleapis.com/youtube/v3/liveBroadcasts?part=snippet&mine=true

Что я делаю неправильно?

Вот ответ (некоторые значения заменены на...):

{
 "kind": "youtube#liveBroadcastListResponse",
 "etag": "...",
 "pageInfo": {
  "totalResults": 1,
  "resultsPerPage": 5
 },
 "items": [
  {
   "kind": "youtube#liveBroadcast",
   "etag": "...",
   "id": "...",
   "snippet": {
    "publishedAt": "2016-04-18T17:04:24.000Z",
    "channelId": "...",
    "title": "...",
    "description": "...",
    "thumbnails": {
     "default": {
      "url": "...",
      "width": 120,
      "height": 90
     },
     "medium": {
      "url": "...",
      "width": 320,
      "height": 180
     },
     "high": {
      "url": "...",
      "width": 480,
      "height": 360
     },
     "standard": {
      "url": "...",
      "width": 640,
      "height": 480
     },
     "maxres": {
      "url": "...",
      "width": 1280,
      "height": 720
     }
    },
    "scheduledStartTime": "1970-01-01T00:00:00.000Z",
    "actualStartTime": "2016-04-18T17:04:24.250Z",
    "isDefaultBroadcast": false
   }
  }
 ]
}

Во время запроса также происходит активный разговор в потоке.

Очевидно, что прямые трансляции, созданные с использованием "Поток сейчас", не содержат liveChatId, даже если они содержат чат.

Есть ли способ получить liveChatId для прямой трансляции "Поток сейчас"?

3 ответа

Это довольно старая запись, но, глядя на то, как я искал ответ по всему Интернету, но не смог найти ее, надеюсь, кто-то посчитает это полезным.

Чтобы получить liveChatId живого события, которое не принадлежит вам, вы можете сделать что-то вроде следующего:

во-первых, получить идентификатор видео

response.items[0].id.videoId

Тогда получите liveStreamingDetails

buildApiRequest('GET',
        '/youtube/v3/videos', {
            'id': videoID,
            'part': 'snippet,contentDetails,statistics,liveStreamingDetails'
        });

Теперь вы можете получить liveChatId из приведенного выше ответа через:

response.items[0].liveStreamingDetails.activeLiveChatId

Есть ли способ получить liveChatId для прямой трансляции "Поток сейчас"?

Да, ты можешь. У меня есть автоматизированная система, которая использует только эту настройку для потоков "Stream Now".

Из того, что я вижу, единственное, что я делаю для вас, это указать либо broadcastType=all или же broadcastType=persistent в URI API.

Вы заметите, что мой поток является потоком по умолчанию, но это не обязательно. На самом деле, в основном единственный полезный аспект LiveStream конечная точка вообще является .status.configurationIssues Информация. (Даже не streamName адрес приема совпадает)

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

LiveStreams:

URI: https://www.googleapis.com/youtube/v3/liveStreams/?part=status,snippet&default=true 

Отклик:

{
    "kind": "youtube # liveStreamListResponse", "etag": "\" j1yhvAPYkjsoF8yjoVGsTlIFzCS / rqgpDvaMrWOPqUrLPxJd4XUFoKg \ "", "pageInfo": {
    "totalResults: {
    " itemsR "):",Page ":",Page ":",Page ":",Page ":",Page ":", P5 ":", 1P ":", 1P "": 1 kind": "youtube#liveStream",
        "etag": "\"j1yhvAPYkjsoF8yjoVGsTlIFzCS/SRutyOE9apA9K1qAdh2s9ZYE-Dp\"",
        "id ":" e5LT2xEURi9BQzf2ret50 " 215502 " -09-05T23: 21: 33.000Z "," channelId ":" QIr0IE1wRTRj2SUku4eFj0mK "," title ":" Поток по умолчанию "," description ":" "," isDefaultStream ": true}," status ": {
    " streamStatus ": "active", "healthStatus": {
    "status": "good"}}}]} 

LiveBroadcasts:

URI: https://www.googleapis.com/youtube/v3/liveBroadcasts/?part=status,contentDetails,snippet,id&broadcastStatus=active&broadcastType=persistent

Отклик:

{
    "kind": "youtube # liveBroadcastListResponse",
    "etag": "\" j1yhvAPYkjsoF8yjoVGsTlIFzCS / MFvQunCBDdqlkhPMness6LN1zao \ "",
    "pageInfo": {
        "totalResults": 1,
        "resultsPerPage": 5
    },
    "Предметы": [
    {
        "kind": "youtube # liveBroadcast",
        "etag": "\" j1yhvAPYkjsoF8yjoVGsTlIFzCS / mK_CAQ9rrVulNXbKbeIveFnQPd8 \ "",
        "id": "eXrevq9RzVQ",
        "фрагмент": {
            "ключ к публикации": "2017-05-07T16: 58: 05.000Z",
            "channelId": "QIr0IE1wRTRj2SUku4eFj0mK",
            "title": "514306-pgju",
            "описание": "",
            "scheduleStartTime": "1970-01-01T00: 00: 00.000Z",
            "actualStartTime": "2017-05-08T01: 21: 45.000Z",
            "isDefaultBroadcast": правда,
            "liveChatId": "NiHXTCKPfAyCJrPgREDRnvMSL0N5LBiVUlZoLSULA9vqyoR"
        },
        "статус": {
            "lifeCycleStatus": "жить",
            "privacyStatus": "не в списке",
            "recordingStatus": "запись"
        },
        "contentDetails": {
            "boundStreamId": "e5LT2xEURi9BQzf2rLe5eB3325081929219850", <- LiveStreams.id
            "boundStreamLastUpdateTimeMs": "2016-09-05T23:21:33.749Z",
            "monitorStream": {
                "enableMonitorStream": false
            },
            "enableEmbed": правда,
            "enableDvr": правда,
            "enableContentEncryption": false,
            "startWithSlate": ложь,
            "recordFromStart": правда,
            "enableClosedCaptions": false,
            "closedCaptionsType": "closedCaptionsDisabled",
            "enableLowLatency": ложь,
            "проекция": "прямоугольный"
        }
    }
    ]
}

Просто заметьте, что, как вы уже заметили, работа с событиями "Stream Now" через API, а не только с liveChatId Существуют некоторые параметры конфигурации, которые изменяют способ возврата результатов с использованием параметров по умолчанию, и иногда они могут изменять порядок и этапы процесса. Я даже обнаружил, что на самом деле есть несколько параметров, которые работают с LiveStream конечная точка, которая не задокументирована, и аналогично для LiveBroadcast конечная точка. Дополнительно есть некоторые ошибки.

YouTube в настоящее время не поддерживает смешивание вызовов API с "Stream Now" и создание событий через API. Нет возможности получать сообщения чата из трансляций "Поток сейчас", только трансляции, созданные полностью с помощью API.

Если вы считаете, что это дефект API, я рекомендую открыть здесь билет для улучшения или дефекта.

Другие вопросы по тегам