首页 > 解决方案 > 如何动态更改 Python API 调用中的参数

问题描述

我正在尝试在 Python 的 API 调用中动态更改页面参数,以便可以访问 Vimeo 上文件的所有 JSON 数据。我不明白的是如何动态更改参数而不是硬编码数字。正如您在下面的代码中看到的,“页面”为 3,但我不明白如何插入参数,因此我可以遍历页面并获取每个页面的 JSON 数据。谢谢您的帮助。

uri = 'https://api.vimeo.com/me/videos'
# Asking the JSON to only get the two fields we are interested in
response = v.get(uri, params={'fields': 'name, uri', 'page': 3, 'per_page': 100})

这是 API 返回的一部分。

{
  'total': 3278,
  'page': 1,
  'per_page': 100,
  'paging': {
    'next': '/me/videos?fields=name%2C%20uri&per_page=100&page=2',
    'previous': None,
    'first': '/me/videos?fields=name%2C%20uri&per_page=100&page=1',
    'last': '/me/videos?fields=name%2C%20uri&per_page=100&page=33'
  },
  'data': [
    {
      'uri': '/videos/356967749',
      'name': 'Connecting Smallholder Farmers to Science'
    },
    {
      'uri': '/videos/356880620',
      'name': 'pro_test_upload'
    },
    {
      'uri': '/videos/356880402',
      'name': 'Amazing Apollo Stories with Charles Fishman'
    },
    {
      'uri': '/videos/356728892',
      'name': 'tot_190829'
    },
    {
      'uri': '/videos/356481229',
      'name': 'com_acw_johnson.mov'
    },
    ...
}

标签: jsonpython-3.xvimeo-api

解决方案


使用第一页获取结果总数,然后使用该值进行分页:

import math
uri = 'https://api.vimeo.com/me/videos'
first_page = requests.get(
    uri, 
    params={
        'fields': 'name, uri', 
        'page': 1, 
        'per_page': 100}).json()
total_pages = math.ceil(first_page["total"] / first_page["per_page"])
for page in total_pages:
    response = requests.get(
        uri, 
        params={
            'fields': 'name, uri', 
            'page': page, 
            'per_page': 100})
    # do things

推荐阅读