65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.86/5 (37投票s)

2011年6月6日

CPOL

3分钟阅读

viewsIcon

152384

downloadIcon

14316

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

Video from YouTube

[请注意] 尽管整体概念在发布后几年内可能有效,但某些 API 细节可能已更改。

引言

YouTube 已牢固地融入我们的生活。现在,许多用户无法想象没有这个网站的生活。由于其简单易用,YouTube 已成为最受欢迎的视频分享网站,也是世界上最受欢迎的网站之一。与许多流行的 Google 服务一样,YouTube 也有 Data API。此 API 允许您与此服务交互。这为网站和各种应用程序的开发人员提供了巨大的机会。使用此 API,开发人员可以查询视频、搜索视频、在 YouTube 上上传视频、创建和阅读评论等等。

问题

我们的目标是从著名俄罗斯 DJ 的 YouTube 频道中查询所有视频,并在网站上显示它们。

问题的解决方案

  1. 要使用 YouTube Data API,您需要下载并安装 Google Data API 库。然后将 Google.GData.Client.dllGoogle.GData.YouTube.dllGoogle.GData.Extensions.dll 文件复制到网站项目的 Bin 文件夹中,并添加对它们的引用。如何在我的另一篇文章 在 ASP.NET 网站中使用 Google Calendar 中进行了详细描述。
  2. 要使用 YouTube Data API 提供的所有可能性,您需要获取 开发者密钥
    开发者密钥唯一地标识将与 YouTube 服务交互的应用程序。您可以在 此处 获取它。
  3. 让我们创建一个类来表示我们网站上的 YouTube 视频。此类对象是一个具有属性的视频:VideoIdTitle
    VideoId 代表 YouTube 上视频的唯一标识符,Title 是 YouTube 上视频的标题
    public class YouTubeVideoObject
       {
           public string VideoId { get; set; }
           public string Title { get; set; }
       }
  4. 让我们创建一个将与 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();      
  5. 现在我们有了一个视频数组(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 对象的 TitleVideoId

    之后,我们只需要将视频数组绑定到 Repeater 控件

    protected override void OnLoad(EventArgs e)
        {
               base.OnLoad(e);
               VideosRepeater.DataSource = YouTubeVideoHelper.GetVideos();
               VideosRepeater.DataBind();
        }

结果将如下所示

Video from YouTube

结论

在本文中,我们研究了与 YouTube 服务的交互,以在我们的网站上显示来自 YouTube 频道的视频。Data API 提供了丰富的特性集来与 YouTube 交互。这为开发人员的创意提供了广阔的前景。

历史

  • 2011 年 6 月 6 日:初始版本
© . All rights reserved.