def test_delete_property(self): """ Verify the deleting a phony property does not raise an exception. """ xmp = XMPMeta() xmp.parse_from_str(xmpcoverage.RDFCoverage, xmpmeta_wrap=True ) xmp.delete_property(xmpcoverage.NS1, "NotReallyThere" )
def test_delete_property(self): """ Verify the deleting a phony property does not raise an exception. """ xmp = XMPMeta() xmp.parse_from_str(xmpcoverage.RDFCoverage, xmpmeta_wrap=True) xmp.delete_property(xmpcoverage.NS1, "NotReallyThere")
def test_delete_property_bad_schema(self): """ Specifying a bad schema trigger an exception. """ xmp = XMPMeta() xmp.parse_from_str(xmpcoverage.RDFCoverage, xmpmeta_wrap=True ) with self.assertRaises(XMPError): xmp.delete_property("not really a schema", "NotReallyThere" )
def test_delete_property_bad_schema(self): """ Specifying a bad schema trigger an exception. """ xmp = XMPMeta() xmp.parse_from_str(xmpcoverage.RDFCoverage, xmpmeta_wrap=True) with self.assertRaises(XMPError): xmp.delete_property("not really a schema", "NotReallyThere")
def test_exempi_core(self): """Corresponds to test_exempi.TestExempi.test_exempi_core""" filename = pkg_resources.resource_filename(__name__, "samples/test1.xmp") with open(filename, 'r') as fptr: strbuffer = fptr.read() xmp = XMPMeta() xmp.parse_from_str(strbuffer) self.assertTrue(xmp.does_property_exist(NS_TIFF, 'Make')) self.assertFalse(xmp.does_property_exist(NS_TIFF, 'Foo')) prop = xmp.get_property(NS_TIFF, 'Make') self.assertEqual(prop, 'Canon') xmp.set_property(NS_TIFF, 'Make', 'Leica') prop = xmp.get_property(NS_TIFF, 'Make') self.assertEqual(prop, 'Leica') # Some tests correspond to option masks not currently returned via # this interface. item = xmp.get_localized_text(NS_DC, 'rights', None, 'x-default') self.assertEqual(item, "2006, Hubert Figuiere") xmp.set_localized_text(NS_DC, 'rights', 'en', 'en-CA', 'Foo bar') item = xmp.get_localized_text(NS_DC, 'rights', 'en', 'en-US') # Can't look at the actual lang, unlike the original test. self.assertEqual(item, 'Foo bar') xmp.delete_localized_text(NS_DC, 'rights', 'en', 'en-CA') self.assertFalse(xmp.does_property_exist(NS_DC, "rights[1]")) xmp.set_array_item(NS_DC, "creator", 2, "foo") xmp.append_array_item(NS_DC, "creator", "bar") prop = xmp.get_array_item(NS_DC, "creator", 3) self.assertEqual(prop, "bar") xmp.delete_property(NS_DC, "creator[3]") self.assertFalse(xmp.does_property_exist(NS_DC, "creator[3]")) prop = xmp.get_property(NS_EXIF, "DateTimeOriginal") self.assertEqual(prop, "2006-12-07T23:20:43-05:00") the_prop = xmp.get_property_datetime(NS_EXIF, "DateTimeOriginal") self.assertEqual(the_prop.year, 2006) self.assertEqual(the_prop.minute, 20) self.assertEqual(the_prop.tzinfo, pytz.utc) prop = xmp.get_property(NS_XAP, "Rating") self.assertEqual(prop, "3") prop = xmp.get_property_float(NS_CAMERA_RAW_SETTINGS, "SharpenRadius") self.assertEqual(prop, 1.0) xmp.set_property_float(NS_CAMERA_RAW_SETTINGS, "SharpenRadius", 2.5) prop = xmp.get_property_float(NS_CAMERA_RAW_SETTINGS, "SharpenRadius") self.assertEqual(prop, 2.5) prop = xmp.get_property_bool(NS_CAMERA_RAW_SETTINGS, "AlreadyApplied") self.assertFalse(prop) xmp.set_property_bool(NS_CAMERA_RAW_SETTINGS, "AlreadyApplied", True) prop = xmp.get_property_bool(NS_CAMERA_RAW_SETTINGS, "AlreadyApplied") self.assertTrue(prop) prop = xmp.get_property_int(NS_EXIF, "MeteringMode") self.assertEqual(prop, 5) xmp.set_property_int(NS_EXIF, "MeteringMode", 10) prop = xmp.get_property_long(NS_EXIF, "MeteringMode") self.assertEqual(prop, 10) xmp.set_property_long(NS_EXIF, "MeteringMode", 32) prop = xmp.get_property_int(NS_EXIF, "MeteringMode") self.assertEqual(prop, 32)
def export_to_xmp_files(args): tmp_faces, img_labels = utils.load_img_labels(args.imgs_root) faces = utils.FACES(tmp_faces) if len(faces.dict_by_files) == 0: print('no faces loaded') exit() total_images = utils.get_images_in_dir_rec(args.imgs_root) for f in total_images: img_path = os.path.splitext(f)[0] + os.path.splitext(f)[1].lower() if os.path.dirname( img_path ) != args.mask_folder and args.mask_folder != None or img_path.lower( ).endswith('.png'): continue xmp_path = os.path.splitext(f)[0] + '.xmp' if os.path.exists(xmp_path): with open(xmp_path, 'r') as fptr: strbuffer = fptr.read() xmp = XMPMeta() xmp.parse_from_str(strbuffer) else: xmpfile = XMPFiles(file_path=f, open_forupdate=True) xmp = xmpfile.get_xmp() # print(f) kw_faces, kw_tags, kw_categories, kw_labels, kw_miscs = get_keywords( xmp) kw_tags = [] kw_categories = [] kw_miscs = [] if img_path in faces.dict_by_files: names = faces.get_names(faces.dict_by_files[img_path]) # remove detected, deleted and unknown unwanted_names = {'detected', 'deleted', 'unknown'} names = [ele for ele in names if ele not in unwanted_names] face_names = prepare_names(names, 'f ') else: # if not os.path.exists(xmp_path): # continue face_names = [] labels = [] if img_path in img_labels: if len(img_labels[img_path].tags) != 0: labels += prepare_names([ t[0].lower() for t in img_labels[img_path].tags if t[1] >= 30 ], 'l ') if len(img_labels[img_path].categories) != 0: labels += prepare_names( [c[0].lower() for c in img_labels[img_path].categories], 'l ') if hasattr(img_labels[img_path], 'gcloud_labels'): labels += prepare_names( [l.lower() for l in img_labels[img_path].gcloud_labels], 'l ') if hasattr(img_labels[img_path], 'gcloud_objects'): labels += prepare_names( [l.lower() for l in img_labels[img_path].gcloud_objects], 'l ') if hasattr(img_labels[img_path], 'gcloud_web'): labels += prepare_names( [l.lower() for l in img_labels[img_path].gcloud_web], 'l ') if hasattr(img_labels[img_path], 'gcloud_landmarks'): labels += prepare_names([ l.lower() for l in img_labels[img_path].gcloud_landmarks[::2] ], 'l ') labels = list(set(labels)) if sorted(face_names) != sorted(kw_faces) or sorted(labels) != sorted( kw_labels) or not os.path.exists(xmp_path): xmp.delete_property(consts.XMP_NS_DC, 'subject') for face in face_names: xmp.append_array_item(consts.XMP_NS_DC, 'subject', face, { 'prop_array_is_ordered': True, 'prop_value_is_array': True }) for l in labels: xmp.append_array_item(consts.XMP_NS_DC, 'subject', l, { 'prop_array_is_ordered': True, 'prop_value_is_array': True }) print('exporting file: {}'.format(os.path.basename(xmp_path))) with open(xmp_path, 'w') as fptr: fptr.write(xmp.serialize_to_str(omit_packet_wrapper=True))
def test_exempi_core(self): """Corresponds to test_exempi.TestExempi.test_exempi_core""" filename = pkg_resources.resource_filename(__name__, "samples/test1.xmp") with open(filename, 'r') as fptr: strbuffer = fptr.read() xmp = XMPMeta() xmp.parse_from_str(strbuffer) self.assertTrue(xmp.does_property_exist(NS_TIFF, 'Make')) self.assertFalse(xmp.does_property_exist(NS_TIFF, 'Foo')) prop = xmp.get_property(NS_TIFF, 'Make') self.assertEqual(prop, 'Canon') xmp.set_property(NS_TIFF, 'Make', 'Leica') prop = xmp.get_property(NS_TIFF, 'Make') self.assertEqual(prop, 'Leica') # Some tests correspond to option masks not currently returned via # this interface. item = xmp.get_localized_text(NS_DC, 'rights', None, 'x-default') self.assertEqual(item, "2006, Hubert Figuiere") xmp.set_localized_text(NS_DC, 'rights', 'en', 'en-CA', 'Foo bar') item = xmp.get_localized_text(NS_DC, 'rights', 'en', 'en-US') # Can't look at the actual lang, unlike the original test. self.assertEqual(item, 'Foo bar') xmp.delete_localized_text(NS_DC, 'rights', 'en', 'en-CA') self.assertFalse(xmp.does_property_exist(NS_DC, "rights[1]")) xmp.set_array_item(NS_DC, "creator", 2, "foo") xmp.append_array_item(NS_DC, "creator", "bar") prop = xmp.get_array_item(NS_DC, "creator", 3) self.assertEqual(prop, "bar") xmp.delete_property(NS_DC, "creator[3]") self.assertFalse(xmp.does_property_exist(NS_DC, "creator[3]")) prop = xmp.get_property(NS_EXIF, "DateTimeOriginal") self.assertEqual(prop, "2006-12-07T23:20:43-05:00") the_prop = xmp.get_property_datetime(NS_EXIF, "DateTimeOriginal") self.assertEqual(the_prop.year, 2006) self.assertEqual(the_prop.minute, 20) self.assertEqual(the_prop.tzinfo, pytz.utc) prop = xmp.get_property(NS_XAP, "Rating") self.assertEqual(prop, "3") prop = xmp.get_property_float(NS_CAMERA_RAW_SETTINGS, "SharpenRadius") self.assertEqual(prop, 1.0) xmp.set_property_float(NS_CAMERA_RAW_SETTINGS, "SharpenRadius", 2.5) prop = xmp.get_property_float(NS_CAMERA_RAW_SETTINGS, "SharpenRadius") self.assertEqual(prop, 2.5) prop = xmp.get_property_bool(NS_CAMERA_RAW_SETTINGS, "AlreadyApplied") self.assertFalse(prop) xmp.set_property_bool(NS_CAMERA_RAW_SETTINGS, "AlreadyApplied", True) prop = xmp.get_property_bool(NS_CAMERA_RAW_SETTINGS, "AlreadyApplied") self.assertTrue(prop) prop = xmp.get_property_int(NS_EXIF, "MeteringMode") self.assertEqual(prop, 5) xmp.set_property_int(NS_EXIF, "MeteringMode", 10) prop = xmp.get_property_long(NS_EXIF, "MeteringMode") self.assertEqual(prop, 10) xmp.set_property_long(NS_EXIF, "MeteringMode", 32) prop = xmp.get_property_int(NS_EXIF, "MeteringMode") self.assertEqual(prop, 32)