Python Google Photos API列出相册中的项目

2024-09-29 21:52:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我在扩展列出相册id所需的API调用时遇到问题,无法列出相册中包含的项目。下面是我检索唱片集ID的示例。除此之外,我还尝试扩展此脚本,以列出特定相册中包含的项目。在

from httplib2 import Http
from oauth2client import file, client, tools
from apiclient.discovery import build

SCOPES = 'https://www.googleapis.com/auth/photoslibrary.readonly'
store = file.storage('credentials.json')
creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
    creds = tools.run_flow(flow, store)
service = build('photoslibrary', 'v1', http=creds.authorize(Http()))

hasNextPageToken = False
nextPageToken = ""

results = service.albums().list(pageSize=10).execute()

if 'nextPageToken' in results:
    hasNextPageToken = True
    nextPageToken = results['nextPageToken']
    for album in results['albums']:
        albumId = album['id']
        print(albumId)

现在,对于我试图从上面的示例中修改的代码,以便能够列出由albumId定义的给定相册中的项目:

^{pr2}$

当我试图打印results时,收到一个关于接收意外的关键字参数albumId的错误。在

api调用的格式与搜索不同,它是https://photoslibrary.googleapis.com/v1/mediaItems:search

错误是否源于:mediaItems:search,它使Python中的变量无效?或者,这是否与搜索调用是一个POST而不是GET有关?或者,别的什么?在


Tags: 项目storefromimportclientidhttp示例
2条回答

我看不到你在修改过的代码中定义了albumId的任何地方

results = service.mediaItems().search(pageSize=10,**albumId=albumId**).execute()

从中复制的代码清楚地定义了它

^{pr2}$

mediaitems:search需要一个JSON结构的参数体,以便将返回的项目限制为特定的albumId。在

修改原帖子的第二部分代码可以得到预期的结果。在

from httplib2 import Http
from oauth2client import file, client, tools
from apiclient.discovery import build

SCOPES = 'https://www.googleapis.com/auth/photoslibrary.readonly'
store = file.storage('credentials.json')
creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
    creds = tools.run_flow(flow, store)
service = build('photoslibrary', 'v1', http=creds.authorize(Http()))

hasNextPageToken = False
nextPageToken = ""
body = {
    "albumId": [AlbumId],
    "pageSize": 10
    }
results = service.mediaItems().search(body=body).execute()
print(results)

现在,收集所有其他项目的数据需要合并nextPageToken并循环遍历结果。在

相关问题 更多 >

    热门问题