mirror of
https://github.com/bpatrik/pigallery2.git
synced 2024-12-23 01:27:14 +02:00
Feature/caption and title (#14)
* reading caption and title from several tags with several tests added minor bugfix for date conversion to MS optimization: break sidecar loop, when first sidecar is found
This commit is contained in:
parent
086bc47a01
commit
75d81d42bd
@ -139,13 +139,13 @@ export class MetadataLoader {
|
|||||||
fullPathWithoutExt + '.xmp',
|
fullPathWithoutExt + '.xmp',
|
||||||
fullPathWithoutExt + '.XMP',
|
fullPathWithoutExt + '.XMP',
|
||||||
];
|
];
|
||||||
|
|
||||||
for (const sidecarPath of sidecarPaths) {
|
for (const sidecarPath of sidecarPaths) {
|
||||||
if (fs.existsSync(sidecarPath)) {
|
if (fs.existsSync(sidecarPath)) {
|
||||||
const sidecarData: any = await exifr.sidecar(sidecarPath);
|
const sidecarData: any = await exifr.sidecar(sidecarPath);
|
||||||
if (sidecarData !== undefined) {
|
if (sidecarData !== undefined) {
|
||||||
MetadataLoader.mapMetadata(metadata, sidecarData);
|
MetadataLoader.mapMetadata(metadata, sidecarData);
|
||||||
}
|
}
|
||||||
|
break; //Break the loop as soon as a sidecar is found, no need to check the extra sidecar paths
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
@ -316,6 +316,8 @@ export class MetadataLoader {
|
|||||||
const orientation = MetadataLoader.getOrientation(exif);
|
const orientation = MetadataLoader.getOrientation(exif);
|
||||||
MetadataLoader.mapImageDimensions(metadata, exif, orientation);
|
MetadataLoader.mapImageDimensions(metadata, exif, orientation);
|
||||||
MetadataLoader.mapKeywords(metadata, exif);
|
MetadataLoader.mapKeywords(metadata, exif);
|
||||||
|
MetadataLoader.mapTitle(metadata, exif);
|
||||||
|
MetadataLoader.mapCaption(metadata, exif);
|
||||||
MetadataLoader.mapTimestampAndOffset(metadata, exif);
|
MetadataLoader.mapTimestampAndOffset(metadata, exif);
|
||||||
MetadataLoader.mapCameraData(metadata, exif);
|
MetadataLoader.mapCameraData(metadata, exif);
|
||||||
MetadataLoader.mapGPS(metadata, exif);
|
MetadataLoader.mapGPS(metadata, exif);
|
||||||
@ -370,6 +372,15 @@ export class MetadataLoader {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static mapTitle(metadata: PhotoMetadata, exif: any) {
|
||||||
|
metadata.title = exif.dc?.title?.value || metadata.title || exif.photoshop?.Headline || exif.acdsee?.caption; //acdsee caption holds the title when data is saved by digikam. Used as last resort if iptc and dc do not contain the data
|
||||||
|
}
|
||||||
|
|
||||||
|
private static mapCaption(metadata: PhotoMetadata, exif: any) {
|
||||||
|
metadata.caption = exif.dc?.description?.value || metadata.caption || exif.ifd0?.ImageDescription || exif.exif?.UserComment?.value || exif.Iptc4xmpCore?.ExtDescrAccessibility?.value ||exif.acdsee?.notes;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private static mapTimestampAndOffset(metadata: PhotoMetadata, exif: any) {
|
private static mapTimestampAndOffset(metadata: PhotoMetadata, exif: any) {
|
||||||
metadata.creationDate = Utils.timestampToMS(exif?.photoshop?.DateCreated, null) ||
|
metadata.creationDate = Utils.timestampToMS(exif?.photoshop?.DateCreated, null) ||
|
||||||
Utils.timestampToMS(exif?.xmp?.CreateDate, null) ||
|
Utils.timestampToMS(exif?.xmp?.CreateDate, null) ||
|
||||||
|
@ -132,7 +132,7 @@ export class Utils {
|
|||||||
//replace : with - in the yyyy-mm-dd part of the timestamp.
|
//replace : with - in the yyyy-mm-dd part of the timestamp.
|
||||||
let formattedTimestamp = timestamp.substring(0,9).replaceAll(':', '-') + timestamp.substring(9,timestamp.length);
|
let formattedTimestamp = timestamp.substring(0,9).replaceAll(':', '-') + timestamp.substring(9,timestamp.length);
|
||||||
if (formattedTimestamp.indexOf("Z") > 0) { //replace Z (and what comes after the Z) with offset
|
if (formattedTimestamp.indexOf("Z") > 0) { //replace Z (and what comes after the Z) with offset
|
||||||
formattedTimestamp.substring(0, formattedTimestamp.indexOf("Z")) + (offset ? offset : '+00:00');
|
formattedTimestamp = formattedTimestamp.substring(0, formattedTimestamp.indexOf("Z")) + (offset ? offset : '+00:00');
|
||||||
} else if (formattedTimestamp.indexOf("+") > 0) { //don't do anything
|
} else if (formattedTimestamp.indexOf("+") > 0) { //don't do anything
|
||||||
} else { //add offset
|
} else { //add offset
|
||||||
formattedTimestamp = formattedTimestamp + (offset ? offset : '+00:00');
|
formattedTimestamp = formattedTimestamp + (offset ? offset : '+00:00');
|
||||||
|
35
test/backend/assets/description.json
Normal file
35
test/backend/assets/description.json
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"size": {
|
||||||
|
"width": 3144,
|
||||||
|
"height": 2288
|
||||||
|
},
|
||||||
|
"creationDate": -2195790002000,
|
||||||
|
"fileSize": 8909621,
|
||||||
|
"keywords": [],
|
||||||
|
"faces": [
|
||||||
|
{
|
||||||
|
"name": "Hulda Stein",
|
||||||
|
"box": {
|
||||||
|
"width": 645,
|
||||||
|
"height": 645,
|
||||||
|
"left": 1919,
|
||||||
|
"top": 547
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "John Amschler",
|
||||||
|
"box": {
|
||||||
|
"width": 709,
|
||||||
|
"height": 709,
|
||||||
|
"left": 544,
|
||||||
|
"top": 394
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"cameraData": {
|
||||||
|
"make": "NIKON CORPORATION",
|
||||||
|
"model": "NIKON D200"
|
||||||
|
},
|
||||||
|
"caption": "Hulda and John's Wedding",
|
||||||
|
"title": "The Wedding"
|
||||||
|
}
|
BIN
test/backend/assets/description.png
Normal file
BIN
test/backend/assets/description.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.5 MiB |
BIN
test/backend/assets/digikam.jpg
Normal file
BIN
test/backend/assets/digikam.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
43
test/backend/assets/digikam.json
Normal file
43
test/backend/assets/digikam.json
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"cameraData": {
|
||||||
|
"ISO": 200,
|
||||||
|
"exposure": 0.008,
|
||||||
|
"fStop": 2.8,
|
||||||
|
"focalLength": 9.4,
|
||||||
|
"make": "FUJIFILM",
|
||||||
|
"model": "FinePix F601 ZOOM"
|
||||||
|
},
|
||||||
|
"creationDate": 1126423382000,
|
||||||
|
"creationDateOffset": "+09:00",
|
||||||
|
"fileSize": 14134,
|
||||||
|
"size": {
|
||||||
|
"height": 5,
|
||||||
|
"width": 7
|
||||||
|
},
|
||||||
|
"title": "Digikam Title field",
|
||||||
|
"caption": "Digikam Caption field",
|
||||||
|
"faces": [
|
||||||
|
{
|
||||||
|
"box": {
|
||||||
|
"height": 2,
|
||||||
|
"left": 3,
|
||||||
|
"top": 2,
|
||||||
|
"width": 2
|
||||||
|
},
|
||||||
|
"name": "Æske Øllegård"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"keywords": [
|
||||||
|
"æÆøØåÅéÉüÜäÄöÖïÏñÑ"
|
||||||
|
],
|
||||||
|
"positionData": {
|
||||||
|
"GPSData": {
|
||||||
|
"latitude": 35.9524,
|
||||||
|
"longitude": 139.863355
|
||||||
|
},
|
||||||
|
"city": "Shimizu",
|
||||||
|
"country": "Japan",
|
||||||
|
"state": "Chiba Ken"
|
||||||
|
},
|
||||||
|
"rating": 4
|
||||||
|
}
|
BIN
test/backend/assets/sidecar/flatxmp.jpg
Normal file
BIN
test/backend/assets/sidecar/flatxmp.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
33
test/backend/assets/sidecar/flatxmp.json
Normal file
33
test/backend/assets/sidecar/flatxmp.json
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"size": {
|
||||||
|
"width": 10,
|
||||||
|
"height": 5
|
||||||
|
},
|
||||||
|
"caption": "Description of image",
|
||||||
|
"creationDate": 328817998000,
|
||||||
|
"faces": [
|
||||||
|
{
|
||||||
|
"box": {
|
||||||
|
"height": 1,
|
||||||
|
"left": 6,
|
||||||
|
"top": 2,
|
||||||
|
"width": 2
|
||||||
|
},
|
||||||
|
"name": "Person1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"box": {
|
||||||
|
"height": 2,
|
||||||
|
"left": 2,
|
||||||
|
"top": 1,
|
||||||
|
"width": 2
|
||||||
|
},
|
||||||
|
"name": "Person2"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"fileSize": 1430,
|
||||||
|
"keywords": [
|
||||||
|
"Thing3"
|
||||||
|
],
|
||||||
|
"title": "The title"
|
||||||
|
}
|
329
test/backend/assets/sidecar/flatxmp.xmp
Normal file
329
test/backend/assets/sidecar/flatxmp.xmp
Normal file
@ -0,0 +1,329 @@
|
|||||||
|
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
|
||||||
|
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.0-c000 1.000000, 0000/00/00-00:00:00 ">
|
||||||
|
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||||
|
<rdf:Description rdf:about=""
|
||||||
|
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
|
||||||
|
xmlns:aux="http://ns.adobe.com/exif/1.0/aux/"
|
||||||
|
xmlns:crs="http://ns.adobe.com/camera-raw-settings/1.0/"
|
||||||
|
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
|
||||||
|
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
|
||||||
|
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
|
||||||
|
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:xmpRights="http://ns.adobe.com/xap/1.0/rights/"
|
||||||
|
xmlns:xmpDM="http://ns.adobe.com/xmp/1.0/DynamicMedia/"
|
||||||
|
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
|
||||||
|
xmlns:exif="http://ns.adobe.com/exif/1.0/"
|
||||||
|
xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"
|
||||||
|
xmlns:Iptc4xmpExt="http://iptc.org/std/Iptc4xmpExt/2008-02-29/"
|
||||||
|
xmlns:lr="http://ns.adobe.com/lightroom/1.0/"
|
||||||
|
xmlns:mwg-rs="http://www.metadataworkinggroup.com/schemas/regions/"
|
||||||
|
xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
|
||||||
|
xmlns:stArea="http://ns.adobe.com/xmp/sType/Area#"
|
||||||
|
xmp:ModifyDate="2024-03-22T19:09:41-05:00"
|
||||||
|
xmp:CreatorTool="Adobe Photoshop Lightroom 13.2 Classic (Windows)"
|
||||||
|
xmp:CreateDate="2007-07-29T18:19:58"
|
||||||
|
xmp:MetadataDate="2024-03-23T01:17:49-05:00"
|
||||||
|
aux:LensInfo="280/10 800/10 28/10 28/10"
|
||||||
|
aux:Lens="28.0-80.0 mm f/2.8"
|
||||||
|
aux:ImageNumber="4244"
|
||||||
|
crs:Version="3.7"
|
||||||
|
crs:RawFileName="flatxmp.png"
|
||||||
|
crs:WhiteBalance="Custom"
|
||||||
|
crs:Temperature="4150"
|
||||||
|
crs:Tint="+32"
|
||||||
|
crs:Exposure="-0.35"
|
||||||
|
crs:Shadows="32"
|
||||||
|
crs:Brightness="+50"
|
||||||
|
crs:Contrast="+58"
|
||||||
|
crs:Saturation="-24"
|
||||||
|
crs:Sharpness="25"
|
||||||
|
crs:LuminanceSmoothing="0"
|
||||||
|
crs:ColorNoiseReduction="25"
|
||||||
|
crs:ChromaticAberrationR="0"
|
||||||
|
crs:ChromaticAberrationB="0"
|
||||||
|
crs:VignetteAmount="0"
|
||||||
|
crs:ShadowTint="0"
|
||||||
|
crs:RedHue="0"
|
||||||
|
crs:RedSaturation="0"
|
||||||
|
crs:GreenHue="0"
|
||||||
|
crs:GreenSaturation="0"
|
||||||
|
crs:BlueHue="0"
|
||||||
|
crs:BlueSaturation="0"
|
||||||
|
crs:FillLight="0"
|
||||||
|
crs:Vibrance="0"
|
||||||
|
crs:HighlightRecovery="0"
|
||||||
|
crs:HueAdjustmentRed="0"
|
||||||
|
crs:HueAdjustmentOrange="0"
|
||||||
|
crs:HueAdjustmentYellow="0"
|
||||||
|
crs:HueAdjustmentGreen="0"
|
||||||
|
crs:HueAdjustmentAqua="0"
|
||||||
|
crs:HueAdjustmentBlue="0"
|
||||||
|
crs:HueAdjustmentPurple="0"
|
||||||
|
crs:HueAdjustmentMagenta="0"
|
||||||
|
crs:SaturationAdjustmentRed="0"
|
||||||
|
crs:SaturationAdjustmentOrange="0"
|
||||||
|
crs:SaturationAdjustmentYellow="0"
|
||||||
|
crs:SaturationAdjustmentGreen="0"
|
||||||
|
crs:SaturationAdjustmentAqua="0"
|
||||||
|
crs:SaturationAdjustmentBlue="0"
|
||||||
|
crs:SaturationAdjustmentPurple="0"
|
||||||
|
crs:SaturationAdjustmentMagenta="0"
|
||||||
|
crs:LuminanceAdjustmentRed="0"
|
||||||
|
crs:LuminanceAdjustmentOrange="0"
|
||||||
|
crs:LuminanceAdjustmentYellow="0"
|
||||||
|
crs:LuminanceAdjustmentGreen="0"
|
||||||
|
crs:LuminanceAdjustmentAqua="0"
|
||||||
|
crs:LuminanceAdjustmentBlue="0"
|
||||||
|
crs:LuminanceAdjustmentPurple="0"
|
||||||
|
crs:LuminanceAdjustmentMagenta="0"
|
||||||
|
crs:SplitToningShadowHue="0"
|
||||||
|
crs:SplitToningShadowSaturation="0"
|
||||||
|
crs:SplitToningHighlightHue="0"
|
||||||
|
crs:SplitToningHighlightSaturation="0"
|
||||||
|
crs:SplitToningBalance="0"
|
||||||
|
crs:ParametricShadows="0"
|
||||||
|
crs:ParametricDarks="0"
|
||||||
|
crs:ParametricLights="0"
|
||||||
|
crs:ParametricHighlights="0"
|
||||||
|
crs:ParametricShadowSplit="25"
|
||||||
|
crs:ParametricMidtoneSplit="50"
|
||||||
|
crs:ParametricHighlightSplit="75"
|
||||||
|
crs:ConvertToGrayscale="False"
|
||||||
|
crs:ToneCurveName="Medium Contrast"
|
||||||
|
crs:CameraProfile="ACR 3.3"
|
||||||
|
crs:HasSettings="True"
|
||||||
|
crs:HasCrop="False"
|
||||||
|
crs:AlreadyApplied="True"
|
||||||
|
photoshop:DateCreated="1980-06-02T18:19:58-06:00"
|
||||||
|
photoshop:AuthorsPosition="Upright"
|
||||||
|
photoshop:Headline="PhotoshopHeadline"
|
||||||
|
xmpMM:DocumentID="adobe:docid:photoshop:cafebabe-79a5-014d-8584-460dcfb4c5f7"
|
||||||
|
xmpMM:InstanceID="xmp.iid:cafebabe-5011-ca47-999e-b8a670bcd3f0"
|
||||||
|
xmpMM:OriginalDocumentID="uuid:E494197C283EDC11BDB3DC8D57BE7817"
|
||||||
|
xmpMM:PreservedFileName="flatxmpold.jpg"
|
||||||
|
dc:format="image/jpeg"
|
||||||
|
xmpRights:Marked="True"
|
||||||
|
xmpDM:pick="0"
|
||||||
|
tiff:Orientation="1"
|
||||||
|
tiff:Make="Cam Make"
|
||||||
|
tiff:Model="Cam Model"
|
||||||
|
exif:ExifVersion="0221"
|
||||||
|
exif:ColorSpace="1"
|
||||||
|
exif:DateTimeOriginal="1980-06-02T18:19:58"
|
||||||
|
exif:ExposureTime="1/8"
|
||||||
|
exif:FNumber="28/10"
|
||||||
|
exif:ExposureProgram="2"
|
||||||
|
exif:ShutterSpeedValue="3/1"
|
||||||
|
exif:ApertureValue="2970854/1000000"
|
||||||
|
exif:ExposureBiasValue="6/6"
|
||||||
|
exif:MaxApertureValue="30/10"
|
||||||
|
exif:MeteringMode="3"
|
||||||
|
exif:LightSource="0"
|
||||||
|
exif:FocalLength="280/10"
|
||||||
|
exif:SensingMethod="2"
|
||||||
|
exif:FileSource="3"
|
||||||
|
exif:SceneType="1"
|
||||||
|
exif:CustomRendered="0"
|
||||||
|
exif:ExposureMode="0"
|
||||||
|
exif:WhiteBalance="0"
|
||||||
|
exif:DigitalZoomRatio="1/1"
|
||||||
|
exif:FocalLengthIn35mmFilm="42"
|
||||||
|
exif:SceneCaptureType="0"
|
||||||
|
exif:GainControl="1"
|
||||||
|
exif:Contrast="0"
|
||||||
|
exif:Saturation="0"
|
||||||
|
exif:Sharpness="0"
|
||||||
|
exif:SubjectDistanceRange="0"
|
||||||
|
exif:SubSecTime="24"
|
||||||
|
exif:SubSecTimeOriginal="24"
|
||||||
|
exif:SubSecTimeDigitized="24">
|
||||||
|
<crs:ToneCurve>
|
||||||
|
<rdf:Seq>
|
||||||
|
<rdf:li>0, 0</rdf:li>
|
||||||
|
<rdf:li>32, 22</rdf:li>
|
||||||
|
<rdf:li>64, 56</rdf:li>
|
||||||
|
<rdf:li>128, 128</rdf:li>
|
||||||
|
<rdf:li>192, 196</rdf:li>
|
||||||
|
<rdf:li>255, 255</rdf:li>
|
||||||
|
</rdf:Seq>
|
||||||
|
</crs:ToneCurve>
|
||||||
|
<xmpMM:DerivedFrom
|
||||||
|
stRef:instanceID="xmp.iid:cafebabe-09ec-c04f-8eb1-4c3b937c6767"
|
||||||
|
stRef:documentID="uuid:CAFEBABE283EDC11BDB3DC8D57BE7817"
|
||||||
|
stRef:originalDocumentID="uuid:CAFEBABE283EDC11BDB3DC8D57BE7817"/>
|
||||||
|
<xmpMM:History>
|
||||||
|
<rdf:Seq>
|
||||||
|
<rdf:li
|
||||||
|
stEvt:action="saved"
|
||||||
|
stEvt:instanceID="xmp.iid:cafebabe-09ec-c04f-8eb1-4c3b937c6767"
|
||||||
|
stEvt:when="2012-08-01T13:47-05:00"
|
||||||
|
stEvt:softwareAgent="Adobe Photoshop 23.4 (Windows)"
|
||||||
|
stEvt:changed="/"/>
|
||||||
|
<rdf:li
|
||||||
|
stEvt:action="converted"
|
||||||
|
stEvt:parameters="from image/png to image/jpeg"/>
|
||||||
|
<rdf:li
|
||||||
|
stEvt:action="derived"
|
||||||
|
stEvt:parameters="converted from image/jpeg to image/png"/>
|
||||||
|
<rdf:li
|
||||||
|
stEvt:action="saved"
|
||||||
|
stEvt:instanceID="xmp.iid:cafebabe-2209-e74b-a333-4e0bcc3908cf"
|
||||||
|
stEvt:when="2012-08-01T13:47-05:00"
|
||||||
|
stEvt:softwareAgent="Adobe Photoshop 23.4 (Windows)"
|
||||||
|
stEvt:changed="/"/>
|
||||||
|
<rdf:li
|
||||||
|
stEvt:action="saved"
|
||||||
|
stEvt:instanceID="xmp.iid:cafebabe-8bb1-654f-8e02-98d4ff5353b0"
|
||||||
|
stEvt:when="2014-03-20T21:35-05:00"
|
||||||
|
stEvt:softwareAgent="Adobe Photoshop Lightroom Classic 13.2 (Windows)"
|
||||||
|
stEvt:changed="/metadata"/>
|
||||||
|
<rdf:li
|
||||||
|
stEvt:action="saved"
|
||||||
|
stEvt:instanceID="xmp.iid:22b1a311-0788-b548-93b1-cbef983cab9a"
|
||||||
|
stEvt:when="2024-03-22T01:35:03-05:00"
|
||||||
|
stEvt:softwareAgent="Adobe Photoshop Lightroom Classic 13.2 (Windows)"
|
||||||
|
stEvt:changed="/metadata"/>
|
||||||
|
<rdf:li
|
||||||
|
stEvt:action="saved"
|
||||||
|
stEvt:instanceID="xmp.iid:cafebabe-634f-d042-ac1f-1fa6e4a076bd"
|
||||||
|
stEvt:when="2014-03-22T19:09:41-05:00"
|
||||||
|
stEvt:softwareAgent="Adobe Photoshop 25.5 (Windows)"
|
||||||
|
stEvt:changed="/"/>
|
||||||
|
<rdf:li
|
||||||
|
stEvt:action="saved"
|
||||||
|
stEvt:instanceID="xmp.iid:cafebabe-82ff-8845-ae3d-820fa91c7231"
|
||||||
|
stEvt:when="2014-03-22T19:09:41-05:00"
|
||||||
|
stEvt:softwareAgent="Adobe Photoshop 25.5 (Windows)"
|
||||||
|
stEvt:changed="/"/>
|
||||||
|
<rdf:li
|
||||||
|
stEvt:action="saved"
|
||||||
|
stEvt:instanceID="xmp.iid:cafebabe-5011-ca47-999e-b8a670bcd3f0"
|
||||||
|
stEvt:when="2014-03-23T01:17:49-05:00"
|
||||||
|
stEvt:softwareAgent="Adobe Photoshop Lightroom Classic 13.2 (Windows)"
|
||||||
|
stEvt:changed="/metadata"/>
|
||||||
|
</rdf:Seq>
|
||||||
|
</xmpMM:History>
|
||||||
|
<dc:creator>
|
||||||
|
<rdf:Seq>
|
||||||
|
<rdf:li>Digitized By Testmaster</rdf:li>
|
||||||
|
</rdf:Seq>
|
||||||
|
</dc:creator>
|
||||||
|
<dc:title>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang="x-default">The title</rdf:li>
|
||||||
|
</rdf:Alt>
|
||||||
|
</dc:title>
|
||||||
|
<dc:rights>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang="x-default">© Testmaster 2024</rdf:li>
|
||||||
|
</rdf:Alt>
|
||||||
|
</dc:rights>
|
||||||
|
<dc:subject>
|
||||||
|
<rdf:Bag>
|
||||||
|
<rdf:li>Person1</rdf:li>
|
||||||
|
<rdf:li>Person2</rdf:li>
|
||||||
|
<rdf:li>Thing3</rdf:li>
|
||||||
|
</rdf:Bag>
|
||||||
|
</dc:subject>
|
||||||
|
<dc:description>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang="x-default">Description of image</rdf:li>
|
||||||
|
</rdf:Alt>
|
||||||
|
</dc:description>
|
||||||
|
<xmpRights:UsageTerms>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang="x-default">All Rights Reserved</rdf:li>
|
||||||
|
</rdf:Alt>
|
||||||
|
</xmpRights:UsageTerms>
|
||||||
|
<exif:UserComment>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang="x-default">User comment</rdf:li>
|
||||||
|
</rdf:Alt>
|
||||||
|
</exif:UserComment>
|
||||||
|
<exif:ISOSpeedRatings>
|
||||||
|
<rdf:Seq>
|
||||||
|
<rdf:li>400</rdf:li>
|
||||||
|
</rdf:Seq>
|
||||||
|
</exif:ISOSpeedRatings>
|
||||||
|
<exif:Flash
|
||||||
|
exif:Fired="False"
|
||||||
|
exif:Return="0"
|
||||||
|
exif:Mode="0"
|
||||||
|
exif:Function="False"
|
||||||
|
exif:RedEyeMode="False"/>
|
||||||
|
<Iptc4xmpCore:CreatorContactInfo
|
||||||
|
Iptc4xmpCore:CiAdrPcode="6666"
|
||||||
|
Iptc4xmpCore:CiTelWork="+123456"
|
||||||
|
Iptc4xmpCore:CiAdrRegion="TestRegion"
|
||||||
|
Iptc4xmpCore:CiAdrCtry="TestCounty"
|
||||||
|
Iptc4xmpCore:CiAdrCity="TestCity"
|
||||||
|
Iptc4xmpCore:CiEmailWork="example@example.com"
|
||||||
|
Iptc4xmpCore:CiUrlWork="http://www.example.com"
|
||||||
|
Iptc4xmpCore:CiAdrExtadr="7357 Testroad"/>
|
||||||
|
<Iptc4xmpCore:AltTextAccessibility>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang="x-default">alt text</rdf:li>
|
||||||
|
</rdf:Alt>
|
||||||
|
</Iptc4xmpCore:AltTextAccessibility>
|
||||||
|
<Iptc4xmpCore:ExtDescrAccessibility>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang="x-default">extended description</rdf:li>
|
||||||
|
</rdf:Alt>
|
||||||
|
</Iptc4xmpCore:ExtDescrAccessibility>
|
||||||
|
<Iptc4xmpExt:PersonInImage>
|
||||||
|
<rdf:Bag>
|
||||||
|
<rdf:li>Person1</rdf:li>
|
||||||
|
<rdf:li>Person2</rdf:li>
|
||||||
|
</rdf:Bag>
|
||||||
|
</Iptc4xmpExt:PersonInImage>
|
||||||
|
<lr:weightedFlatSubject>
|
||||||
|
<rdf:Bag>
|
||||||
|
<rdf:li>Person1</rdf:li>
|
||||||
|
<rdf:li>Person2</rdf:li>
|
||||||
|
</rdf:Bag>
|
||||||
|
</lr:weightedFlatSubject>
|
||||||
|
<lr:hierarchicalSubject>
|
||||||
|
<rdf:Bag>
|
||||||
|
<rdf:li>Person1</rdf:li>
|
||||||
|
<rdf:li>Person2</rdf:li>
|
||||||
|
</rdf:Bag>
|
||||||
|
</lr:hierarchicalSubject>
|
||||||
|
<mwg-rs:Regions rdf:parseType="Resource">
|
||||||
|
<mwg-rs:AppliedToDimensions
|
||||||
|
stDim:w="3144"
|
||||||
|
stDim:h="2288"
|
||||||
|
stDim:unit="pixel"/>
|
||||||
|
<mwg-rs:RegionList>
|
||||||
|
<rdf:Bag>
|
||||||
|
<rdf:li>
|
||||||
|
<rdf:Description
|
||||||
|
mwg-rs:Rotation="0.00000"
|
||||||
|
mwg-rs:Name="Person1"
|
||||||
|
mwg-rs:Type="Face">
|
||||||
|
<mwg-rs:Area
|
||||||
|
stArea:h="0.28188"
|
||||||
|
stArea:w="0.20508"
|
||||||
|
stArea:x="0.71289"
|
||||||
|
stArea:y="0.37987"/>
|
||||||
|
</rdf:Description>
|
||||||
|
</rdf:li>
|
||||||
|
<rdf:li>
|
||||||
|
<rdf:Description
|
||||||
|
mwg-rs:Rotation="0.00000"
|
||||||
|
mwg-rs:Name="Person2"
|
||||||
|
mwg-rs:Type="Face">
|
||||||
|
<mwg-rs:Area
|
||||||
|
stArea:h="0.31007"
|
||||||
|
stArea:w="0.22559"
|
||||||
|
stArea:x="0.28564"
|
||||||
|
stArea:y="0.32685"/>
|
||||||
|
</rdf:Description>
|
||||||
|
</rdf:li>
|
||||||
|
</rdf:Bag>
|
||||||
|
</mwg-rs:RegionList>
|
||||||
|
</mwg-rs:Regions>
|
||||||
|
</rdf:Description>
|
||||||
|
</rdf:RDF>
|
||||||
|
</x:xmpmeta>
|
||||||
|
<?xpacket end="r"?>
|
BIN
test/backend/assets/sidecar/headline.jpg
Normal file
BIN
test/backend/assets/sidecar/headline.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
12
test/backend/assets/sidecar/headline.json
Normal file
12
test/backend/assets/sidecar/headline.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"size": {
|
||||||
|
"width": 10,
|
||||||
|
"height": 5
|
||||||
|
},
|
||||||
|
"creationDate": 1185683698000,
|
||||||
|
"creationDateOffset": "+13:45",
|
||||||
|
"fileSize": 1430,
|
||||||
|
"keywords": ["Person 1", "Person 2"],
|
||||||
|
"caption": "XMP description",
|
||||||
|
"title": "Photoshop Headline"
|
||||||
|
}
|
210
test/backend/assets/sidecar/headline.xmp
Normal file
210
test/backend/assets/sidecar/headline.xmp
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
|
||||||
|
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.69'>
|
||||||
|
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
|
||||||
|
|
||||||
|
<rdf:Description rdf:about=''
|
||||||
|
xmlns:Iptc4xmpCore='http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/'>
|
||||||
|
<Iptc4xmpCore:AltTextAccessibility>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang='x-default'>alt text</rdf:li>
|
||||||
|
</rdf:Alt>
|
||||||
|
</Iptc4xmpCore:AltTextAccessibility>
|
||||||
|
<Iptc4xmpCore:CreatorContactInfo rdf:parseType='Resource'>
|
||||||
|
<Iptc4xmpCore:CiAdrCity>Testville</Iptc4xmpCore:CiAdrCity>
|
||||||
|
<Iptc4xmpCore:CiAdrCtry>Testica</Iptc4xmpCore:CiAdrCtry>
|
||||||
|
<Iptc4xmpCore:CiAdrExtadr>Testroad 2</Iptc4xmpCore:CiAdrExtadr>
|
||||||
|
<Iptc4xmpCore:CiAdrPcode>7357</Iptc4xmpCore:CiAdrPcode>
|
||||||
|
<Iptc4xmpCore:CiAdrRegion>Testas</Iptc4xmpCore:CiAdrRegion>
|
||||||
|
<Iptc4xmpCore:CiEmailWork>test@example.com</Iptc4xmpCore:CiEmailWork>
|
||||||
|
</Iptc4xmpCore:CreatorContactInfo>
|
||||||
|
<Iptc4xmpCore:ExtDescrAccessibility>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang='x-default'>extended description</rdf:li>
|
||||||
|
</rdf:Alt>
|
||||||
|
</Iptc4xmpCore:ExtDescrAccessibility>
|
||||||
|
</rdf:Description>
|
||||||
|
|
||||||
|
<rdf:Description rdf:about=''
|
||||||
|
xmlns:aux='http://ns.adobe.com/exif/1.0/aux/'>
|
||||||
|
<aux:ImageNumber>4244</aux:ImageNumber>
|
||||||
|
<aux:Lens>28.0-80.0 mm f/2.8</aux:Lens>
|
||||||
|
<aux:LensInfo>28/1 80/1 14/5 14/5</aux:LensInfo>
|
||||||
|
</rdf:Description>
|
||||||
|
|
||||||
|
<rdf:Description rdf:about=''
|
||||||
|
xmlns:crs='http://ns.adobe.com/camera-raw-settings/1.0/'>
|
||||||
|
<crs:AlreadyApplied>True</crs:AlreadyApplied>
|
||||||
|
<crs:BlueHue>0</crs:BlueHue>
|
||||||
|
<crs:BlueSaturation>0</crs:BlueSaturation>
|
||||||
|
<crs:Brightness>+50</crs:Brightness>
|
||||||
|
<crs:CameraProfile>ACR 3.3</crs:CameraProfile>
|
||||||
|
<crs:ChromaticAberrationB>0</crs:ChromaticAberrationB>
|
||||||
|
<crs:ChromaticAberrationR>0</crs:ChromaticAberrationR>
|
||||||
|
<crs:ColorNoiseReduction>25</crs:ColorNoiseReduction>
|
||||||
|
<crs:Contrast>+58</crs:Contrast>
|
||||||
|
<crs:ConvertToGrayscale>False</crs:ConvertToGrayscale>
|
||||||
|
<crs:Exposure>-0.35</crs:Exposure>
|
||||||
|
<crs:FillLight>0</crs:FillLight>
|
||||||
|
<crs:GreenHue>0</crs:GreenHue>
|
||||||
|
<crs:GreenSaturation>0</crs:GreenSaturation>
|
||||||
|
<crs:HasCrop>False</crs:HasCrop>
|
||||||
|
<crs:HasSettings>True</crs:HasSettings>
|
||||||
|
<crs:HighlightRecovery>0</crs:HighlightRecovery>
|
||||||
|
<crs:HueAdjustmentAqua>0</crs:HueAdjustmentAqua>
|
||||||
|
<crs:HueAdjustmentBlue>0</crs:HueAdjustmentBlue>
|
||||||
|
<crs:HueAdjustmentGreen>0</crs:HueAdjustmentGreen>
|
||||||
|
<crs:HueAdjustmentMagenta>0</crs:HueAdjustmentMagenta>
|
||||||
|
<crs:HueAdjustmentOrange>0</crs:HueAdjustmentOrange>
|
||||||
|
<crs:HueAdjustmentPurple>0</crs:HueAdjustmentPurple>
|
||||||
|
<crs:HueAdjustmentRed>0</crs:HueAdjustmentRed>
|
||||||
|
<crs:HueAdjustmentYellow>0</crs:HueAdjustmentYellow>
|
||||||
|
<crs:LuminanceAdjustmentAqua>0</crs:LuminanceAdjustmentAqua>
|
||||||
|
<crs:LuminanceAdjustmentBlue>0</crs:LuminanceAdjustmentBlue>
|
||||||
|
<crs:LuminanceAdjustmentGreen>0</crs:LuminanceAdjustmentGreen>
|
||||||
|
<crs:LuminanceAdjustmentMagenta>0</crs:LuminanceAdjustmentMagenta>
|
||||||
|
<crs:LuminanceAdjustmentOrange>0</crs:LuminanceAdjustmentOrange>
|
||||||
|
<crs:LuminanceAdjustmentPurple>0</crs:LuminanceAdjustmentPurple>
|
||||||
|
<crs:LuminanceAdjustmentRed>0</crs:LuminanceAdjustmentRed>
|
||||||
|
<crs:LuminanceAdjustmentYellow>0</crs:LuminanceAdjustmentYellow>
|
||||||
|
<crs:LuminanceSmoothing>0</crs:LuminanceSmoothing>
|
||||||
|
<crs:ParametricDarks>0</crs:ParametricDarks>
|
||||||
|
<crs:ParametricHighlightSplit>75</crs:ParametricHighlightSplit>
|
||||||
|
<crs:ParametricHighlights>0</crs:ParametricHighlights>
|
||||||
|
<crs:ParametricLights>0</crs:ParametricLights>
|
||||||
|
<crs:ParametricMidtoneSplit>50</crs:ParametricMidtoneSplit>
|
||||||
|
<crs:ParametricShadowSplit>25</crs:ParametricShadowSplit>
|
||||||
|
<crs:ParametricShadows>0</crs:ParametricShadows>
|
||||||
|
<crs:RawFileName>family-220.png</crs:RawFileName>
|
||||||
|
<crs:RedHue>0</crs:RedHue>
|
||||||
|
<crs:RedSaturation>0</crs:RedSaturation>
|
||||||
|
<crs:Saturation>-24</crs:Saturation>
|
||||||
|
<crs:SaturationAdjustmentAqua>0</crs:SaturationAdjustmentAqua>
|
||||||
|
<crs:SaturationAdjustmentBlue>0</crs:SaturationAdjustmentBlue>
|
||||||
|
<crs:SaturationAdjustmentGreen>0</crs:SaturationAdjustmentGreen>
|
||||||
|
<crs:SaturationAdjustmentMagenta>0</crs:SaturationAdjustmentMagenta>
|
||||||
|
<crs:SaturationAdjustmentOrange>0</crs:SaturationAdjustmentOrange>
|
||||||
|
<crs:SaturationAdjustmentPurple>0</crs:SaturationAdjustmentPurple>
|
||||||
|
<crs:SaturationAdjustmentRed>0</crs:SaturationAdjustmentRed>
|
||||||
|
<crs:SaturationAdjustmentYellow>0</crs:SaturationAdjustmentYellow>
|
||||||
|
<crs:ShadowTint>0</crs:ShadowTint>
|
||||||
|
<crs:Shadows>32</crs:Shadows>
|
||||||
|
<crs:Sharpness>25</crs:Sharpness>
|
||||||
|
<crs:SplitToningBalance>0</crs:SplitToningBalance>
|
||||||
|
<crs:SplitToningHighlightHue>0</crs:SplitToningHighlightHue>
|
||||||
|
<crs:SplitToningHighlightSaturation>0</crs:SplitToningHighlightSaturation>
|
||||||
|
<crs:SplitToningShadowHue>0</crs:SplitToningShadowHue>
|
||||||
|
<crs:SplitToningShadowSaturation>0</crs:SplitToningShadowSaturation>
|
||||||
|
<crs:Temperature>4150</crs:Temperature>
|
||||||
|
<crs:Tint>+32</crs:Tint>
|
||||||
|
<crs:ToneCurve>
|
||||||
|
<rdf:Seq>
|
||||||
|
<rdf:li>0, 0</rdf:li>
|
||||||
|
<rdf:li>32, 22</rdf:li>
|
||||||
|
<rdf:li>64, 56</rdf:li>
|
||||||
|
<rdf:li>128, 128</rdf:li>
|
||||||
|
<rdf:li>192, 196</rdf:li>
|
||||||
|
<rdf:li>255, 255</rdf:li>
|
||||||
|
</rdf:Seq>
|
||||||
|
</crs:ToneCurve>
|
||||||
|
<crs:ToneCurveName>Medium Contrast</crs:ToneCurveName>
|
||||||
|
<crs:Version>3.7</crs:Version>
|
||||||
|
<crs:Vibrance>0</crs:Vibrance>
|
||||||
|
<crs:VignetteAmount>0</crs:VignetteAmount>
|
||||||
|
<crs:WhiteBalance>Custom</crs:WhiteBalance>
|
||||||
|
</rdf:Description>
|
||||||
|
|
||||||
|
<rdf:Description rdf:about=''
|
||||||
|
xmlns:dc='http://purl.org/dc/elements/1.1/'>
|
||||||
|
<dc:creator>
|
||||||
|
<rdf:Seq>
|
||||||
|
<rdf:li>XMP Creator</rdf:li>
|
||||||
|
</rdf:Seq>
|
||||||
|
</dc:creator>
|
||||||
|
<dc:description>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang='x-default'>XMP description</rdf:li>
|
||||||
|
</rdf:Alt>
|
||||||
|
</dc:description>
|
||||||
|
<dc:format>image/png</dc:format>
|
||||||
|
<dc:rights>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang='x-default'>XMP Creator</rdf:li>
|
||||||
|
</rdf:Alt>
|
||||||
|
</dc:rights>
|
||||||
|
<dc:subject>
|
||||||
|
<rdf:Bag>
|
||||||
|
<rdf:li>Person 1</rdf:li>
|
||||||
|
<rdf:li>Person 2</rdf:li>
|
||||||
|
</rdf:Bag>
|
||||||
|
</dc:subject>
|
||||||
|
</rdf:Description>
|
||||||
|
|
||||||
|
<rdf:Description rdf:about=''
|
||||||
|
xmlns:exif='http://ns.adobe.com/exif/1.0/'>
|
||||||
|
<exif:ApertureValue>24361/8200</exif:ApertureValue>
|
||||||
|
<exif:ColorSpace>1</exif:ColorSpace>
|
||||||
|
<exif:Contrast>0</exif:Contrast>
|
||||||
|
<exif:CustomRendered>0</exif:CustomRendered>
|
||||||
|
<exif:DateTimeOriginal>2007-07-29T18:19:58+13:45</exif:DateTimeOriginal>
|
||||||
|
<exif:DigitalZoomRatio>1/1</exif:DigitalZoomRatio>
|
||||||
|
<exif:ExifVersion>0221</exif:ExifVersion>
|
||||||
|
<exif:ExposureBiasValue>1/1</exif:ExposureBiasValue>
|
||||||
|
<exif:ExposureMode>0</exif:ExposureMode>
|
||||||
|
<exif:ExposureProgram>2</exif:ExposureProgram>
|
||||||
|
<exif:ExposureTime>1/8</exif:ExposureTime>
|
||||||
|
<exif:FNumber>14/5</exif:FNumber>
|
||||||
|
<exif:FileSource>3</exif:FileSource>
|
||||||
|
<exif:Flash rdf:parseType='Resource'>
|
||||||
|
<exif:Fired>False</exif:Fired>
|
||||||
|
<exif:Function>False</exif:Function>
|
||||||
|
<exif:Mode>0</exif:Mode>
|
||||||
|
<exif:RedEyeMode>False</exif:RedEyeMode>
|
||||||
|
<exif:Return>0</exif:Return>
|
||||||
|
</exif:Flash>
|
||||||
|
<exif:FocalLength>28/1</exif:FocalLength>
|
||||||
|
<exif:FocalLengthIn35mmFilm>42</exif:FocalLengthIn35mmFilm>
|
||||||
|
<exif:GainControl>1</exif:GainControl>
|
||||||
|
<exif:ISOSpeedRatings>
|
||||||
|
<rdf:Seq>
|
||||||
|
<rdf:li>400</rdf:li>
|
||||||
|
</rdf:Seq>
|
||||||
|
</exif:ISOSpeedRatings>
|
||||||
|
<exif:LightSource>0</exif:LightSource>
|
||||||
|
<exif:MaxApertureValue>24361/8200</exif:MaxApertureValue>
|
||||||
|
<exif:MeteringMode>3</exif:MeteringMode>
|
||||||
|
<exif:Saturation>0</exif:Saturation>
|
||||||
|
<exif:SceneCaptureType>0</exif:SceneCaptureType>
|
||||||
|
<exif:SceneType>1</exif:SceneType>
|
||||||
|
<exif:SensingMethod>2</exif:SensingMethod>
|
||||||
|
<exif:Sharpness>0</exif:Sharpness>
|
||||||
|
<exif:ShutterSpeedValue>3/1</exif:ShutterSpeedValue>
|
||||||
|
<exif:SubjectDistanceRange>0</exif:SubjectDistanceRange>
|
||||||
|
<exif:WhiteBalance>0</exif:WhiteBalance>
|
||||||
|
</rdf:Description>
|
||||||
|
|
||||||
|
|
||||||
|
<rdf:Description rdf:about=''
|
||||||
|
xmlns:photoshop='http://ns.adobe.com/photoshop/1.0/'>
|
||||||
|
<photoshop:AuthorsPosition>Archivalist</photoshop:AuthorsPosition>
|
||||||
|
<photoshop:DateCreated>1980-06-02T18:19:58</photoshop:DateCreated>
|
||||||
|
<photoshop:Headline>Photoshop Headline</photoshop:Headline>
|
||||||
|
</rdf:Description>
|
||||||
|
|
||||||
|
<rdf:Description rdf:about=''
|
||||||
|
xmlns:tiff='http://ns.adobe.com/tiff/1.0/'>
|
||||||
|
<tiff:Make>CamMake</tiff:Make>
|
||||||
|
<tiff:Model>CamModel</tiff:Model>
|
||||||
|
<tiff:Orientation>1</tiff:Orientation>
|
||||||
|
</rdf:Description>
|
||||||
|
|
||||||
|
<rdf:Description rdf:about=''
|
||||||
|
xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
|
||||||
|
<xmp:CreateDate>2007-07-29T18:19:58+13:45</xmp:CreateDate>
|
||||||
|
<xmp:CreatorTool>Adobe Photoshop Lightroom 13.2 Classic (Windows)</xmp:CreatorTool>
|
||||||
|
<xmp:MetadataDate>2014-03-23T01:17:49-05:00</xmp:MetadataDate>
|
||||||
|
<xmp:ModifyDate>2014-03-22T19:09:41-05:00</xmp:ModifyDate>
|
||||||
|
</rdf:Description>
|
||||||
|
|
||||||
|
</rdf:RDF>
|
||||||
|
</x:xmpmeta>
|
||||||
|
<?xpacket end='w'?>
|
BIN
test/backend/assets/sidecar/testimagedesc1.jpg
Normal file
BIN
test/backend/assets/sidecar/testimagedesc1.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
54
test/backend/assets/sidecar/testimagedesc1.json
Normal file
54
test/backend/assets/sidecar/testimagedesc1.json
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
{
|
||||||
|
"cameraData": {
|
||||||
|
"ISO": 3200,
|
||||||
|
"exposure": 0.00125,
|
||||||
|
"fStop": 5.6,
|
||||||
|
"focalLength": 85,
|
||||||
|
"lens": "EF-S15-85mm f/3.5-5.6 IS USM",
|
||||||
|
"make": "Canon",
|
||||||
|
"model": "óüöúőűáé ÓÜÖÚŐŰÁÉ"
|
||||||
|
},
|
||||||
|
"caption": "Test caption",
|
||||||
|
"creationDate": 1434018566690,
|
||||||
|
"faces": [
|
||||||
|
{
|
||||||
|
"box": {
|
||||||
|
"height": 2,
|
||||||
|
"width": 2,
|
||||||
|
"left": 7,
|
||||||
|
"top": 3
|
||||||
|
},
|
||||||
|
"name": "squirrel"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"box": {
|
||||||
|
"height": 3,
|
||||||
|
"width": 2,
|
||||||
|
"left": 4,
|
||||||
|
"top": 4
|
||||||
|
},
|
||||||
|
"name": "special_chars űáéúőóüío?._:"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"fileSize": 39424,
|
||||||
|
"keywords": [
|
||||||
|
"Berkley",
|
||||||
|
"USA",
|
||||||
|
"űáéúőóüö ŰÁÉÚŐÓÜÖ"
|
||||||
|
],
|
||||||
|
"positionData": {
|
||||||
|
"GPSData": {
|
||||||
|
"latitude": 37.871093,
|
||||||
|
"longitude": -122.25678
|
||||||
|
},
|
||||||
|
"city": "test city őúéáűóöí-.,)(=",
|
||||||
|
"country": "test country őúéáűóöí-.,)(=/%!+\"'",
|
||||||
|
"state": "test state őúéáűóöí-.,)("
|
||||||
|
},
|
||||||
|
"rating": 3,
|
||||||
|
"size": {
|
||||||
|
"height": 10,
|
||||||
|
"width": 14
|
||||||
|
},
|
||||||
|
"title": "Test caption"
|
||||||
|
}
|
86
test/backend/assets/sidecar/testimagedesc1.xmp
Normal file
86
test/backend/assets/sidecar/testimagedesc1.xmp
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
|
||||||
|
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c140 79.160451, 2017/05/06-01:08:21 ">
|
||||||
|
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||||
|
<rdf:Description rdf:about="" xmlns:GPano="http://ns.google.com/photos/1.0/panorama/" xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/" xmlns:aux="http://ns.adobe.com/exif/1.0/aux/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:xmpRights="http://ns.adobe.com/xap/1.0/rights/" xmlns:crs="http://ns.adobe.com/camera-raw-settings/1.0/" xmlns:MicrosoftPhoto="http://ns.microsoft.com/photo/1.0/" xmlns:mwg-rs="http://www.metadataworkinggroup.com/schemas/regions/" xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" xmlns:stArea="http://ns.adobe.com/xmp/sType/Area#" xmlns:lr="http://ns.adobe.com/lightroom/1.0/" GPano:FirstPhotoDate="2017-08-16" Iptc4xmpCore:CountryCode="US" Iptc4xmpCore:Location="Sublocation test" aux:ApproximateFocusDistance="213/100" aux:Firmware="1.0.2" aux:FlashCompensation="0/1" aux:ImageNumber="0" aux:Lens="EF-S15-85mm f/3.5-5.6 IS USM" aux:LensID="488" aux:LensInfo="15/1 85/1 0/0 0/0" aux:LensSerialNumber="0000129324" aux:SerialNumber="123063022888" dc:format="image/jpeg" photoshop:City="test city őúéáűóöí-.,)(=/%!+"'" photoshop:Country="test country őúéáűóöí-.,)(=/%!+"'" photoshop:DateCreated="2015-06-11T10:29:26.69" photoshop:State="test state őúéáűóöí-.,)(=/%!+"'" xmp:CreateDate="2015-06-11T10:29:26.69" xmp:CreatorTool="Adobe Photoshop Lightroom 6.1 (Windows)" xmp:MetadataDate="2019-01-20T12:25:05+01:00" xmp:ModifyDate="2015-07-24T22:45:50+02:00" xmp:Rating="3" xmp:Label="Red" xmpMM:DocumentID="xmp.did:bbbfe6e4-c352-5441-a4c0-d1a95da2ac63" xmpMM:InstanceID="xmp.iid:ee16b4b0-7678-0c44-a2a0-f44a441a642c" xmpMM:OriginalDocumentID="B6C3AD6C2A4882C8DBC687A5511B328D" xmpRights:Marked="True" crs:CropTop="0" crs:CropLeft="0.140541" crs:CropBottom="0.859459" crs:CropRight="1" crs:CropAngle="0" crs:CropConstrainToWarp="0" crs:HasCrop="True" crs:AlreadyApplied="False" crs:RawFileName="test image öüóőúéáű-.,.jpg">
|
||||||
|
<dc:creator>
|
||||||
|
<rdf:Seq>
|
||||||
|
<rdf:li>Patrik</rdf:li>
|
||||||
|
</rdf:Seq>
|
||||||
|
</dc:creator>
|
||||||
|
<dc:title>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang="x-default">Test caption</rdf:li>
|
||||||
|
|
||||||
|
</rdf:Alt>
|
||||||
|
</dc:title>
|
||||||
|
<dc:rights>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang="x-default">Copyright test</rdf:li>
|
||||||
|
</rdf:Alt>
|
||||||
|
</dc:rights>
|
||||||
|
<dc:subject>
|
||||||
|
<rdf:Bag>
|
||||||
|
<rdf:li>Berkley</rdf:li>
|
||||||
|
<rdf:li>USA</rdf:li>
|
||||||
|
<rdf:li>special_chars űáéúőóüío?._:</rdf:li>
|
||||||
|
<rdf:li>squirrel</rdf:li>
|
||||||
|
<rdf:li>űáéúőóüö ŰÁÉÚŐÓÜÖ</rdf:li>
|
||||||
|
</rdf:Bag>
|
||||||
|
</dc:subject>
|
||||||
|
<dc:description>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang="x-default">Test caption</rdf:li>
|
||||||
|
</rdf:Alt>
|
||||||
|
</dc:description>
|
||||||
|
<xmpMM:DerivedFrom stRef:documentID="B6C3AD6C2A4882C8DBC687A5511B328D" stRef:originalDocumentID="B6C3AD6C2A4882C8DBC687A5511B328D"/>
|
||||||
|
<xmpMM:History>
|
||||||
|
<rdf:Seq>
|
||||||
|
<rdf:li stEvt:action="derived" stEvt:parameters="converted from image/x-canon-cr2 to image/jpeg, saved to new location"/>
|
||||||
|
<rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:bbbfe6e4-c352-5441-a4c0-d1a95da2ac63" stEvt:softwareAgent="Adobe Photoshop Lightroom 6.1 (Windows)" stEvt:when="2015-07-24T22:45:50+02:00"/>
|
||||||
|
<rdf:li stEvt:action="saved" stEvt:changed="/metadata" stEvt:instanceID="xmp.iid:2ae29592-26ec-d344-ac38-bdbca6a40891" stEvt:softwareAgent="Adobe Photoshop Lightroom 6.1 (Windows)" stEvt:when="2015-07-24T22:45:51+02:00"/>
|
||||||
|
<rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:ee16b4b0-7678-0c44-a2a0-f44a441a642c" stEvt:when="2019-01-20T12:25:05+01:00" stEvt:softwareAgent="Adobe Photoshop Lightroom Classic 8.0 (Windows)" stEvt:changed="/metadata"/>
|
||||||
|
</rdf:Seq>
|
||||||
|
</xmpMM:History>
|
||||||
|
<MicrosoftPhoto:LastKeywordXMP>
|
||||||
|
<rdf:Bag>
|
||||||
|
<rdf:li>Berkley</rdf:li>
|
||||||
|
<rdf:li>USA</rdf:li>
|
||||||
|
<rdf:li>űáéúőóüö ŰÁÉÚŐÓÜÖ</rdf:li>
|
||||||
|
</rdf:Bag>
|
||||||
|
</MicrosoftPhoto:LastKeywordXMP>
|
||||||
|
<MicrosoftPhoto:LastKeywordIPTC>
|
||||||
|
<rdf:Bag>
|
||||||
|
<rdf:li>Berkley</rdf:li>
|
||||||
|
<rdf:li>USA</rdf:li>
|
||||||
|
<rdf:li>űáéúőóüö ŰÁÉÚŐÓÜÖ</rdf:li>
|
||||||
|
</rdf:Bag>
|
||||||
|
</MicrosoftPhoto:LastKeywordIPTC>
|
||||||
|
<mwg-rs:Regions rdf:parseType="Resource">
|
||||||
|
<mwg-rs:AppliedToDimensions stDim:w="12" stDim:h="9" stDim:unit="pixel"/>
|
||||||
|
<mwg-rs:RegionList>
|
||||||
|
<rdf:Bag>
|
||||||
|
<rdf:li>
|
||||||
|
<rdf:Description mwg-rs:Rotation="0.00000" mwg-rs:Name="squirrel" mwg-rs:Type="Face">
|
||||||
|
<mwg-rs:Area stArea:h="0.20270" stArea:w="0.14632" stArea:x="0.58573" stArea:y="0.41081"/>
|
||||||
|
</rdf:Description>
|
||||||
|
</rdf:li>
|
||||||
|
<rdf:li>
|
||||||
|
<rdf:Description mwg-rs:Rotation="0.00000" mwg-rs:Name="special_chars űáéúőóüío?._:" mwg-rs:Type="Face">
|
||||||
|
<mwg-rs:Area stArea:h="0.25405" stArea:w="0.16377" stArea:x="0.33991" stArea:y="0.48467"/>
|
||||||
|
</rdf:Description>
|
||||||
|
</rdf:li>
|
||||||
|
</rdf:Bag>
|
||||||
|
</mwg-rs:RegionList>
|
||||||
|
</mwg-rs:Regions>
|
||||||
|
<lr:hierarchicalSubject>
|
||||||
|
<rdf:Bag>
|
||||||
|
<rdf:li>Berkley</rdf:li>
|
||||||
|
<rdf:li>USA</rdf:li>
|
||||||
|
<rdf:li>special_chars űáéúőóüío?._:</rdf:li>
|
||||||
|
<rdf:li>squirrel</rdf:li>
|
||||||
|
<rdf:li>űáéúőóüö ŰÁÉÚŐÓÜÖ</rdf:li>
|
||||||
|
</rdf:Bag>
|
||||||
|
</lr:hierarchicalSubject>
|
||||||
|
</rdf:Description>
|
||||||
|
</rdf:RDF>
|
||||||
|
</x:xmpmeta> <?xpacket end="w"?>
|
BIN
test/backend/assets/sidecar/testimagedesc2.jpg
Normal file
BIN
test/backend/assets/sidecar/testimagedesc2.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
56
test/backend/assets/sidecar/testimagedesc2.json
Normal file
56
test/backend/assets/sidecar/testimagedesc2.json
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
{
|
||||||
|
"cameraData": {
|
||||||
|
"ISO": 3200,
|
||||||
|
"exposure": 0.00125,
|
||||||
|
"fStop": 5.6,
|
||||||
|
"focalLength": 85,
|
||||||
|
"lens": "EF-S15-85mm f/3.5-5.6 IS USM",
|
||||||
|
"make": "Canon",
|
||||||
|
"model": "óüöúőűáé ÓÜÖÚŐŰÁÉ"
|
||||||
|
},
|
||||||
|
"caption": "Test caption",
|
||||||
|
"creationDate": 1434018566000,
|
||||||
|
"faces": [
|
||||||
|
{
|
||||||
|
"box": {
|
||||||
|
"height": 2,
|
||||||
|
"width": 2,
|
||||||
|
"left": 7,
|
||||||
|
"top": 3
|
||||||
|
},
|
||||||
|
"name": "squirrel"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"box": {
|
||||||
|
"height": 3,
|
||||||
|
"width": 2,
|
||||||
|
"left": 4,
|
||||||
|
"top": 4
|
||||||
|
},
|
||||||
|
"name": "special_chars űáéúőóüío?._:"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"fileSize": 39424,
|
||||||
|
"keywords": [
|
||||||
|
"Berkley",
|
||||||
|
"USA",
|
||||||
|
"űáéúőóüö ŰÁÉÚŐÓÜÖ",
|
||||||
|
"special_chars űáéúőóüío?._:",
|
||||||
|
"squirrel"
|
||||||
|
],
|
||||||
|
"positionData": {
|
||||||
|
"GPSData": {
|
||||||
|
"latitude": 37.871093,
|
||||||
|
"longitude": -122.25678
|
||||||
|
},
|
||||||
|
"city": "test city őúéáűóöí-.,)(=",
|
||||||
|
"country": "test country őúéáűóöí-.,)(=/%!+\"'",
|
||||||
|
"state": "test state őúéáűóöí-.,)("
|
||||||
|
},
|
||||||
|
"rating": 3,
|
||||||
|
"size": {
|
||||||
|
"height": 10,
|
||||||
|
"width": 14
|
||||||
|
},
|
||||||
|
"title": "Test caption"
|
||||||
|
}
|
139
test/backend/assets/sidecar/testimagedesc2.xmp
Normal file
139
test/backend/assets/sidecar/testimagedesc2.xmp
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
|
||||||
|
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.69'>
|
||||||
|
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
|
||||||
|
|
||||||
|
<rdf:Description rdf:about=''
|
||||||
|
xmlns:Iptc4xmpCore='http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/'>
|
||||||
|
<Iptc4xmpCore:CountryCode>US</Iptc4xmpCore:CountryCode>
|
||||||
|
<Iptc4xmpCore:Location>Sublocation test</Iptc4xmpCore:Location>
|
||||||
|
</rdf:Description>
|
||||||
|
|
||||||
|
<rdf:Description rdf:about=''
|
||||||
|
xmlns:dc='http://purl.org/dc/elements/1.1/'>
|
||||||
|
<dc:creator>
|
||||||
|
<rdf:Seq>
|
||||||
|
<rdf:li>Patrik</rdf:li>
|
||||||
|
</rdf:Seq>
|
||||||
|
</dc:creator>
|
||||||
|
<dc:description>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang='x-default'>Test caption</rdf:li>
|
||||||
|
</rdf:Alt>
|
||||||
|
</dc:description>
|
||||||
|
<dc:rights>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang='x-default'>Copyright test</rdf:li>
|
||||||
|
</rdf:Alt>
|
||||||
|
</dc:rights>
|
||||||
|
<dc:subject>
|
||||||
|
<rdf:Bag>
|
||||||
|
<rdf:li>Berkley</rdf:li>
|
||||||
|
<rdf:li>USA</rdf:li>
|
||||||
|
<rdf:li>special_chars űáéúőóüío?._:</rdf:li>
|
||||||
|
<rdf:li>squirrel</rdf:li>
|
||||||
|
<rdf:li>űáéúőóüö ŰÁÉÚŐÓÜÖ</rdf:li>
|
||||||
|
</rdf:Bag>
|
||||||
|
</dc:subject>
|
||||||
|
<dc:title>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang='x-default'>Test caption</rdf:li>
|
||||||
|
</rdf:Alt>
|
||||||
|
</dc:title>
|
||||||
|
</rdf:Description>
|
||||||
|
|
||||||
|
<rdf:Description rdf:about=''
|
||||||
|
xmlns:exif='http://ns.adobe.com/exif/1.0/'>
|
||||||
|
<exif:ApertureValue>40761/8200</exif:ApertureValue>
|
||||||
|
<exif:ColorSpace>1</exif:ColorSpace>
|
||||||
|
<exif:CustomRendered>0</exif:CustomRendered>
|
||||||
|
<exif:DateTimeOriginal>2015-06-11T10:29:26</exif:DateTimeOriginal>
|
||||||
|
<exif:ExifVersion>0230</exif:ExifVersion>
|
||||||
|
<exif:ExposureBiasValue>0/1</exif:ExposureBiasValue>
|
||||||
|
<exif:ExposureMode>0</exif:ExposureMode>
|
||||||
|
<exif:ExposureProgram>6</exif:ExposureProgram>
|
||||||
|
<exif:ExposureTime>1/800</exif:ExposureTime>
|
||||||
|
<exif:FNumber>28/5</exif:FNumber>
|
||||||
|
<exif:Flash rdf:parseType='Resource'>
|
||||||
|
<exif:Fired>False</exif:Fired>
|
||||||
|
<exif:Function>False</exif:Function>
|
||||||
|
<exif:Mode>2</exif:Mode>
|
||||||
|
<exif:RedEyeMode>False</exif:RedEyeMode>
|
||||||
|
<exif:Return>0</exif:Return>
|
||||||
|
</exif:Flash>
|
||||||
|
<exif:FocalLength>85/1</exif:FocalLength>
|
||||||
|
<exif:FocalPlaneResolutionUnit>2</exif:FocalPlaneResolutionUnit>
|
||||||
|
<exif:FocalPlaneXResolution>1036800/181</exif:FocalPlaneXResolution>
|
||||||
|
<exif:FocalPlaneYResolution>691200/119</exif:FocalPlaneYResolution>
|
||||||
|
<exif:GPSAltitude>90/1</exif:GPSAltitude>
|
||||||
|
<exif:GPSLatitude>37,52.2656N</exif:GPSLatitude>
|
||||||
|
<exif:GPSLongitude>122,15.4068W</exif:GPSLongitude>
|
||||||
|
<exif:GPSVersionID>2.2.0.0</exif:GPSVersionID>
|
||||||
|
<exif:ISOSpeedRatings>
|
||||||
|
<rdf:Seq>
|
||||||
|
<rdf:li>3200</rdf:li>
|
||||||
|
</rdf:Seq>
|
||||||
|
</exif:ISOSpeedRatings>
|
||||||
|
<exif:MaxApertureValue>18325/3649</exif:MaxApertureValue>
|
||||||
|
<exif:MeteringMode>5</exif:MeteringMode>
|
||||||
|
<exif:SceneCaptureType>0</exif:SceneCaptureType>
|
||||||
|
<exif:ShutterSpeedValue>19307/2002</exif:ShutterSpeedValue>
|
||||||
|
<exif:WhiteBalance>0</exif:WhiteBalance>
|
||||||
|
</rdf:Description>
|
||||||
|
|
||||||
|
<rdf:Description rdf:about=''
|
||||||
|
xmlns:exifEX='http://cipa.jp/exif/1.0/'>
|
||||||
|
<exifEX:BodySerialNumber>123063022888</exifEX:BodySerialNumber>
|
||||||
|
<exifEX:LensModel>EF-S15-85mm f/3.5-5.6 IS USM</exifEX:LensModel>
|
||||||
|
<exifEX:LensSerialNumber>0000129324</exifEX:LensSerialNumber>
|
||||||
|
<exifEX:LensSpecification>
|
||||||
|
<rdf:Seq>
|
||||||
|
<rdf:li>15/1</rdf:li>
|
||||||
|
<rdf:li>85/1</rdf:li>
|
||||||
|
<rdf:li>0/0</rdf:li>
|
||||||
|
<rdf:li>0/0</rdf:li>
|
||||||
|
</rdf:Seq>
|
||||||
|
</exifEX:LensSpecification>
|
||||||
|
<exifEX:RecommendedExposureIndex>3200</exifEX:RecommendedExposureIndex>
|
||||||
|
<exifEX:SensitivityType>2</exifEX:SensitivityType>
|
||||||
|
</rdf:Description>
|
||||||
|
|
||||||
|
<rdf:Description rdf:about=''
|
||||||
|
xmlns:photoshop='http://ns.adobe.com/photoshop/1.0/'>
|
||||||
|
<photoshop:City>test city őúéáűóöí-.,)(=</photoshop:City>
|
||||||
|
<photoshop:Country>test country őúéáűóöí-.,)(=/%!+"'</photoshop:Country>
|
||||||
|
<photoshop:DateCreated>2015-06-11T10:29:26</photoshop:DateCreated>
|
||||||
|
<photoshop:State>test state őúéáűóöí-.,)(</photoshop:State>
|
||||||
|
</rdf:Description>
|
||||||
|
|
||||||
|
<rdf:Description rdf:about=''
|
||||||
|
xmlns:tiff='http://ns.adobe.com/tiff/1.0/'>
|
||||||
|
<tiff:Artist>Patrik</tiff:Artist>
|
||||||
|
<tiff:Compression>6</tiff:Compression>
|
||||||
|
<tiff:Copyright>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang='x-default'>Copyright test</rdf:li>
|
||||||
|
</rdf:Alt>
|
||||||
|
</tiff:Copyright>
|
||||||
|
<tiff:ImageDescription>
|
||||||
|
<rdf:Alt>
|
||||||
|
<rdf:li xml:lang='x-default'>Test caption</rdf:li>
|
||||||
|
</rdf:Alt>
|
||||||
|
</tiff:ImageDescription>
|
||||||
|
<tiff:Make>Canon</tiff:Make>
|
||||||
|
<tiff:Model>óüöúőűáé ÓÜÖÚŐŰÁÉ</tiff:Model>
|
||||||
|
<tiff:Orientation>1</tiff:Orientation>
|
||||||
|
<tiff:ResolutionUnit>3</tiff:ResolutionUnit>
|
||||||
|
<tiff:Software>Adobe Photoshop Lightroom 6.1 (Windows)</tiff:Software>
|
||||||
|
<tiff:XResolution>94/1</tiff:XResolution>
|
||||||
|
<tiff:YResolution>94/1</tiff:YResolution>
|
||||||
|
</rdf:Description>
|
||||||
|
|
||||||
|
<rdf:Description rdf:about=''
|
||||||
|
xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
|
||||||
|
<xmp:CreateDate>2015-06-11T10:29:26</xmp:CreateDate>
|
||||||
|
<xmp:CreatorTool>Adobe Photoshop Lightroom 6.1 (Windows)</xmp:CreatorTool>
|
||||||
|
<xmp:ModifyDate>2015-07-24T22:45:50</xmp:ModifyDate>
|
||||||
|
</rdf:Description>
|
||||||
|
</rdf:RDF>
|
||||||
|
</x:xmpmeta>
|
||||||
|
<?xpacket end='w'?>
|
@ -24,7 +24,7 @@ describe('DiskMangerWorker', () => {
|
|||||||
ProjectPath.ImageFolder = path.join(__dirname, '/../../../assets');
|
ProjectPath.ImageFolder = path.join(__dirname, '/../../../assets');
|
||||||
const dir = await DiskManager.scanDirectory('/');
|
const dir = await DiskManager.scanDirectory('/');
|
||||||
// should match the number of media (photo/video) files in the assets folder
|
// should match the number of media (photo/video) files in the assets folder
|
||||||
expect(dir.media.length).to.be.equals(15);
|
expect(dir.media.length).to.be.equals(17);
|
||||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
const expected = require(path.join(__dirname, '/../../../assets/test image öüóőúéáű-.,.json'));
|
const expected = require(path.join(__dirname, '/../../../assets/test image öüóőúéáű-.,.json'));
|
||||||
const i = dir.media.findIndex(m => m.name === 'test image öüóőúéáű-.,.jpg');
|
const i = dir.media.findIndex(m => m.name === 'test image öüóőúéáű-.,.jpg');
|
||||||
|
@ -35,6 +35,12 @@ describe('MetadataLoader', () => {
|
|||||||
expect(Utils.clone(data)).to.be.deep.equal(expected);
|
expect(Utils.clone(data)).to.be.deep.equal(expected);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should load png with description', async () => {
|
||||||
|
const data = await MetadataLoader.loadPhotoMetadata(path.join(__dirname, '/../../../assets/description.png'));
|
||||||
|
const expected = require(path.join(__dirname, '/../../../assets/description.json'));
|
||||||
|
expect(Utils.clone(data)).to.be.deep.equal(expected);
|
||||||
|
});
|
||||||
|
|
||||||
it('should load jpg', async () => {
|
it('should load jpg', async () => {
|
||||||
const data = await MetadataLoader.loadPhotoMetadata(path.join(__dirname, '/../../../assets/test image öüóőúéáű-.,.jpg'));
|
const data = await MetadataLoader.loadPhotoMetadata(path.join(__dirname, '/../../../assets/test image öüóőúéáű-.,.jpg'));
|
||||||
const expected = require(path.join(__dirname, '/../../../assets/test image öüóőúéáű-.,.json'));
|
const expected = require(path.join(__dirname, '/../../../assets/test image öüóőúéáű-.,.json'));
|
||||||
@ -179,6 +185,11 @@ describe('MetadataLoader', () => {
|
|||||||
const expected = require(path.join(__dirname, '/../../../assets/wild-1-small.json'));
|
const expected = require(path.join(__dirname, '/../../../assets/wild-1-small.json'));
|
||||||
expect(Utils.clone(data)).to.be.deep.equal(expected);
|
expect(Utils.clone(data)).to.be.deep.equal(expected);
|
||||||
});
|
});
|
||||||
|
it('should load image with metadata saved by digikam', async () => {
|
||||||
|
const data = await MetadataLoader.loadPhotoMetadata(path.join(__dirname, '/../../../assets/digikam.jpg'));
|
||||||
|
const expected = require(path.join(__dirname, '/../../../assets/digikam.json'));
|
||||||
|
expect(Utils.clone(data)).to.be.deep.equal(expected);
|
||||||
|
});
|
||||||
|
|
||||||
describe('should load jpg with edge case exif data', () => {
|
describe('should load jpg with edge case exif data', () => {
|
||||||
const root = path.join(__dirname, '/../../../assets/edge_case_exif_data');
|
const root = path.join(__dirname, '/../../../assets/edge_case_exif_data');
|
||||||
|
Loading…
Reference in New Issue
Block a user