Auf Medienelemente zugreifen

Nach einem Anruf bei Inhalte einer Fotogalerie oder eines Albums auflisten, anstatt die zurückgegebenen Medienelemente zu speichern, sollte Ihre Anwendung das Element IDs der Medienelemente. Das liegt daran, dass der Inhalt der Medienelemente ändern. Nach einer gewissen Zeit laufen die in der Antwort enthaltenen URLs ab. Die Medienelement-ID eindeutig ein Medienelement, z. B. ein Foto oder ein Video in der Bibliothek eines Nutzers.

Beachten Sie, dass das Foto oder Video eines Nutzers nicht lange im Cache gespeichert werden sollte. zu verwenden. Je nach Anwendungsfall sollten Sie jedoch oder die Medienelement-ID im Cache speichern, Long as erforderlich. Beachten Sie auch, dass der Zugriff auf Nutzer unterliegen dem Datenschutz Verpflichtungen.

Erforderliche Autorisierungsbereiche

Für den Zugriff auf Medienelemente muss Ihre App mindestens eine der folgenden Anfragen anfordern Autorisierungsbereiche. Der Zugriff auf die in der Antwort zurückgegebenen Medienelemente hängt von den Bereichen ab, die Sie angefordert haben.

  • photoslibrary.readonly gewährt Zugriff auf alle Medienelemente in den des Nutzers Bibliothek
  • photoslibrary.readonly.appcreateddata gewährt nur Zugriff auf Medienelemente, die wurden von der App erstellt

Medienelemente

A mediaItem ist eine Darstellung von Medien, z. B. ein Foto oder Video, das auf Google Fotos-Galerie ansehen. Es ist ein Objekt der obersten Ebene und seine Eigenschaften können unterscheiden sich je nach dem zugrunde liegenden Medientyp.

In der folgenden Tabelle sind die mediaItem-Attribute aufgeführt:

Attribute
id Eine permanente, stabile ID zur Identifizierung des Objekts.
description Innenansicht der Beschreibung des Medienelements Google Fotos
baseUrl Wird für den Zugriff auf die Rohbyte verwendet. Weitere Informationen finden Sie unter Basis-URLs.
productUrl

Ein Link zum Bild in Google Fotos. Dieser Link darf nicht vom Entwickler und nur vom Nutzer geöffnet wird. URLs verweisen auf ein Medienelement in in der Bibliothek. Wenn die URL aus einer Albumsuche abgerufen wurde, verweist auf das Element im Album.

mimeType Der Typ des Medienelements, mit dem sich der Medientyp leicht identifizieren lässt (z. B. image/jpg).
filename Der Dateiname des Medienelements, das dem Nutzer in Google Fotos angezeigt wird App (im Infobereich des Artikels).
mediaMetadata Variiert je nach zugrunde liegendem Medientyp, z. B. photo oder video. Zur Reduzierung der Nutzlast können Feldmasken verwendet werden.
contributorInfo

Dieses Feld wird nur ausgefüllt, wenn sich das Medienelement in einem geteilten Album befindet. die von dieser App erstellt wurden und der Nutzer photoslibrary.sharing Bereich.

Enthält Informationen zu dem Mitwirkenden, der dieses Medium hinzugefügt hat ein. Weitere Informationen

Medienelement abrufen

Rufen Sie zum Abrufen eines Medienelements mediaItems.get mithilfe der Methode mediaItemId Die Anfrage gibt ein einzelnes Medienelement zurück.

mediaItem enthält Attribute wie die ID, die Beschreibung und die URL. Die Zusätzliche Informationen in photo oder video basieren auf den Metadaten in in der Datei. Möglicherweise sind nicht alle Unterkünfte vorhanden. ContributorInfo enthält Metadaten für Elemente, die Teil eines geteilten Albums sind. Dieses Feld ist nur enthalten, wenn Auflistung der Inhalte einer geteiltes Album, in dem der Nutzer photoslibrary.sharing gewährt hat Autorisierungsbereich.

Wenn das Medienelement ein Video ist, muss die Videodatei zuerst verarbeitet werden. Die mediaItem enthält ein status-Feld innerhalb von mediaMetadata, das das Verarbeitungsstatus der Videodatei. Eine neu hochgeladene Datei gibt den Fehlerwert videoProcessingStatus mit dem Wert PROCESSING, gefolgt von READY. Das baseUrl eines Videomedienelements ist erst verfügbar, wenn das Video verarbeitet wurde.

REST

Hier ist eine GET-Anfrage:

