Как использовать API данных YouTube - PullRequest
1 голос
/ 23 апреля 2020

Я пытался использовать API данных YouTube. Я действительно внимательно посмотрел на все, что нашел в inte rnet. Сам код не проблема, но я не выяснил, где использовать этот код. Должен ли я просто создать файл python (например, в коде Visual Studio) и запустить его там? Поскольку это не сработало, когда я попробовал это ... Я также видел, как многие люди использовали API только с коммандером, другие использовали что-то в chrome (localhost: 8888 ...). Так что я на самом деле не знаю, что значит go или что мне следует делать.

Спасибо за любую помощь :) С уважением!

Ответы [ 3 ]

0 голосов
/ 23 апреля 2020
  1. Убедитесь, что на вашем P C
  2. установлено python. Создайте проект: Панель инструментов API и служб Google
  3. Включите Youtube API v3: Библиотека API
  4. Создание учетных данных: Мастер учетных данных
  5. Теперь вам нужно получить токен доступа и обновить sh токен, используя созданные вами учетные данные
  6. Найдите пример аутентификации в одной из следующих библиотек:
  7. Скопируйте и вставьте идентификатор клиента и секрет клиента, полученные на шаге 4, и вставьте их в пример аутентификации, найденный на шаге 6 (следует найдите пример OAuth2), на этом шаге должен быть указан токен доступа и refre sh токен
  8. . Скопируйте и вставьте пример с YouTube:
  9. Заменить a ccess token и обновите поля sh token с теми, которые вы получили.

Теперь вы сможете запустить файл с любого терминала, набрав:

python3 yourfile.py

[EDIT]

Ключ API не совпадает с токеном доступа. Существует два основных способа аутентификации с помощью API Google:

  1. Доступ и повторное использование sh токена
  2. API_KEY.

Ключ API не будет работать с личной информацией. Для этого вам нужно получить доступ и обновить токен sh (метод 1).

Как только вы получите токен доступа, он действует аналогично API_KEY, который вы получили. Получить токен доступа немного сложнее, чем работать только с API_KEY.

Refre sh токен - это токен, который вы получаете с токеном доступа при аутентификации. Срок действия токенов истекает через 3600 секунд. Когда они истекают, ваша библиотека аутентификации запрашивает у серверов Google новый токен доступа с маркером refre sh. Токен refre sh имеет очень большое время жизни (часто неопределенное), поэтому убедитесь, что вы надежно храните его.

Чтобы получить токен доступа и токен refre sh (учетные данные пользователя), необходимо сначала создать учетные данные клиента . Который должен состоять из 1. идентификатора клиента и 2. секрета клиента. Это просто обычные строки.

Вы также должны установить URL-адрес перенаправления в консоли приложения Google, чтобы правильно выполнить поток OAuth2. Поток OAuth2 - это протокол аутентификации, на который полагаются многие API, чтобы позволить им действовать с учетной записью пользователя с согласия пользователя. (например, когда приложение просит вас опубликовать от вашего имени или контролировать вашу учетную запись от вашего имени, оно обычно будет использовать этот протокол.)

Документы Aiogoogle хорошо справляются с объяснением потока (-ов) аутентификации, доступных Google.

https://aiogoogle.readthedocs.io/en/latest/

Но это библиотека asyn c Python. Если вы не знакомы с синтаксисом asyn c, вы можете прочитать документы, чтобы получить общее представление о том, как работает система аутентификации, а затем применить ее к библиотеке syn c Python от Google.

О пункте № 6. Ссылки, которые я разместил, когда Aiogoogle является одной из них, являются просто клиентскими библиотеками, которые помогут вам получить доступ к API Google быстрее и с меньшими затратами. Обе библиотеки имеют документацию, где есть ссылки на примеры того, как их использовать. Итак, откройте документацию, прочитайте ее, найдите опубликованные примеры, постарайтесь понять, как работает код в примерах. Затем, возможно, загрузите его и запустите на своем компьютере.

