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, я рекомендую открыть здесь билет для улучшения или дефекта.