【问题标题】:Check if YouTube Channel is Live Streaming检查 YouTube 频道是否正在直播
【发布时间】:2020-09-08 04:35:21
【问题描述】:

我正在尝试构建一个 VB.net 站点,以在频道名称旁边显示图像(如果它是实时流媒体)。我当前构建了包含 URL 和图像的页面,并设置了搜索 API:

https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=[ChannelID]&type=video&eventType=live&key=[API-KEY]

我知道这是有效的,因为我在正常访问链接时看到了 JSON。

唯一的问题是我不知道如何在 VB 中发送 HTTP 请求。我打算在测试时在 page_load 上执行这个请求,但据我所知:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim request As WebRequest = WebRequest.Create("https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=[ChannelID]&type=video&eventType=live&key=[API-KEY]")
End Sub

如何在 VB.net 中发送此请求?我将如何读取返回的 JSON?

【问题讨论】:

    标签: vb.net request httprequest youtube-data-api httpresponse


    【解决方案1】:

    我能够将JSON 返回到String 变量中:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim request As WebRequest = WebRequest.Create("https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=[ChannelID]&type=video&eventType=live&key=[API-KEY]")
        Dim streamReader As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream)
    
        Dim youtube As String = streamReader.ReadToEnd
    
        MsgBox(youtube)
    End Sub
    

    我已将其修改为一个函数,以允许检查任何频道 ID。它最初返回一个boolean,但我将它调整为返回一个integer 以执行错误处理,而无需修改返回语句或处理后面代码中其他部分的函数调用。

    Protected Function IsLiveStreaming(channelID As String) As Integer
    
        Try
            Dim request As WebRequest = WebRequest.Create("https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=" & channelID & "&type=video&eventType=live&key=[API-KEY]")
    
            Dim response As WebResponse = request.GetResponse
    
            Dim streamReader As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream)
            Dim youtube As String = streamReader.ReadToEnd
    
            Dim obj As Newtonsoft.Json.Linq.JObject = JObject.Parse(youtube)
            Dim arr As JArray = obj("items")
    
            If arr.Count > 0 Then
                Return True
            Else
                Return False
            End If
        Catch ex As Exception
            'Typically a 403 error from exceeding quota on YouTube api
            Return -1
        End Try
    
        Return False
    
    End Function
    

    【讨论】:

      猜你喜欢
      • 2015-12-03
      • 2015-02-19
      • 2017-02-12
      • 2016-07-16
      • 2013-07-03
      • 2023-03-06
      • 2018-01-07
      相关资源
      最近更新 更多