Я пытался выяснить, как загружать подписи YouTube через API, но официальные инструкции адаптированы к коду командной строки, тогда как я пытаюсь сделать это в Python Shell.
В настоящее время я 'Я безрезультатно следил за этой страницей - https://developers.google.com/youtube/v3/docs/captions/list
Мне кажется, что меня сбивает с толку то, что мы храним и связываем фрагменты кода, которые даже после долгих поисков не имеют для меня никакого смысла.
См. Код хранилища ниже:
storage = Storage("%s-oauth2.json" % sys.argv[0])
#nowhere on the page does it refer to this oauth2.json file
credentials = storage.get()
if credentials is None or credentials.invalid:
credentials = run_flow(flow, storage, args)
#if credentials is none why would storage still be needed as an argument?
Во второй половине страницы все это добавляет аргументы в args.parser, который выглядит как командная строка, которую я не хочу использовать какЯ работаю в Python Shell.
Я также читал официальную страницу получения авторизации OAuth 2.0 для YouTube API, поэтому я могу переписать этот код сам, но не могу пройти эту часть: https://developers.google.com/api-client-library/python/auth/web-app
Шаг 5. Код авторизации Exchange для обновления и доступа к токенам После того, как веб-сервер получит код авторизации, он может обменять код авторизации натокен доступа.На странице обратного вызова используйте google-authlibrary, чтобы проверить ответ сервера авторизации.Затем используйте flow.fetch_tokenmethod, чтобы обменять код авторизации в этом ответе на токен доступа:
state = flask.session['state']
Это ошибка, которую я получаю из приведенного выше оператора кода:
RuntimeError: Работа вне контекста запроса.Обычно это означает, что вы пытались использовать функциональность, для которой требовался активный HTTP-запрос.Обратитесь к документации по тестированию для получения информации о том, как избежать этой проблемы.
В основном из-за большого количества копаний, касающихся процесса Oauth 2.0, я думаю, что я не могу получить поток.f.fetch_token для обменамой код авторизации для токена доступа.
Я проверил все свои учетные данные, чтобы они были в порядке, я получаю разрешение, с которым я борюсь.
Это код, который я до сих порПишу как упрощенную версию кода API подписей по первой ссылке:
import google.oauth2.credentials
import google_auth_oauthlib.flow
flow = google_auth_oauthlib.flow.Flow.from_client_secrets_file("//client_secret_file.json", scopes=["https://www.googleapis.com/auth/youtube.force-ssl"])
flow.redirect_uri = "http://localhost:8080"
authorization_url, state = flow.authorization_url(access_type="offline", include_granted_scopes="true")
flask.redirect(authorization_url)
[Ответ 929 байт [302 НАЙДЕН]]
state = flask.session['state']
[RuntimeError]
Резюме:
Как загрузить подписи YouTube из кода в Python Shell?Я установил свои учетные данные, но не могу заставить веб-сервер выдать мне токен доступа, чтобы я мог выполнить остальную часть кода.Я бы использовал код по ссылке captions.list, но не могу пройти мимо оператора кода Storage и args.arguments, который написан для командной строки.