我正在编写一个程序来在本地备份我的 Google Photos 库,上周代码工作正常,但在过去几天里,我不断从 API 客户端返回错误,说“photoslibrary v1”不存在在 Google 的 API 库中。文档根本没有改变 - 是谷歌那边有问题还是我有问题?
from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
class Photos:
def __init__(self):
self.SCOPE = "https://www.googleapis.com/auth/photoslibrary"
self.CLIENT_SECRET = "client_id.json"
self.store = file.Storage("storage.json")
self.credentials = self.store.get()
if not self.credentials or self.credentials.invalid:
self.flow = client.flow_from_clientsecrets("client_id.json", self.SCOPE)
self.credentials = tools.run_flow(self.flow, self.store)
self.PHOTOS = discovery.build("photoslibrary", "v1", http=self.credentials.authorize(Http()))
photos = Photos()
googleapiclient.errors.UnknownApiNameOrVersion: name: photoslibrary version: v1
Run Code Online (Sandbox Code Playgroud) 从Google Photo API(使用 Go 和 Google Photo REST API)获取媒体项目列表和相册列表后,将项目添加到相册会返回错误。
(注意:使用 Web 界面将项目添加到相册工作正常)。
将媒体项添加到相册的代码:
func (a Album) AddItems(items ...MediaItem) error {
rel := &url.URL{Path: fmt.Sprintf("/v1/albums/%s:batchAddMediaItems", a.ID)}
u := a.service.baseURL.ResolveReference(rel)
for len(items) > 0 {
ids := []string{}
for i := 0; i < 50 && i < len(items); i++ {
ids = append(ids, items[i].ID)
}
items = items[len(ids):]
toAdd := map[string]interface{}{
"mediaItemIds": ids,
}
bodyData, err := json.Marshal(toAdd)
if err != nil {
return err
}
req, err := …Run Code Online (Sandbox Code Playgroud)