Skip to content

feat: add @libre.graph.livePhoto facet to driveItem#49

Closed
dschmidt wants to merge 1 commit into
opencloud-eu:mainfrom
dschmidt:live-photo-facet
Closed

feat: add @libre.graph.livePhoto facet to driveItem#49
dschmidt wants to merge 1 commit into
opencloud-eu:mainfrom
dschmidt:live-photo-facet

Conversation

@dschmidt

@dschmidt dschmidt commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Description

What are Live Photos?

Apple Live Photos are a pair of files: a still image (HEIC or JPEG) and a
short QuickTime video, captured together and linked by a shared content
identifier (a UUID). On the image it is stored in the Apple maker note,
on the video as com.apple.quicktime.content.identifier. Unlike Google
Motion Photos (#36) there is no single embedded file, the two halves are
separate driveItems.

There is no public file format specification; the metadata keys are
documented as AVFoundation metadata identifiers:
https://developer.apple.com/documentation/avfoundation/avmetadataidentifier

What this PR adds

A new read-only @libre.graph.livePhoto facet on driveItem, following the
@libre.graph.motionPhoto pattern. Facet presence means the item was
captured as part of a Live Photo; the counterpart is the driveItem whose
facet carries the same contentId.

Property Type Description
contentId string UUID shared by both halves, used for pairing.
auto boolean Auto Live Photo mode flag (video half only).
vitalityScore number (float) 0..1 score of how interesting the clip is, used for autoplay decisions (video half only).
vitalityScoringVersion integer (int64) Version of the scoring algorithm (video half only).
fullFrameRatePlaybackIntent integer (int32) Full frame rate playback intent (video half only).

Example response

{
  "@libre.graph.livePhoto": {
    "contentId": "CD28D161-D5EC-4CDE-8B60-DACCC1363B6B",
    "auto": true,
    "vitalityScore": 0.9398496,
    "vitalityScoringVersion": 4,
    "fullFrameRatePlaybackIntent": 1
  }
}

Validated with openapi-generator-cli v7.13.0 (validate plus a go client
generation smoke test; the generated model and driveItem wiring look as
expected).

Metadata extraction prerequisites on the server side: the video-side keys
are covered by apache/tika#2935, the image-side
Live Photo video index additionally needs
drewnoakes/metadata-extractor#739 (tracked in
https://issues.apache.org/jira/browse/TIKA-4776).

Apple Live Photos are a pair of files (HEIC/JPEG still plus QuickTime
video) sharing one content identifier, stored in the Apple maker note
on the image and as com.apple.quicktime.* metadata keys on the video.
Unlike Google Motion Photos there is no single embedded file, so the
facet carries the shared contentId for pairing, plus the video-side
properties auto, vitalityScore, vitalityScoringVersion and
fullFrameRatePlaybackIntent.

Validated with openapi-generator-cli v7.13.0 (validate plus a go
client generation smoke test).
@dschmidt

dschmidt commented Jul 9, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by the same branch pushed to the upstream repo so CI runs there.

@dschmidt dschmidt closed this Jul 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant