如何在我的asp.net应用程序中获取Youtube嵌入视频的描述?

时间:2012-09-04 02:16:52

标签: asp.net vb.net youtube youtube-api youtube.net-api

我使用下面的代码来获取我的asp.net应用程序中嵌入的youtube视频的标题和说明。我能够看到标题,但没有描述。

我使用Atomfeed来做这件事......

问题是我为所有视频获取了“Google.GData.Client.AtomTextConstruct”的说明。

Private Function GetTitle(ByVal myFeed As AtomFeed) As String
    Dim strTitle As String = ""
    For Each entry As AtomEntry In myFeed.Entries
        strTitle = entry.Title.Text
    Next
    Return strTitle
End Function

Private Function GetDesc(ByVal myFeed As AtomFeed) As String
    Dim strDesc As String = ""
    For Each entry As AtomEntry In myFeed.Entries
        strDesc = entry.Summary.ToString()
    Next
    Return strDesc
End Function

2 个答案:

答案 0 :(得分:1)

我相信当解析原子Feed中的XML时,不会处理描述。看看这个:http://code.google.com/p/google-gdata/wiki/UnderstandingTheUnknown

  

但是对于那些不被理解的事情会发生什么?他们最终成为了   ExtensionElements集合的一个元素,是其成员   所有继承自AtomBase的类,如AtomFeed,AtomEntry,   EventEntry等...

所以,我们可以做的是从扩展元素中拉出描述:

Dim query As New FeedQuery()
Dim service As New Service()
query.Uri = New Uri("https://gdata.youtube.com/feeds/api/standardfeeds/top_rated")
Dim myFeed As AtomFeed = service.Query(query)
For Each entry In myFeed.Entries
    For Each obj As Object In entry.ExtensionElements
        If TypeOf obj Is XmlExtension Then
            Dim xel As XElement = XElement.Parse(TryCast(obj, XmlExtension).Node.OuterXml)
            If xel.Name = "{http://search.yahoo.com/mrss/}group" Then
                Dim descNode = xel.Descendants("{http://search.yahoo.com/mrss/}description").FirstOrDefault()
                If descNode IsNot Nothing Then
                    Console.WriteLine(descNode.Value)
                End If
                Exit For
            End If
        End If
    Next
Next

另外,你得到“Google.GData.Client.AtomTextConstruct”的原因是因为Summary是Google.GData.Client.AtomTextConstruct类型的对象,所以做entry.Summary.ToString()只是给你默认ToString()行为。你通常会做Summary.Text,但这当然是空白的,因为正如我上面说的那样,库没有正确处理它。

答案 1 :(得分:0)

对于youtube,我使用Google.GData.YouTube获取每个视频的信息。

这样的事情会从视频中返回大量信息。

Dim yv As Google.YouTube.Video

url = New Uri("http://gdata.youtube.com/feeds/api/videos/" & video.Custom)

r = New YouTubeRequest(New YouTubeRequestSettings("??", "??"))
yv = r.Retrieve(Of Video)(url)

然后可以通过以下方式获得描述:yv.Description