GET https://photoslibrary.googleapis.com/v1/mediaItems/media-item-id
Content-type: application/json
Authorization: Bearer oauth2-token

Die Antwort auf ein Fotomedienelement sieht so aus. Das Foto enthält Metadaten für Fotoelemente.

{
  "id": "media-item-id",
  "description": "item-description",
  "productUrl": "url-to-open-in-google-photos",
  "baseUrl": "base-url_do-not-use-directly",
  "mimeType": "mime-type-of-media",
  "filename": "item-filename",
  "mediaMetadata": {
    "width": "media-item-width",
    "height": "media-item-height",
    "creationTime": "media-item-creation-time",
    "photo": {
       "cameraMake": "make-of-the-camera",
       "cameraModel": "model-of-the-camera",
       "focalLength": "focal-length-of-the-camera-lens",
       "apertureFNumber": "aperture-f-number-of-the-camera-lens",
       "isoEquivalent": "iso-of-the-camera",
       "exposureTime": "exposure-time-of-the-camera-aperture"
    }
  },
  "contributorInfo": {
    "profilePictureBaseUrl": "profile-picture-base-url_do-not-use-directly",
    "displayName": "name-of-user"
  }
}

Die Antwort auf ein Videomedienelement sieht so aus. Das Video enthält Metadaten für Videoelemente.

{
  "id": "media-item-id",
  "description": "item-description",
  "productUrl": "url-to-open-in-google-photos",
  "baseUrl": "base-url_do-not-use-directly",
  "mimeType": "mime-type-of-media",
  "filename": "item-filename",
  "mediaMetadata": {
    "width": "media-item-width",
    "height": "media-item-height",
    "creationTime": "media-item-creation-time",
    "video": {
     "cameraMake": "make-of-the-camera",
     "cameraModel": "model-of-the-camera",
     "fps": "frame-rate-of-the-video",
     "status": "READY"
    },
  },
  "contributorInfo": {
    "profilePictureBaseUrl": "profile-picture-base-url_do-not-use-directly",
    "displayName": "name-of-user"
  }
}

Java

Die Fotoeigenschaft enthält Metadaten für Fotoelemente.

try {
  // Get a media item using its ID
  String mediaItemId = "...";
  MediaItem item = photosLibraryClient.getMediaItem(mediaItemId);
  // Get some properties from the retrieved media item
  String id = item.getId();
  String description = item.getDescription();
  String baseUrl = item.getBaseUrl();
  String productUrl = item.getProductUrl();
  // ...
  if (item.hasMediaMetadata()) {
    // The media item contains additional metadata, such as the height and width
    MediaMetadata metadata = item.getMediaMetadata();
    long height = metadata.getHeight();
    long width = metadata.getWidth();
    Timestamp creationTime = metadata.getCreationTime();
    // ...
    if (metadata.hasPhoto()) {
      // This media item is a photo and has additional photo metadata
      Photo photoMetadata = metadata.getPhoto();
      String cameraMake = photoMetadata.getCameraMake();
      String cameraModel = photoMetadata.getCameraModel();
      float aperture = photoMetadata.getApertureFNumber();
      int isoEquivalent = photoMetadata.getIsoEquivalent();
      // ...
    }
  }
  if (item.hasContributorInfo()) {
    // A user has contributed this media item  to a shared album
    ContributorInfo contributorInfo = item.getContributorInfo();
    String profilePictureBaseUrl = contributorInfo.getProfilePictureBaseUrl();
    String displayName = contributorInfo.getDisplayName();
  }
} catch (ApiException e) {
  // Handle error
}

Die Videoeigenschaft enthält Metadaten für Videoelemente.

try {
  // Get a media item using its ID
  String mediaItemId = "...";
  MediaItem item = photosLibraryClient.getMediaItem(mediaItemId);
  // Get some properties from the retrieved media item
  String id = item.getId();
  String description = item.getDescription();
  String baseUrl = item.getBaseUrl();
  String productUrl = item.getProductUrl();
  // ...
  if (item.hasMediaMetadata()) {
    // The media item contains additional metadata, such as the height and width
    MediaMetadata metadata = item.getMediaMetadata();
    long height = metadata.getHeight();
    long width = metadata.getWidth();
    Timestamp creationTime = metadata.getCreationTime();
    // ...

    if (metadata.hasVideo()) {
      // This media item is a video and has additional video metadata
      Video videoMetadata = metadata.getVideo();
      VideoProcessingStatus status = videoMetadata.getStatus();
      if (status.equals(VideoProcessingStatus.READY)) {
        // This video media item has been processed
        String cameraMake = videoMetadata.getCameraMake();
        String cameraModel = videoMetadata.getCameraModel();
        double fps = videoMetadata.getFps();
        // ...
      }
    }
  }

  if (item.hasContributorInfo()) {
    // A user has contributed this media item  to a shared album
    ContributorInfo contributorInfo = item.getContributorInfo();
    String profilePictureBaseUrl = contributorInfo.getProfilePictureBaseUrl();
    String displayName = contributorInfo.getDisplayName();
  }
} catch (ApiException e) {
  // Handle error
}

