Пример #1
0
 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" )
Пример #2
0
 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")
Пример #3
0
 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" )
Пример #4
0
 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")
Пример #5
0
    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)
Пример #6
0
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))
Пример #7
0
    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)