Listar itens de mídia e álbuns criados pelo app

Escopos de autorização necessários

A listagem de conteúdo criado pelo app requer o escopo photoslibrary.readonly.appcreateddata. Para mais informações sobre escopos, consulte Escpos de autorização.

Visão geral

A API Library permite listar e acessar itens de mídia criados pelo seu app.

Alguns dos principais recursos para listar itens de mídia incluem:

  • Listar itens de mídia de álbuns específicos criados pelo app ou de toda a biblioteca criada por ele
  • Aplicar filtros (data, categoria de conteúdo, tipo de mídia) ao listar para restringir os resultados

  • Recupere objetos mediaItem com detalhes essenciais, como links diretos e metadados.

A listagem do conteúdo da biblioteca e do álbum retorna uma lista de itens de mídia. Os enriquecimentos que fazem parte de um álbum não são incluídos. Os itens de mídia descrevem uma foto, um vídeo ou outro tipo de mídia. Um mediaItem inclui um link direto para o item, um link para o item no Google Fotos e outros metadados relevantes. Para mais informações, consulte Acessar itens de mídia e mediaItems.

Listar álbuns criados pelo app

Você pode listar álbuns que foram criados pelo seu app usando albums.list.

REST

Veja um exemplo de solicitação:

GET https://photoslibrary.googleapis.com/v1/albums

A solicitação retorna o seguinte resultado:

{
  "albums": [
    {
      "id": "album-id",
      "title": "album-title",
      "productUrl": "album-product-url",
      "coverPhotoBaseUrl": "album-cover-base-url_do-not-use-directly",
      "coverPhotoMediaItemId": "album-cover-media-item-id",
      "isWriteable": "whether-you-can-write-to-this-album",
      "mediaItemsCount": "number-of-media-items-in-album"
    },
    ...
  ],
  "nextPageToken": "token-for-pagination"
}

Cada álbum retornado tem um ID que pode ser usado para recuperar o conteúdo, conforme mostrado em Listar conteúdo do álbum. Ele também inclui o título e o número de itens de mídia que contém.

O productUrl aponta para o álbum no Google Fotos que pode ser aberto pelo usuário.

O coverPhotoMediaItemId contém o ID do item de mídia que representa a foto da capa desse álbum. Para acessar essa imagem de capa, use coverPhotoBaseUrl. Não use o coverPhotoBaseUrl diretamente sem especificar outros parâmetros.

A resposta também contém um nextPageToken. Para mais informações, consulte Paginação.

A resposta para álbuns vazios varia porque mediaItemsCount e coverPhotoMediaItemId são definidos como 0 por padrão e omitidos da resposta REST. Além disso, coverPhotoBaseUrl aponta para uma imagem de marcador de posição padrão.

Listar o conteúdo da biblioteca criada pelo app

É possível listar todos os itens de mídia da biblioteca do Google Fotos do usuário que foram criados pelo seu app. Isso exclui itens arquivados e excluídos. É possível listar itens de mídia com base no conteúdo, na data e em outras propriedades aplicando filtros.

Para listar itens de mídia, chame mediaItems.list.

REST

Veja um exemplo de solicitação:

GET https://photoslibrary.googleapis.com/v1/mediaItems
Content-type: application/json
Authorization: Bearer oauth2-token
{
  "pageSize": "100",
}

A solicitação GET retorna a seguinte resposta:

{
  "mediaItems": [
    ...
  ],
  "nextPageToken": "token-for-pagination"
}

A resposta contém uma lista de itens de mídia, ordenada do mais recente para o mais antigo. Para saber mais, consulte mediaItems. Ele também contém um nextPageToken, que é descrito em mais detalhes em Paginação.

Listar conteúdo do álbum

Para listar todos os itens de mídia em um álbum, adicione o campo albumId à sua solicitação de pesquisa. Para mais informações sobre albumId, consulte Listagem de álbuns. Se albumId for inválido, um erro Bad Request será retornado. Se o ID for válido, mas o álbum não existir para o usuário autenticado, um erro Not Found será retornado. Para mais detalhes sobre o processamento de erros, consulte Dicas de desempenho e Práticas recomendadas.

REST

Veja um exemplo de solicitação:

POST https://photoslibrary.googleapis.com/v1/mediaItems:search
Content-type: application/json
Authorization: Bearer oauth2-token
{
  "pageSize": "100",
  "albumId": "album-id"
}

A solicitação POST retorna a seguinte resposta:

{
  "mediaItems": [
    ...
  ],
  "nextPageToken": "token-for-pagination"
}

A resposta contém um nextPageToken e a lista de itens de mídia. Ao contrário de listar o conteúdo da biblioteca, os itens de mídia são retornados pela ordem no álbum. Para mais detalhes, consulte mediaItems e Paginação. O usuário pode editar o pedido na interface do Google Fotos.

Se albumId estiver definido, não será possível aplicar um filtro ao listar o conteúdo do álbum. Isso resulta em um erro Bad Request.

Paginação para REST

Para melhorar o desempenho, métodos que retornam um grande número de resultados (como métodos de lista) podem paginar a resposta. O número máximo de resultados em cada página é fornecido pelo parâmetro pageSize.

Para chamadas para mediaItems.search e mediaItems.list, o tamanho padrão da página é 25 itens. Recomendamos esse tamanho de página porque ele atinge um equilíbrio entre o tamanho da resposta e a taxa de preenchimento. O tamanho máximo da página para solicitações de pesquisa e lista de itens de mídia é de 100 itens.

O tamanho de página padrão e recomendado ao listar álbuns é de 20 álbuns, com um máximo de 50 álbuns.

Quando o número de resultados disponíveis é maior que o tamanho da página, a resposta inclui um nextPageToken, que indica ao aplicativo que há mais resultados a serem buscados do servidor.

Exemplo

Anexe o nextPageToken às solicitações subsequentes no parâmetro pageToken, conforme mostrado no exemplo a seguir. Especifique o pageToken com outros parâmetros necessários para a operação, no corpo da solicitação ou como um parâmetro de consulta.

Solicitação no 1

{
  "pageSize": "5",
  "filters": { … }
}

Resposta 1

{
  "mediaItem": [ … ],
  "nextPageToken": "next-page-token"
}

Solicitação no 2

{
  "pageSize": "5",
  "filters": { … },
  "pageToken": "page-token"
}

Resposta 2

{
  "mediaItem": [ … ],
  "nextPageToken": "next-page-token"
}

Continue esse padrão até que não haja mais objetos nextPageToken.

O nextPageToken é válido apenas para a mesma solicitação. Se algum parâmetro for alterado, um nextPageToken usado anteriormente não poderá ser usado na mesma solicitação.