使用Google Photos APIPython进行基于过滤器的媒体搜索 修改点:修改后的脚本:参考:

问题描述

我正在尝试通过以下正文使用mediaItems().search()方法

body = {
        "pagetoken": page_token if page_token != "" else "","pageSize": 100,"filters": {
            "contentFilter": {
                "includedContentCategories": {"LANDSCAPES","CITYSCAPES"}
            }
        },"includeArchiveMedia": include_archive
    }

但是问题是集{"LANDSCAPES","CITYSCAPES"}实际上应该是一组枚举(如Java枚举),而不是像ive这样写的字符串。这是在API中指定的:(https://developers.google.com/photos/library/reference/rest/v1/albums

ContentFilter-使用此过滤器,您可以根据内容类型返回媒体项目。

JSON表示形式

{
  "includedContentCategories": [
    enum (ContentCategory)
  ],"excludedContentCategories": [
    enum (ContentCategory)
  ]
}

在python中有解决此问题的适当方法吗?

解决方法

修改点:

  • 使用albumIdfilters时,发生错误The album ID cannot be set if filters are used.。因此,当您要使用filters时,请删除albumId
  • includedContentCategories的值是一个如下数组。
    • "includedContentCategories": ["LANDSCAPES","CITYSCAPES"]
  • includeArchiveMediaincludeArchivedMedia
  • 请在includeArchivedMedia中加入filters

当以上几点反映到您的脚本时,它如下所示。

修改后的脚本:

body = {
    # "albumId": album_id,# <--- removed
    "pageToken": page_token if page_token != "" else "","pageSize": 100,"filters": {
        "contentFilter": {
            "includedContentCategories": ["LANDSCAPES","CITYSCAPES"]
        },"includeArchivedMedia": include_archive
    }
}

参考:

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...