извлечение и обработка json-ответа из оператора return - PullRequest
0 голосов
/ 07 января 2019

я только начинаю изучать программирование (и python, flask), и у меня возникла ситуация, которую я не могу решить самостоятельно (или использую Google).

Я пытаюсь получить доступ к моим данным канала YouTube через данные YouTube v3 и использую официальные библиотеки Google для oauth и поиска данных.

код ниже, это то, что я использую. возврат метода работает хорошо, однако он только отображает ответ json в моем браузере, и я не могу «поймать» его и обработать.

@app.route('/')
def index():
  if 'credentials' not in flask.session:
    return flask.redirect('authorize')

  credentials = google.oauth2.credentials.Credentials(
      **flask.session['credentials'])

  client = googleapiclient.discovery.build(
      API_SERVICE_NAME, API_VERSION, credentials=credentials)

  return channels_list_by_username(client,
    part='snippet,contentDetails,statistics',
    forUsername='username')

Я думал о том, чтобы поместить вызов в новую переменную, json.dump (), - получить ответ и получить к нему доступ, но он просто не работает.

любая помощь с этим приветствуется. спасибо!

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Я думаю, что вижу то, о чем вы спрашиваете, посмотрев исходный код API YouTube.

channels_list_by_username() print s некоторая информация для stdout. Вы не хотите его печатать, вам нужны реальные данные, чтобы их обработать, верно? Быстрый взгляд на этот API, я думаю, вы можете попробовать что-то вроде этого:

...
client = googleapiclient.discovery.build(
      API_SERVICE_NAME, API_VERSION, credentials=credentials)

results = client.channels().list(
    part='snippet,contentDetails,statistics',
    forUsername='username'
  ).execute()

... process data here ...
return results

Похоже, ваш код взят из примера API youtube, который предназначен только для того, чтобы показать, как реализовать API. Проверьте фактические документы, чтобы увидеть, как получить необработанные данные.

0 голосов
/ 07 января 2019

Вы можете сохранить результат этого вызова в переменной, обработать его и затем вернуть его

@app.route('/')
def index():
  if 'credentials' not in flask.session:
    return flask.redirect('authorize')

  credentials = google.oauth2.credentials.Credentials(
    **flask.session['credentials'])

  client = googleapiclient.discovery.build(
    API_SERVICE_NAME, API_VERSION, credentials=credentials)

  # Here is your variable
  channels = channels_list_by_username(client,
    part='snippet,contentDetails,statistics',
    forUsername='username')

  # Process it
  print(channels)
  # Add other processing stuff here

  # Return it
  return channels
...