【问题标题】:How do I disable comments and ratings using the YouTube API asp.net如何使用 YouTube API asp.net 禁用评论和评分
【发布时间】:2010-08-09 11:06:03
【问题描述】:

任何帮助将不胜感激!

当前代码:

YouTubeRequest request = Connect();
Video video = new Video();

video.Tags.Add(new MediaCategory("Nonprofit", YouTubeNameTable.CategorySchema));
video.Keywords = "Test";
video.YouTubeEntry.setYouTubeExtension("location", "UK");

【问题讨论】:

    标签: c# .net youtube


    【解决方案1】:

    下面的方法接受从 YouTube 请求服务中检索到的 YouTube 视频,并接受权限类型和新权限。

     private Video SetAccessControl(Video video, string type, string permission)
        {
            var exts = video.YouTubeEntry
                .ExtensionElements
                .Where(x => x is XmlExtension)
                .Select(x => x as XmlExtension)
                .Where(x => x.Node.Attributes["action"] != null && x.Node.Attributes["action"].InnerText == type);
    
            var ext = exts.FirstOrDefault();
    
            if (ext != null)
                ext.Node.Attributes["permission"].InnerText = permission;
    
            return video;
        }
    

    注意这仅适用于检索到的视频,而不是如果您传入“new Video()

    它的作用是遍历您作为提要的一部分返回的所有 ExtentionElements,并提取 xml 扩展元素(因为在 c# 访问控制扩展中没有构建)获取匹配的元素action == type 然后将 permissions 属性更新为所需的值。

    当视频条目被发送并更新到 YouTube 服务器时,更新后的访问控制元素将与更新请求一起发回。

    【讨论】:

    • 我还必须在属性列表上添加一个空检查。所以最后一个 where 语句看起来像这样: .Where(x => x.Node.Attributes != null && x.Node.Attributes["action"] != null && x.Node.Attributes["action"].InnerText == 类型);
    【解决方案2】:

    根据 Youtube API 博客,您可以使用 <yt:accessControl> 标记,阅读 here 了解更多信息。

    例如

    <yt:accessControl action='comment' permission='denied'/
    

    Youtube API Blog Disable Comments Announcement

    【讨论】:

    • 是的,我在 Google 搜索时发现了该帖子,但在创建 YouTube 视频对象时看不到如何设置这些属性?
    • 您在 HTTP 请求中指定它,这里有一个在更新日期执行此操作的示例:code.google.com/apis/youtube/2.0/… 所以我认为它在创建时也会类似。
    【解决方案3】:

    将 youtube 视频状态从 UNLISTED 更新为 Public

            YouTubeRequestSettings settings = new YouTubeRequestSettings(_application, _developerkey, _username, _password);
            Uri videoEntryUrl = new Uri("https://gdata.youtube.com/feeds/api/users/default/uploads/" + VideoID); 
            YouTubeRequest Request = new YouTubeRequest(settings); 
            Video Video = Request.Retrieve<Video>(videoEntryUrl);
            List<Google.GData.YouTube.YtAccessControl> AccessControlsArray = Video.YouTubeEntry.AccessControls.ToList();
            foreach (var item in AccessControlsArray)
            {        
                if (item.Attributes["action"].ToString()=="list") 
                { 
                    item.Attributes["permission"]= "allowed"; 
                } 
            }
    
            Video = Request.Update(Video);
    

    【讨论】:

      猜你喜欢
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 2015-06-09
      • 2021-04-26
      • 2018-01-26
      • 2016-09-07
      • 2018-10-28
      • 2016-09-11
      相关资源
      最近更新 更多