【问题标题】:Can't get live chat from stream I do not own无法从我不拥有的流中进行实时聊天
【发布时间】:2019-12-07 08:08:05
【问题描述】:

我无法使用 YouTubeService_V3 API 从不属于我的直播中读取聊天消息。

我想让服务器从我不拥有的直播流中接收聊天消息。我只是打算读取这些数据而不是写入。

如果我将 EventType 设置为 Live 并将 Type 设置为视频,我可以使用 YoutubeService/v3/search/list 来查找直播流,这会在我调试代码时提取有效的直播流。

我似乎无法从这些流中获取 LiveChatID,以便与 YouTubeService/v3/LiveChatMessages/List 一起使用。

对此的任何帮助都会非常好。聊天消息已经公开,所以我认为没有隐私问题。

归根结底,我希望此服务器采用 broadcastID,例如“pM4IfHZ5qcY”,并且能够读取聊天消息,即使它不是频道或流我拥有的。

我希望有某种方法可以使用 YouTubeService_V3 从广播 ID 中查找 LiveChatID,然后能够使用该广播 ID 从我不拥有的直播流中读取消息

【问题讨论】:

    标签: youtube-livestreaming-api


    【解决方案1】:

    您是否正在寻找一种方法来从您不拥有的直播中读取聊天消息?

    即使您知道 liveChatId,您也无法收到不属于您的直播的聊天消息。

    但我只知道一种方法。

    这是一个棘手的方法,但您可以在网络上调用聊天(网址为https://www.youtube.com/live_chat?v=videoId)。

    然后,你就可以收到聊天消息了。

    【讨论】:

      【解决方案2】:

      您必须先发送带有频道 ID 的 youtube/v3/search 请求。当您获得直播的视频 ID 时,您必须发送带有视频 ID 的 youtube/v3/videos 请求,然后您才能获得 liveChatID... 这是 Python 中的示例。 ..

      API_KEY = 'XXXXXXXXXXXXXXXXX'
      channelID = '<Some Channel ID>'
      
      
      params = {'part': 'id',
              'key': API_KEY,
              'channelId': channelID,
              'eventType': 'live',
              'type': 'video',
              'order': 'viewCount',
              'fields': 'items(id(videoId))'}
      
      url = 'https://www.googleapis.com/youtube/v3/search'
      r = requests.get(url, headers=None, params=params).json()
      
      vID = r.get('items')[0].get('id').get('videoId')
      
      
      
      params = {'part': 'liveStreamingDetails,statistics,snippet',
              'key': API_KEY,
              'id': vID,
              'fields': 'items(id,liveStreamingDetails(activeLiveChatId,concurrentViewers,actualStartTime),' + \
                        'snippet(channelId,channelTitle,description,liveBroadcastContent,publishedAt,thumbnails,title),statistics)'}
      
      url = 'https://www.googleapis.com/youtube/v3/videos'
      r = requests.get(url, headers=None, params=params).json()
      
      
      streamData = dict(r.get('items')[0])
      
      chatID = streamData['liveStreamingDetails']['activeLiveChatId']
      
      
      params = {'part': 'snippet,authorDetails',
              'key': API_KEY,
              'liveChatId': chatID,
              'profileImageSize': 720,
              'maxResults': 500}
      
      url = 'https://www.googleapis.com/youtube/v3/liveChat/messages'
      messages = requests.get(url, headers=None, params=params).json()
      
      #messages contains chat messages
      

      我希望有更好的方法,因为仅凭“搜索”就占用了您配额的 100 分,而 google 只给您 10,000 分...

      【讨论】:

      • 这帮助很大!我能够放弃使用 OAuth,而只需使用 API 密钥。因为我提前知道了视频 ID,所以我能够避免搜索它,而且这种新方法在我的配额上似乎也更容易一些。非常感谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 2016-07-21
      • 1970-01-01
      • 2011-07-12
      相关资源
      最近更新 更多