从return语句中获取并处理json响应

时间:2019-01-07 19:19:21

标签: python flask youtube-api youtube-data-api

我只是开始学习编程(以及python,flask),而我却无法自行解决(或使用google)。

我正在尝试通过youtube数据v3访问我的youtube频道数据,并且正在使用正式的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 :(得分:0)

您可以将调用的结果存储到变量中,进行处理然后返回

@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

答案 1 :(得分:0)

我认为在查看youtube API的源代码后,我明白了您的要求。

channels_list_by_username() print将一些信息输出到标准输出。您不想打印它,而是想要实际数据以便处理它,对吗?快速浏览一下该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

看起来您的代码来自youtube API示例,该示例仅用于说明如何实现API。检查实际文档以查看如何获取原始数据。