YouTube API: как получить 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 для прямой трансляции "Stream now"?


person C. Olimar    schedule 18.04.2016    source источник
comment
Можете ли вы опубликовать образец ответа, полученного с YouTube? Вы уверены, что указываете событие, которое действительно началось и имеет действующий чат / идентификатор?   -  person JAL    schedule 18.04.2016
comment
Обновил публикацию запрошенной информацией. Прямая трансляция ведется, и чат активен на момент запроса. Если я не веду потоковую передачу, в ответе, как и ожидалось, нет элементов.   -  person C. Olimar    schedule 18.04.2016
comment
Вы говорите о liveChatId liveBroadcast или liveChatId пользователя (для запрета или удаления)?   -  person noogui    schedule 19.04.2016
comment
LiveChatId liveBroadcast, чтобы я мог читать чат трансляции.   -  person C. Olimar    schedule 19.04.2016
comment
По сути, мне просто нужно знать, где взять liveChatId для youtube.liveChatMessages.list, потому что документация неверна.   -  person C. Olimar    schedule 19.04.2016
comment
@ C.Olimar Возможно, у вас уже есть решение. Но я заметил, что это не было помечено как решенное, и подумал, что поделюсь своим решением.   -  person hmedia1    schedule 08.05.2017


Ответы (3)


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

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

сначала получите videoId

response.items[0].id.videoId

Затем получите liveStreamingDetails

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

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

response.items[0].liveStreamingDetails.activeLiveChatId
person Kim Nguyen    schedule 17.07.2017

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

Да, ты можешь. У меня есть автоматизированная система, которая использует только эту настройку для потоков "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": 1,
        "resultsPerPage": 5
    },
    "items": [
    {
        "kind": "youtube#liveStream",
        "etag": "\"j1yhvAPYkjsoF8yjoVGsTlIFzCS/SRutyOE9apA9K1qAdh2s9ZYE-Dp\"",
        "id": "e5LT2xEURi9BQzf2rLe5eB3325081929219850",  <-- liveBroadcasts .boundStreamId
        "snippet": {
            "publishedAt": "2016-09-05T23:21:33.000Z",
            "channelId": "QIr0IE1wRTRj2SUku4eFj0mK",
            "title": "Default Stream",
            "description": "",
            "isDefaultStream": true
        },
        "status": {
            "streamStatus": "active",
            "healthStatus": {
                "status": "good"
            }
        }
    }
    ]
}

Прямые трансляции:

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
    },
    "items": [
    {
        "kind": "youtube#liveBroadcast",
        "etag": "\"j1yhvAPYkjsoF8yjoVGsTlIFzCS/mK_CAQ9rrVulNXbKbeIveFnQPd8\"",
        "id": "eXrevq9RzVQ",
        "snippet": {
            "publishedAt": "2017-05-07T16:58:05.000Z",
            "channelId": "QIr0IE1wRTRj2SUku4eFj0mK",
            "title": "514306-pgju",
            "description": "",
            "scheduledStartTime": "1970-01-01T00:00:00.000Z",
            "actualStartTime": "2017-05-08T01:21:45.000Z",
            "isDefaultBroadcast": true,
            "liveChatId": "NiHXTCKPfAyCJrPgREDRnvMSL0N5LBiVUlZoLSULA9vqyoR"
        },
        "status": {
            "lifeCycleStatus": "live",
            "privacyStatus": "unlisted",
            "recordingStatus": "recording"
        },
        "contentDetails": {
            "boundStreamId": "e5LT2xEURi9BQzf2rLe5eB3325081929219850", <-- LiveStreams .id
            "boundStreamLastUpdateTimeMs": "2016-09-05T23:21:33.749Z",
            "monitorStream": {
                "enableMonitorStream": false
            },
            "enableEmbed": true,
            "enableDvr": true,
            "enableContentEncryption": false,
            "startWithSlate": false,
            "recordFromStart": true,
            "enableClosedCaptions": false,
            "closedCaptionsType": "closedCaptionsDisabled",
            "enableLowLatency": false,
            "projection": "rectangular"
        }
    }
    ]
}

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

person hmedia1    schedule 08.05.2017

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

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

person JAL    schedule 04.05.2016
comment
Это не совсем так. Вы можете вручную создать прямую трансляцию и получать сообщения чата из этого потока. Но насчет Stream Now вы правы. Спасибо. :) - person C. Olimar; 05.05.2016
comment
@ C.Olimar: Могу подтвердить, что создание события вручную работает. Спасибо :) - person Avindra Goolcharan; 05.06.2016
comment
@AvindraGoolcharan, можете ли вы дать подсказку по коду, как это сделать? - person KMX; 18.11.2016
comment
@KMX согласно моему комментарию, я вручную создал событие, то есть код не использовался. Просто используйте пользовательский интерфейс YouTube - person Avindra Goolcharan; 22.11.2016