Загрузить видео на определенный канал / Youtube

Я пытаюсь загрузить видео на Youtube. Видео успешно загружено на канал аккаунта. После этого я создал новый канал с названием "Deneme1". И я попытался загрузить на этот канал с помощью API; но загрузил на главную.

Мой код:

    public static string UploadVideo(string FilePath, string Title, string Description)
    {
        YouTubeRequestSettings settings;
        YouTubeRequest request;
        string devkey = "api key";            
        string username = "[email protected]";
        string password = "password";
        settings = new YouTubeRequestSettings("Deneme1", devkey, username, password) { Timeout = 10000000 };
        request = new YouTubeRequest(settings);

        Video newVideo = new Video();
        newVideo.Title = Title;
        newVideo.Description = Description;
        newVideo.Private = true;
        newVideo.YouTubeEntry.Private = false;
        newVideo.Keywords = "asd";
        newVideo.Tags.Add(new MediaCategory("Sports", YouTubeNameTable.CategorySchema));
        newVideo.YouTubeEntry.MediaSource = new MediaFileSource(FilePath, "video/flv");
        Video createdVideo = request.Upload(newVideo);
        return createdVideo.VideoId;
    }
    protected void Page_Load(object sender, EventArgs e)
    {
         try
        {
            string videopath, videotitle, videodesc;
            videopath = @"C:\Users\Ercin\Dropbox\Cloudy\Visual Studio\Projects\videoupload\videoupload\badstart.flv";
            videotitle = "test title";
            videodesc = "test description";
            UploadVideo(videopath, videotitle, videodesc);
        }
        catch (Exception exception)
        {
            Response.Write("Upload failed: " + exception.Message);
        }

Любая помощь будет фантастической!


person Erçin Dedeoğlu    schedule 13.11.2014    source источник


Ответы (2)


Этот код ниже работает нормально для меня, чтобы загрузить на определенный канал, который я указал ChannelId в имени пользователя.

public static Google.Apis.YouTube.v3.YouTubeService AuthenticateOaut(string clientId, string clientSecret, string userName)
        {

            string[] scopes = new string[] { Google.Apis.YouTube.v3.YouTubeService.Scope.Youtube,  // view and manage your YouTube account
                                             Google.Apis.YouTube.v3.YouTubeService.Scope.YoutubeForceSsl,
                                             Google.Apis.YouTube.v3.YouTubeService.Scope.Youtubepartner,
                                             Google.Apis.YouTube.v3.YouTubeService.Scope.YoutubepartnerChannelAudit,
                                             Google.Apis.YouTube.v3.YouTubeService.Scope.YoutubeReadonly,
                                             Google.Apis.YouTube.v3.YouTubeService.Scope.YoutubeUpload};

            try
            {
                // here is where we Request the user to give us access, or use the Refresh Token that was previously stored in %AppData%
                UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets { ClientId = clientId, ClientSecret = clientSecret }
                                                                                             , scopes
                                                                                             , userName
                                                                                             , CancellationToken.None
                                                                                             , new FileDataStore("Daimto.YouTube.Auth.Store")).Result;

                Google.Apis.YouTube.v3.YouTubeService service = new Google.Apis.YouTube.v3.YouTubeService(new Google.Apis.YouTube.v3.YouTubeService.Initializer()
                {
                    HttpClientInitializer = credential,
                    ApplicationName = "Web client 1",

                });
                return service;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.InnerException);
                return null;

            }

        }
person thiago.adriano26    schedule 18.10.2015
comment
как вызвать этот метод, не могли бы вы предоставить образец для загрузки vdo на канал YouTube? - person SHEKHAR SHETE; 17.06.2017

Начиная с самого начала (что будет полезно для некоторых людей), я расскажу вам, что я сделал:

  • Вы получаете свои учетные данные для авторизации (я использовал OAuth2.0): https://developers.google.com/youtube/registering_an_application#Create_OAuth2_Tokens
  • Вы используете API YouTube v3 (есть пакет nuget).
  • Вы пишете свой код, который в значительной степени совпадает с ответом thiago.adriano26.
  • При первом запуске вашего приложения оно откроет браузер, чтобы вы могли проверить и выбрать нужный канал (я не уверен, почему Google сделал это, так как вы уже указали идентификатор пользователя в своем коде, но это то, что они сделали в любом случае ...).
  • После того, как вы выполните этот шаг, токен будет сгенерирован по адресу: C:\Users\User\AppData\Roaming\Google.Apis.Auth\Google.Apis.A‌​uth.OAuth2.Responses‌​.TokenResponse-<UserId>. Кажется, это связывает используемый UserId с фактическим каналом. Пока это существует, эта связь между ними будет существовать. Удаление или использование другого UserId (каждый канал имеет свои UserId и ChannelId, см. здесь: https://support.google.com/youtube/answer/3250431?hl=ru) позволит вам выбрать новый канал в браузере.
person NoOne    schedule 19.03.2017