如何使用YouTube API asp.net禁用评论和评分

时间:2010-08-09 11:06:04

标签: c# .net youtube

非常感谢任何帮助!

当前代码:

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

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

3 个答案:

答案 0 :(得分:1)

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

e.g。

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

Youtube API Blog Disable Comments Announcement

答案 1 :(得分: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;
    }

注意这只适用于检索到的视频,而不是传入“新视频()

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

当视频条目发送并更新到YouTube服务器时,会发回更新的访问控制元素并附带更新请求。

答案 2 :(得分:0)

将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);