C# 使用Youtube.NETAPI上载视频并将其设置为未列出

C# 使用Youtube.NETAPI上载视频并将其设置为未列出,c#,.net,youtube,C#,.net,Youtube,Youtube的.net API似乎已经有一段时间没有更新了。因此,不存在将视频设置为未列出的属性或方法。如果有人以前遇到过这个问题,是否可以提出解决方案 这篇文章对我帮助很大: 最后,我不得不修改代码,为属性列表添加空检查: private Video SetAcessControl(Video video, string type, string permission) { var exts = video.YouTubeEntry.ExtensionElement

Youtube的.net API似乎已经有一段时间没有更新了。因此,不存在将视频设置为未列出的属性或方法。如果有人以前遇到过这个问题,是否可以提出解决方案

这篇文章对我帮助很大:

最后,我不得不修改代码,为属性列表添加空检查:

private Video SetAcessControl(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 != null && 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;
    }
然后,要使用它:

        YouTubeRequest request = CreateYouTubeRequest(configuration);
        Uri youTubeUrl = new Uri(string.Format("http://gdata.youtube.com/feeds/api/users/default/uploads/{0}", youTubeVideoId));
        Video video = request.Retrieve<Video>(youTubeUrl);

        video = SetAcessControl(video, "list", "denied");  // removes the video from searches, thus making it Unlisted (what you're looking for)
        video = SetAcessControl(video, "comment", "denied");  // disables comments
        video = SetAcessControl(video, "commentVote", "denied"); // disables voting on comments
        video = SetAcessControl(video, "videoRespond", "denied"); // disables video responses
        video = SetAcessControl(video, "rate", "denied"); // disables rating

        Video updatedVideo = request.Update(video);
YouTubeRequest请求=CreateYouTubeRequest(配置);
Uri youTubeUrl=新Uri(string.Format(“http://gdata.youtube.com/feeds/api/users/default/uploads/{0},youTubeVideoId));
视频=请求.检索(youTubeUrl);
视频=设置访问控制(视频,“列表”,“拒绝”);//从搜索中删除视频,从而使其未列出(您正在查找的内容)
视频=设置访问控制(视频,“评论”,“拒绝”);//禁用注释
视频=设置投票控制(视频,“评论投票”,“拒绝”);//禁止对评论进行投票
视频=设置ACESCONTROL(视频,“视频响应”,“拒绝”);//禁用视频响应
视频=设置ACESCONTROL(视频,“速率”,“拒绝”);//禁用额定值
视频更新视频=请求。更新(视频);
请务必注意,这不能应用于正在上载的视频(即,在调用request.Upload(video)之前,不能将其应用于新视频()。您需要等到上载过程完成后,此代码才能工作

要查看可使用此方法禁用的项目的完整列表,请参阅以下url:


希望这能有所帮助!

我也很难弄清楚这一点,所以我想我会把我的发现发布给任何想找到答案的人

根据,在rev.1118中添加了对yt:accessControl的支持

在撰写本文时,您从Google的API下载页面下载的API中没有包含该版本。您必须获得最新版本的API(SVN Checkout)

一旦你准备好了,你可以这样做:

Video newVideo = new Video();
newVideo.YouTubeEntry.AccessControls.Add(new YtAccessControl("list", "denied"));

干杯!

用“
YouTubeRequestSettings
”传递用户名和密码

范例

YouTubeRequestSettings settings = new YouTubeRequestSettings("My Channel", YouTubeDeveloperKey, "username", "password");

如果您想检索“未列出”或“私人”视频,您需要通过请求的身份验证。

这已在官方可下载API中。我们可以在上载新视频时将视频设置为未列出。请遵循给定链接:我们可以在上载新视频时将视频设置为未列出。请遵循给定链接: