我使用下面的代码来获取我的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
答案 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