Я рекомендую вам прочитать docs . Надеюсь, это поможет.

0 голосов
/ 23 апреля 2020
using System;
using System.IO;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;

using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using Google.Apis.Upload;
using Google.Apis.Util.Store;
using Google.Apis.YouTube.v3;
using Google.Apis.YouTube.v3.Data;

namespace Google.Apis.YouTube.Samples
{
  /// <summary>
  /// YouTube Data API v3 sample: upload a video.
  /// Relies on the Google APIs Client Library for .NET, v1.7.0 or higher.
  /// See https://code.google.com/p/google-api-dotnet-client/wiki/GettingStarted
  /// </summary>
  internal class UploadVideo
  {
    [STAThread]
    static void Main(string[] args)
    {
      Console.WriteLine("YouTube Data API: Upload Video");
      Console.WriteLine("==============================");

      try
      {
        new UploadVideo().Run().Wait();
      }
      catch (AggregateException ex)
      {
        foreach (var e in ex.InnerExceptions)
        {
          Console.WriteLine("Error: " + e.Message);
        }
      }

      Console.WriteLine("Press any key to continue...");
      Console.ReadKey();
    }

    private async Task Run()
    {
      UserCredential credential;
      using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
      {
        credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
            GoogleClientSecrets.Load(stream).Secrets,
            // This OAuth 2.0 access scope allows an application to upload files to the
            // authenticated user's YouTube channel, but doesn't allow other types of access.
            new[] { YouTubeService.Scope.YoutubeUpload },
            "user",
            CancellationToken.None
        );
      }


      var youtubeService = new YouTubeService(new BaseClientService.Initializer()
      {
        HttpClientInitializer = credential,
        ApplicationName = Assembly.GetExecutingAssembly().GetName().Name
      });

      var video = new Video();
      video.Snippet = new VideoSnippet();
      video.Snippet.Title = "Default Video Title";
      video.Snippet.Description = "Default Video Description";
      video.Snippet.Tags = new string[] { "tag1", "tag2" };
      video.Snippet.CategoryId = "22"; // See https://developers.google.com/youtube/v3/docs/videoCategories/list
      video.Status = new VideoStatus();
      video.Status.PrivacyStatus = "unlisted"; // or "private" or "public"
      var filePath = @"REPLACE_ME.mp4"; // Replace with path to actual movie file.

      using (var fileStream = new FileStream(filePath, FileMode.Open))
      {
        var videosInsertRequest = youtubeService.Videos.Insert(video, "snippet,status", fileStream, "video/*");
        videosInsertRequest.ProgressChanged += videosInsertRequest_ProgressChanged;
        videosInsertRequest.ResponseReceived += videosInsertRequest_ResponseReceived;

        await videosInsertRequest.UploadAsync();
      }
    }

    void videosInsertRequest_ProgressChanged(Google.Apis.Upload.IUploadProgress progress)
    {
      switch (progress.Status)
      {
        case UploadStatus.Uploading:
          Console.WriteLine("{0} bytes sent.", progress.BytesSent);
          break;

        case UploadStatus.Failed:
          Console.WriteLine("An error prevented the upload from completing.\n{0}", progress.Exception);
          break;
      }
    }

    void videosInsertRequest_ResponseReceived(Video video)
    {
      Console.WriteLine("Video id '{0}' was successfully uploaded.", video.Id);
    }
  }
}
0 голосов
/ 23 апреля 2020

Я не python разработчик, но, как вы думаете, вы могли бы начать здесь:

https://developers.google.com/youtube/v3/quickstart/python

с помощью pip для установки необходимых вам зависимостей .

Вы сможете создать простой файл python, который аутентифицируется с помощью API, затем вызывает метод в клиенте API Google и затем выводит его. Вот несколько примеров:

https://github.com/youtube/api-samples/blob/master/python/

...