diff --git a/internal/http/services/owncloud/ocdav/propfind/propfind.go b/internal/http/services/owncloud/ocdav/propfind/propfind.go index d86367a2c5c..d3a7a24f8f0 100644 --- a/internal/http/services/owncloud/ocdav/propfind/propfind.go +++ b/internal/http/services/owncloud/ocdav/propfind/propfind.go @@ -96,6 +96,30 @@ var ( "width", "height", } + videoKeys = []string{ + "audioBitsPerSample", + "audioChannels", + "audioFormat", + "audioSamplesPerSecond", + "bitrate", + "duration", + "fourCC", + "frameRate", + "height", + "width", + } + motionPhotoKeys = []string{ + "presentationTimestampUs", + "version", + "videoSize", + } + livePhotoKeys = []string{ + "auto", + "contentId", + "stillImageTimeUs", + "vitalityScore", + "vitalityScoringVersion", + } photoKeys = []string{ "cameraMake", "cameraModel", @@ -887,6 +911,12 @@ func metadataKeys(pf XML) ([]string, []string) { metadataKeys = append(metadataKeys, metadataKeysWithPrefix("libre.graph.image", imageKeys)...) case "http://owncloud.org/ns/photo": metadataKeys = append(metadataKeys, metadataKeysWithPrefix("libre.graph.photo", photoKeys)...) + case "http://owncloud.org/ns/video": + metadataKeys = append(metadataKeys, metadataKeysWithPrefix("libre.graph.video", videoKeys)...) + case "http://owncloud.org/ns/motion-photo": + metadataKeys = append(metadataKeys, metadataKeysWithPrefix("libre.graph.motionPhoto", motionPhotoKeys)...) + case "http://owncloud.org/ns/live-photo": + metadataKeys = append(metadataKeys, metadataKeysWithPrefix("libre.graph.livePhoto", livePhotoKeys)...) default: metadataKeys = append(metadataKeys, key) } @@ -944,7 +974,7 @@ func requiresExplicitFetching(n *xml.Name) bool { } case net.NsOwncloud: switch n.Local { - case "favorite", "share-types", "checksums", "size", "tags", "audio", "location", "image", "photo": + case "favorite", "share-types", "checksums", "size", "tags", "audio", "location", "image", "photo", "video", "motion-photo", "live-photo": return true default: return false @@ -1292,6 +1322,9 @@ func mdToPropResponse(ctx context.Context, pf *XML, md *provider.ResourceInfo, p appendMetadataProp(k, "oc", "location", "libre.graph.location", locationKeys) appendMetadataProp(k, "oc", "image", "libre.graph.image", imageKeys) appendMetadataProp(k, "oc", "photo", "libre.graph.photo", photoKeys) + appendMetadataProp(k, "oc", "video", "libre.graph.video", videoKeys) + appendMetadataProp(k, "oc", "motion-photo", "libre.graph.motionPhoto", motionPhotoKeys) + appendMetadataProp(k, "oc", "live-photo", "libre.graph.livePhoto", livePhotoKeys) } if md.Type == provider.ResourceType_RESOURCE_TYPE_CONTAINER { @@ -1579,6 +1612,18 @@ func mdToPropResponse(ctx context.Context, pf *XML, md *provider.ResourceInfo, p if k := md.GetArbitraryMetadata().GetMetadata(); k != nil { appendMetadataProp(k, "oc", "photo", "libre.graph.photo", photoKeys) } + case "video": + if k := md.GetArbitraryMetadata().GetMetadata(); k != nil { + appendMetadataProp(k, "oc", "video", "libre.graph.video", videoKeys) + } + case "motion-photo": + if k := md.GetArbitraryMetadata().GetMetadata(); k != nil { + appendMetadataProp(k, "oc", "motion-photo", "libre.graph.motionPhoto", motionPhotoKeys) + } + case "live-photo": + if k := md.GetArbitraryMetadata().GetMetadata(); k != nil { + appendMetadataProp(k, "oc", "live-photo", "libre.graph.livePhoto", livePhotoKeys) + } case "name": appendToOK(prop.Escaped("oc:name", md.Name)) case "shareid":