使用Youtube .net API上传视频并将其设置为不公开

Ada*_*ien 5 .net c# youtube

似乎.net的Youtube API暂时没有更新.因此,没有任何属性或方法可以将视频设置为未列出.如果他们之前遇到过这个问题,有人可以提出建议吗?

Mat*_*ewT 7

我也很难解决这个问题,所以我想我会发现我的发现给任何寻找答案的人.

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

在撰写本文时,您从Google的API下载页面下载的API中不包含该修订版.您必须在此处获取最新版本的API (SVN Checkout).

一旦你有了这个,你可以做这样的事情:

Video newVideo = new Video();
newVideo.YouTubeEntry.AccessControls.Add(new YtAccessControl("list", "denied"));
Run Code Online (Sandbox Code Playgroud)

干杯!


Mik*_*ike 2

这篇文章对我有很大帮助:

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

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

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;
    }
Run Code Online (Sandbox Code Playgroud)

然后,使用它:

        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);
Run Code Online (Sandbox Code Playgroud)

需要注意的是,这不能应用于您正在上传的视频(即,在调用 request.Upload(video) 之前,您不能将其应用于新的 Video()。您需要等到上传过程完成后在此代码运行之前已完成。

要查看可以使用此方法禁用的项目的完整列表,请访问以下网址:http: //code.google.com/apis/youtube/2.0/reference.html#youtube_data_api_tag_yt :accessControl

希望这可以帮助!