在 ASP.NET 网站中显示来自 YouTube 频道的视频






4.86/5 (37投票s)
如何在 ASP.NET 网站中显示来自 YouTube 频道的视频
引言
YouTube 已牢固地融入我们的生活。现在,许多用户无法想象没有这个网站的生活。由于其简单易用,YouTube 已成为最受欢迎的视频分享网站,也是世界上最受欢迎的网站之一。与许多流行的 Google 服务一样,YouTube 也有 Data
API。此 API 允许您与此服务交互。这为网站和各种应用程序的开发人员提供了巨大的机会。使用此 API,开发人员可以查询视频、搜索视频、在 YouTube 上上传视频、创建和阅读评论等等。
问题
我们的目标是从著名俄罗斯 DJ 的 YouTube 频道中查询所有视频,并在网站上显示它们。
问题的解决方案
- 要使用 YouTube
Data
API,您需要下载并安装 Google Data API 库。然后将 Google.GData.Client.dll、Google.GData.YouTube.dll、Google.GData.Extensions.dll 文件复制到网站项目的 Bin 文件夹中,并添加对它们的引用。如何在我的另一篇文章 在 ASP.NET 网站中使用 Google Calendar 中进行了详细描述。 - 要使用 YouTube
Data
API 提供的所有可能性,您需要获取 开发者密钥。
开发者密钥唯一地标识将与 YouTube 服务交互的应用程序。您可以在 此处 获取它。 - 让我们创建一个类来表示我们网站上的 YouTube 视频。此类对象是一个具有属性的视频:
VideoId
和Title
。
VideoId
代表 YouTube 上视频的唯一标识符,Title
是 YouTube 上视频的标题public class YouTubeVideoObject { public string VideoId { get; set; } public string Title { get; set; } }
- 让我们创建一个将与 YouTube 交互的类,并返回给我们频道的所有视频(
YouTubeVideoObject
类的对象)public class YouTubeVideoHelper { const string YOUTUBE_CHANNEL = "BobinaMusic"; const string YOUTUBE_DEVELOPER_KEY = "AI39si6JqO_f2b_JWSV3QUbcwg5S-1RJ4- kiieosBZy9r1ORkCAv7BT5tLp579Tzmly8rvOVm3Jyueq3ZVqUNt1blS4DcoVppA"; public static YouTubeVideoObject[] GetVideos() { YouTubeRequestSettings settings = new YouTubeRequestSettings("Bobina Channel", YOUTUBE_DEVELOPER_KEY); YouTubeRequest request = new YouTubeRequest(settings); string feedUrl = String.Format ("http://gdata.youtube.com/feeds/api/users/{0}/uploads?orderby=published", YOUTUBE_CHANNEL); Feed<Video> videoFeed = request.Get<Video>(new Uri(feedUrl)); return (from video in videoFeed.Entries select new YouTubeVideoObject() {VideoId = video.VideoId, Title = video.Title}).ToArray(); } }
常量的描述
YOTUBE_CHANNEL
- 我们将从中显示视频的频道YOUTUBE_DEVELOPER_KEY
- 开发者密钥,在步骤 2 中获得
GetVideos() 方法的描述
要在 YouTube
Data
API 上执行任何操作,必须创建YouTubeRequest
类的对象,将YouTubeRequestSettings
类的对象作为参数传递给构造函数。YouTubeRequestSettings
类指定应用程序名称(实际上,它是任何string
)和开发者密钥YouTubeRequestSettings settings = new YouTubeRequestSettings("Bobina Channel", YOUTUBE_DEVELOPER_KEY); YouTubeRequest request = new YouTubeRequest(settings);
接下来,我们需要从其中读取视频的 URL。之后,我们使用
YouTubeRequest
类的Get()
方法来获取Feed
类的对象。此对象包含一组YouTubeEntry
对象。每个YouTubeEntry
类的对象都包含有关视频的相关信息string feedUrl = String.Format ("http://gdata.youtube.com/feeds/api/users/{0}/uploads?orderby=published", YOUTUBE_CHANNEL); Feed<Video> videoFeed = request.Get<Video>(new Uri(feedUrl));
然后,我们获取一个
YouTubeVideoObject
对象的数组(此类的创建已在步骤 3 中完成),并从该方法中返回它return (from video in videoFeed.Entries select new YouTubeVideoObject() {VideoId = video.VideoId, Title = video.Title}).ToArray();
- 现在我们有了一个视频数组(
YouTubeVideoObject
对象的数组)。我们需要做的就是将这些视频显示在我们的网站上。为此,在网站的 aspx 页面中创建以下代码<asp:Repeater ID="VideosRepeater" runat="server"> <ItemTemplate> <%# Eval("Title") %> <br /> <object width="427" height="258"> <param name="movie" value="http://www.youtube.com/v/ <%# Eval("VideoId") %>"></param> <param name="allowFullScreen" value="true"></param> <param name="allowscriptaccess" value="always"></param> <param name="wmode" value="opaque"></param> <embed src="http://www.youtube.com/v/<%# Eval("VideoId") %>?" type="application/x-shockwave-flash" width="427" height="258" allowscriptaccess="always" allowfullscreen="true" wmode="opaque"></embed> </object> </ItemTemplate> <SeparatorTemplate> <br /> </SeparatorTemplate> </asp:Repeater>
代码由
object
标签组成,该标签允许将 YouTube 视频嵌入到网站中。此代码被包装在Repeater
中以列出所有获得的 YouTube 视频。请注意,我们使用<%# Eval() %>
数据绑定表达式来获取底层YouTubeVideoObject
对象的Title
和VideoId
。之后,我们只需要将视频数组绑定到
Repeater
控件protected override void OnLoad(EventArgs e) { base.OnLoad(e); VideosRepeater.DataSource = YouTubeVideoHelper.GetVideos(); VideosRepeater.DataBind(); }
结果将如下所示
结论
在本文中,我们研究了与 YouTube 服务的交互,以在我们的网站上显示来自 YouTube 频道的视频。Data
API 提供了丰富的特性集来与 YouTube 交互。这为开发人员的创意提供了广阔的前景。
历史
- 2011 年 6 月 6 日:初始版本