// Called by Directory Opus to initialize the script function OnInit(initData) { initData.name = "Folder Camera Models"; initData.version = "1.0"; initData.copyright = "(c) 2018 Leo Davidson"; initData.url = "https://resource.dopus.com/t/camera-models-column-collate-child-file-metadata-for-parent-folder/29717"; initData.desc = "Column for camera models of files within folders"; initData.default_enable = true; initData.min_version = "12.0"; var col = initData.AddColumn(); col.name = "CameraModels"; col.method = "OnCameraModels"; col.label = "Camera Models"; col.justify = "left"; col.autogroup = true; } // Implement the CameraModel column function OnCameraModels(scriptColData) { var item = scriptColData.item; if (!item.is_dir) { var cameraModel = GetCameraModelFromFile(item); if (cameraModel != null) scriptColData.value = cameraModel; return; } var isRecursive = true; var modelSet = DOpus.Create.StringSetI(); var folderEnum = DOpus.FSUtil.ReadDir(item, isRecursive); while (!folderEnum.complete) { var childItem = folderEnum.next; if (!childItem.is_dir) { var cameraModel = GetCameraModelFromFile(childItem); if (cameraModel != null) modelSet.insert(cameraModel); } } if (modelSet.empty) return; var cameraModels = null; for (var e = new Enumerator(modelSet); !e.atEnd(); e.moveNext()) { if (cameraModels == null) cameraModels = e.item(); else cameraModels += ("; " + e.item()); } scriptColData.value = cameraModels; } function GetCameraModelFromFile(fileItem) { var imageMeta = fileItem.metadata.image; if (imageMeta == null) return null; var cameraModel = imageMeta.cameramodel; if (cameraModel == null || typeof(cameraModel) != "string" || cameraModel == "") return null; return cameraModel; }