PHP

Die Fotoeigenschaft enthält Metadaten für Fotoelemente.

try {
    // Get a media item using its ID
    $mediaItemId = "...";
    $item = $photosLibraryClient->getMediaItem($mediaItemId);
    // Get some properties from the retrieved media item
    $id = $item->getId();
    $description = $item->getDescription();
    $baseUrl = $item->getBaseUrl();
    $productUrl = $item->getProductUrl();
    // ...
    $metadata = $item->getMediaMetadata();
    if (!is_null($metadata)) {
        // The media item contains additional metadata, such as the height and width
        $height = $metadata->getHeight();
        $width = $metadata->getWidth();
        $creationTime = $metadata->getCreationTime();
        // ...
        $photoMetadata = $metadata->getPhoto();
        if (!is_null($photoMetadata)) {
            // This media item is a photo and has additional photo metadata
            $cameraMake = $photoMetadata->getCameraMake();
            $cameraModel = $photoMetadata->getCameraModel();
            $aperture = $photoMetadata->getApertureFNumber();
            $isoEquivalent = $photoMetadata->getIsoEquivalent();
            // ...
        }
    }
    $contributorInfo = $item->getContributorInfo();
    if (!is_null($contributorInfo)) {
        // A user has contributed this media item to a shared album
        $profilePictureBaseUrl = $contributorInfo->getProfilePictureBaseUrl();
        $displayName = $contributorInfo->getDisplayName();
    }
} catch (\Google\ApiCore\ApiException $e) {
    // Handle error
}

Die Videoeigenschaft enthält Metadaten für Videoelemente.

  try {
    // Get a media item using its ID
    $mediaItemId = "...";
    $item = $photosLibraryClient->getMediaItem($mediaItemId);
    // Get some properties from the retrieved media item
    $id = $item->getId();
    $description = $item->getDescription();
    $baseUrl = $item->getBaseUrl();
    $productUrl = $item->getProductUrl();
    // ...
    $metadata = $item->getMediaMetadata();
    if (!is_null($metadata)) {
        // The media item contains additional metadata, such as the height and width
        $height = $metadata->getHeight();
        $width = $metadata->getWidth();
        $creationTime = $metadata->getCreationTime();
        // ...
        $videoMetadata = $metadata->getVideo();
        if (!is_null($videoMetadata)) {
            // This media item is a video and has additional video metadata
            if (VideoProcessingStatus::READY == $videoMetadata->getStatus()) {
            // This video media item has been processed
                $cameraMake = $videoMetadata->getCameraMake();
                $cameraModel = $videoMetadata->getCameraModel();
                $fps = $videoMetadata->getFps();
                // ...
            }
        }
    }
    $contributorInfo = $item->getContributorInfo();
    if (!is_null($contributorInfo)) {
        // A user has contributed this media item to a shared album
        $profilePictureBaseUrl = $contributorInfo->getProfilePictureBaseUrl();
        $displayName = $contributorInfo->getDisplayName();
    }
} catch (\Google\ApiCore\ApiException $e) {
    // Handle error
}

Mehrere Medienelemente abrufen

Um mehrere Medienelemente anhand ihrer IDs abzurufen, rufen Sie folgenden Befehl auf: mediaItems.batchGet mediaItemId verwenden.

Die Anfrage gibt eine Liste MediaItemResults in der Reihenfolge der im Antrag angegebenen Medienelement-IDs. Jedes Ergebnis enthält MediaItem oder Status im Falle eines Fehlers.

Die maximale Anzahl von Medienelementen, die Sie in einem Aufruf anfordern können, beträgt 50. Die Liste der Medienelemente dürfen keine doppelten IDs enthalten und dürfen nicht leer sein.

REST

Hier ist eine GET-Anfrage, die den erfolgreichen und fehlgeschlagenen Zugriff von Medienelemente. Geben Sie jede Medienelement-ID als neues Element an. mediaItemIds als Teil der Anfrage:

