Использование Youtube .net API для загрузки и установки видео в список - PullRequest
5 голосов
/ 08 февраля 2011

Похоже, API YouTube для .net давно не обновлялся.Таким образом, нет свойства или метода, позволяющего установить видео в списке.Может ли кто-нибудь предложить обходной путь, если он сталкивался с этой проблемой раньше?

Ответы [ 3 ]

7 голосов
/ 12 сентября 2011

У меня тоже были проблемы с выяснением этого, поэтому я решил опубликовать свои выводы для тех, кто ищет ответ на этот вопрос.

Согласно этой теме , поддержка yt: accessControlбыл добавлен в ред.1118.

На момент написания этой редакции эта редакция не была включена в API, который вы загружаете со страницы загрузки API Google.Вы должны получить самую последнюю версию API здесь (SVN Checkout).

Как только вы это сделаете, вы можете сделать что-то вроде этого:

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

Ура!

2 голосов
/ 29 сентября 2011

Передайте имя пользователя и пароль, указав "YouTubeRequestSettings".

Пример

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

Если вы хотите получить "не занесенные в список" или "частные" видео, вам нужно пройти аутентификацию с помощьюВаш запрос.

2 голосов
/ 16 апреля 2011

Это сообщение мне очень помогло:

Как отключить комментарии и оценки с помощью API YouTube 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;
    }

Затем, чтобы использовать его:

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

Очень важно отметить, что это не может быть применено к видеовы загружаете (то есть вы не можете применить его к новому Video () перед вызовом request.pload (video). Вам нужно подождать до завершения процесса загрузки, чтобы сработал этот код.

Чтобы увидеть полный список элементов, которые вы можете отключить с помощью этого метода, смотрите этот URL: http://code.google.com/apis/youtube/2.0/reference.html#youtube_data_api_tag_yt:accessControl

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...