检查 YouTube 频道是否正在直播

Check if YouTube Channel is Live Streaming

我正在尝试构建一个 VB.net 网站,以便在直播时在频道名称旁边显示图像。我当前构建了包含 URL 和图像的页面,并且设置了搜索 API:

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

我知道这是有效的,因为我在正常跟随 link 时看到 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?

我能够将 JSON return 编辑到 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 的函数。它最初 returned a boolean,但我将其调整为 return and integer 以执行错误处理,而无需修改 return 语句或处理后面代码其他部分的函数调用。

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