GET https://photoslibrary.googleapis.com/v1/mediaItems:batchGet?mediaItemIds=media-item-id&mediaItemIds=another-media-item-id&mediaItemIds=incorrect-media-item-id
Content-type: application/json
Authorization: Bearer oauth2-token

Die GET-Anfrage gibt die folgende Antwort zurück:

{
  "mediaItemResults": [
    {
      "mediaItem": {
        "id": "media-item-id",
        ...
      }
    },
    {
      "mediaItem": {
        "id": "another-media-item-id",
        ...
      }
    },
    {
      "status": {
        "code": 3,
        "message": "Invalid media item ID."
      }
    }
  ]
}

Java

try {
  // List of media item IDs to retrieve
  List<String> mediaItemIds = Arrays
      .asList("MEDIA_ITEM_ID", "ANOTHER_MEDIA_ITEM_ID", "INCORRECT_MEDIA_ITEM_ID");

  // Get a list of media items using their IDs
  BatchGetMediaItemsResponse response = photosLibraryClient
      .batchGetMediaItems(mediaItemIds);

  // Loop over each result
  for (MediaItemResult result : response.getMediaItemResultsList()) {

    // Each MediaItemresult contains a status and a media item
    if (result.hasMediaItem()) {
      // The media item was successfully retrieved, get some properties
      MediaItem item = result.getMediaItem();
      String id = item.getId();
      // ...
    } else {
      // If the media item is not set, an error occurred and the item could not be loaded
      // Check the status and handle the error
      Status status = result.getStatus();
      // ...
    }

  }
} catch (ApiException e) {
  // Handle error
}

PHP

try {

    // List of media item IDs to retrieve
    $mediaItemIds = ["MEDIA_ITEM_ID", "ANOTHER_MEDIA_ITEM_ID", "INCORRECT_MEDIA_ITEM_ID"];

    // Get a list of media items using their IDs
    $response = $photosLibraryClient->batchGetMediaItems($mediaItemIds);

    // Loop over each result
    foreach ($response->getMediaItemResults() as $itemResult) {

        // Each MediaItemresult contains a status and a media item
        $mediaItem = $itemResult->getMediaItem();

        if(!is_null($mediaItem)){
            // The media item was successfully retrieved, get some properties
            $id = $mediaItem->getId();
            // ...
        } else {
            // If the media item is null, an error occurred and the item could not be loaded
        }
    }

} catch (\Google\ApiCore\ApiException $e) {
    // Handle error
}

Basis-URLs

Mit Basis-URLs in der Google Photos Library API können Sie auf die Byte der Medien zugreifen Elemente. Mithilfe der verschiedenen Basis-URLs kann Ihre App die Medienelemente entweder herunterladen oder die Medienelemente in Ihrer App anzeigen. Basis-URLs sind Strings, die in der Antwort enthalten, wenn Sie Alben auflisten oder auf Mediendateien zugreifen. Sie sind 60 Minuten gültig und erfordern zusätzliche Parameter, da diese nicht als ist.

Die verschiedenen Basis-URLs sind:

  • baseUrl: Direkt auf das Foto oder die Miniaturansicht eines Videos zugreifen oder Videobyte herunterladen.
  • coverPhotoBaseUrl: Hiermit können Sie direkt auf das Titelbild des Albums zugreifen.
  • profilePictureBaseUrl: Direkt auf das Profilbild des Inhabers eines mediaItem.

Basis-URLs der Bilder

Im Folgenden finden Sie eine Liste der Optionen, die Sie mit den Basis-URLs des Bildes verwenden können:

Parameter
w, h

Beschreibung

Die Breite (w) und die Höhe (h) Parameter.

Um auf ein Medienelement mit Bild zuzugreifen, etwa ein Foto oder eine Miniaturansicht für ein Video handelt, müssen Sie die Abmessungen angeben, in denen Ihre Anwendung erstellen, sodass das Bild so skaliert werden kann, Abmessungen unter Beibehaltung des Seitenverhältnisses). Gehen Sie dazu wie folgt vor: Verketten Sie die Basis-URL mit den erforderlichen Dimensionen, wie in zu den Beispielen.

Beispiele:

base-url=wmax-width-hmax-height

Hier ist ein Beispiel für ein Medienelement, das nicht breiter als 2.048 Pixel und nicht höher als 1.024 Pixel:

https://lh3.googleusercontent.com/p/AF....VnnY=w2048-h1024
c

Beschreibung

Der Parameter „crop“, c.

Wenn Sie das Bild auf die genaue Breite und Höhe zuschneiden möchten die Sie angegeben haben, verketten Sie die Basis-URL optionalem -c-Parameter zusammen mit den obligatorischen w- und h-Parameter.

Die Größe (in Pixeln) muss im Bereich [1, 16383] liegen. Wenn entweder die Breite oder Höhe des Bildes die angeforderte Größe überschreitet, Das Bild wird verkleinert und unter Beibehaltung des Seitenverhältnisses zugeschnitten.

Beispiele:

base-url=wmax-width-hmax-height-c

In diesem Beispiel zeigt die Anwendung ein Medienelement an, das 256 Pixel breit und 256 Pixel hoch ist, z. B. Miniaturansicht:

https://lh3.googleusercontent.com/p/AF....VnnY=w256-h256-c
d

Beschreibung

Der Downloadparameter d.

Wenn Sie das Bild unter Beibehaltung aller EXIF-Metadaten herunterladen möchten verketten Sie die Basis-URL mit dem d-Parameter.

Beispiele:

base-url=d

In diesem Beispiel lädt die Anwendung ein Image mit allen Metadaten mit Ausnahme der Standortmetadaten:

https://lh3.googleusercontent.com/p/Az....XabC=d

Basis-URLs des Videos

Im Folgenden finden Sie eine Liste der Optionen, die Sie mit den Videobasis-URLs verwenden können:

Parameter
dv

Beschreibung

Verketten Sie Folgendes, um auf die Bytes eines Videos mediaItem zuzugreifen: die baseUrl mit dem Download-Video dv .

Der Parameter dv fordert eine hohe Qualität an, transcodierten Version des Originalvideos. Der Parameter ist nicht kompatibel mit dem w und h Parameter.

Basis-URLs für Videodownloads können einige Sekunden dauern, Bytes zurückgeben. Video-Downloads verwenden standardmäßig die H.264-Codierung. Wenn die H.264-Codierung fehlschlägt, wird VP9 verwendet.

Überprüfen Sie vor der Verwendung dieses Parameters, Das Feld „mediaMetadata.status“ ist „READY“. Wenn Ihr Medienelement nicht die Bearbeitung abgeschlossen ist, erhalten Sie Fehler.

Beispiele:

base-url=dv

Das folgende Beispiel zeigt, wie Sie die Bytes eines Video:

https://lh3.googleusercontent.com/p/AF....BsdZ=dv
w, h, c und d

Beschreibung

Verwenden Sie einen der Basis-URL-Parameter des Bildes, um auf die Miniaturansicht des Videos zuzugreifen.

Standardmäßig enthalten alle Video-Thumbnails ein Overlay, das eine Wiedergabe zeigt. Schaltfläche. Informationen zum Entfernen dieses Overlays finden Sie unter dem Parameter -no.

Beispiele:

Weitere Informationen finden Sie in der Tabelle mit den Basis-URLs der Bilder. .

no

Beschreibung

Der Parameter no zum Entfernen des Thumbnail-Overlays.

Wenn Sie das Thumbnail eines Videos ohne Overlay abrufen möchten einer Wiedergabeschaltfläche, verketten Sie die Basis-URL mit dem Präfix no .

Der Parameter no muss mit mindestens einem der folgenden Parameter verwendet werden: die Basis-URL-Parameter des Bildes.

Beispiele:

base-url=wmax-width-hmax-height-no

Im folgenden Beispiel wird eine Video-Miniaturansicht angezeigt, die genau 1.280 Pixel breit und 720 Pixel hoch ist und kein Wiedergabeschaltflächen-Overlay enthält:

https://lh3.googleusercontent.com/p/AF....VnnY=w1280-h720-no

Basis-URLs von Fotos mit Bewegtbild

Fotos mit Bewegtbild enthalten sowohl Foto- als auch Videoelemente. Sie können Parameter aus entweder Basis-URLs des Bilds oder Basis-URLs von Videos für baseUrl-Anfragen mit Bewegtbild

Parameter
dv

Beschreibung

Um das Videoelement eines Medienelements mit Bewegtbild abzurufen, verwenden Sie Den dv-Parameter, so wie Sie es beim Herunterladen von Basis-URLs des Videos tun würden

w, h, c und d

Beschreibung

Um das Fotoelement eines Medienelements mit Bewegtbild abzurufen, verwenden Sie das Format für Basis-URLs von Bildern.