def get_xmp(self, tag):
     xfptr = exempi.files_open_new(self.path, XMP_OPEN_READ)
     xmp = exempi.files_get_new_xmp(xfptr)
     the_prop, _ = exempi.get_property(xmp, NS_PHOTOSHOP, tag)
     exempi.free(xmp)
     exempi.files_close(xfptr, XMP_CLOSE_NOOPTION)
     exempi.files_free(xfptr)
 def write_xmp(self, tag, value):
     xfptr = exempi.files_open_new(self.path, XMP_OPEN_FORUPDATE)
     xmp = exempi.files_get_new_xmp(xfptr)
     if xmp is not None:
         exempi.set_property(xmp, NS_PHOTOSHOP, tag, value, 0)
         exempi.files_put_xmp(xfptr, xmp)
         exempi.free(xmp)
     exempi.files_close(xfptr, XMP_CLOSE_SAFEUPDATE)
     exempi.files_free(xfptr)
 def test_bgo(self):
     """Corresponds to test-bgo.cpp
     """
     filename = pkg_resources.resource_filename(__name__,
                                                "samples/fdo18635.jpg")
     xfptr = exempi.files_open_new(filename, XMP_OPEN_READ)
     xmp = exempi.files_get_new_xmp(xfptr)
     exempi.free(xmp)
     exempi.files_free(xfptr)
     self.assertTrue(True)
 def test_bgo(self):
     """Corresponds to test-bgo.cpp
     """
     filename = pkg_resources.resource_filename(__name__,
                                                "samples/fdo18635.jpg")
     xfptr = exempi.files_open_new(filename, XMP_OPEN_READ)
     xmp = exempi.files_get_new_xmp(xfptr)
     exempi.free(xmp)
     exempi.files_free(xfptr)
     self.assertTrue(True)
    def test_tiff_leak(self):
        """Corresponds to test-tiff-leak.cpp"""
        orig_file = pkg_resources.resource_filename(__name__,
                                                    "samples/BlueSquare.tif")

        with tempfile.NamedTemporaryFile(suffix='.tif') as tfile:
            shutil.copyfile(orig_file, tfile.name)

            xfptr = exempi.files_open_new(tfile.name, XMP_OPEN_FORUPDATE)

            xmp = exempi.files_get_new_xmp(xfptr)
            exempi.set_localized_text(xmp, NS_DC, "description", "en", "en-US",
                                      "foo", 0)
            exempi.files_put_xmp(xfptr, xmp)
            exempi.files_close(xfptr, XMP_CLOSE_NOOPTION)
            exempi.free(xmp)
            exempi.files_free(xfptr)
        self.assertTrue(True)
    def test_tiff_leak(self):
        """Corresponds to test-tiff-leak.cpp"""
        orig_file = pkg_resources.resource_filename(__name__,
                                                    "samples/BlueSquare.tif")

        with tempfile.NamedTemporaryFile(suffix='.tif') as tfile:
            shutil.copyfile(orig_file, tfile.name)

            xfptr = exempi.files_open_new(tfile.name, XMP_OPEN_FORUPDATE)

            xmp = exempi.files_get_new_xmp(xfptr)
            exempi.set_localized_text(xmp, NS_DC, "description", "en", "en-US",
                                      "foo", 0)
            exempi.files_put_xmp(xfptr, xmp)
            exempi.files_close(xfptr, XMP_CLOSE_NOOPTION)
            exempi.free(xmp)
            exempi.files_free(xfptr)
        self.assertTrue(True)
    def test_xmp_files(self):
        """Corresponds to test_xmp_files.cpp"""
        filename = pkg_resources.resource_filename(__name__,
                                                   "samples/BlueSquare.jpg")

        xfptr = exempi.files_open_new(filename, XMP_OPEN_READ)
        fmt = exempi.files_check_file_format(filename)
        self.assertEqual(fmt, libxmp.consts.XMP_FT_JPEG)

        file_path, options, file_format, flags = exempi.files_get_file_info(xfptr)
        self.assertEqual(options, XMP_OPEN_READ)
        self.assertEqual(file_format, libxmp.consts.XMP_FT_JPEG)
        self.assertEqual(flags, 0x27f)  # 0x27f?
        self.assertEqual(filename, file_path)

        xmp = exempi.files_get_xmp(xfptr)
        the_prop, _ = exempi.get_property(xmp, NS_PHOTOSHOP, "ICCProfile")
        self.assertEqual(the_prop, "sRGB IEC61966-2.1")
        exempi.files_free(xfptr)
 def test_formats(self):
     """Verify that check_file_format function works as expected."""
     pairs = { 'avi':  libxmp.consts.XMP_FT_AVI,
               'eps':  libxmp.consts.XMP_FT_EPS,
               'gif':  libxmp.consts.XMP_FT_GIF,
               'indd': libxmp.consts.XMP_FT_INDESIGN,
               'jpg':  libxmp.consts.XMP_FT_JPEG,
               'mov':  libxmp.consts.XMP_FT_MOV,
               'mp3':  libxmp.consts.XMP_FT_MP3,
               'png':  libxmp.consts.XMP_FT_PNG,
               'psd':  libxmp.consts.XMP_FT_PHOTOSHOP,
               'tif':  libxmp.consts.XMP_FT_TIFF,
               'wav':  libxmp.consts.XMP_FT_WAV,
               }
     for suffix, expected_format in pairs.items():
         relpath = os.path.join('samples', 'BlueSquare' + '.' + suffix)
         filename = pkg_resources.resource_filename(__name__, relpath)
         xfptr = exempi.files_open_new(filename, XMP_OPEN_READ)
         actual_format = exempi.files_check_file_format(filename)
         self.assertEqual(actual_format, expected_format)
         exempi.files_free(xfptr)
    def test_xmpfiles_write(self):
        """According to test-xmpfiles-write.cpp"""
        filename = pkg_resources.resource_filename(__name__,
                                                   "samples/BlueSquare.jpg")

        fmt = exempi.files_check_file_format(filename)
        self.assertEqual(fmt, libxmp.consts.XMP_FT_JPEG)

        xfptr = exempi.files_open_new(filename, XMP_OPEN_READ)
        xmp = exempi.files_get_new_xmp(xfptr)
        exempi.files_free(xfptr)

        with tempfile.NamedTemporaryFile(suffix=".jpg") as tfile:
            shutil.copyfile(filename, tfile.name)

            xfptr = exempi.files_open_new(tfile.name, XMP_OPEN_FORUPDATE)

            exempi.set_property(xmp, NS_PHOTOSHOP, "ICCProfile", "foo", 0)
            self.assertTrue(exempi.files_can_put_xmp(xfptr, xmp))
            exempi.files_put_xmp(xfptr, xmp)
            exempi.free(xmp)
            exempi.files_close(xfptr, XMP_CLOSE_SAFEUPDATE)
            exempi.files_free(xfptr)

            xfptr = exempi.files_open_new(tfile.name, XMP_OPEN_READ)
            xmp = exempi.files_get_new_xmp(xfptr)
            the_prop, _ = exempi.get_property(xmp, NS_PHOTOSHOP, "ICCProfile")
            self.assertEqual("foo", the_prop)

            exempi.free(xmp)
            exempi.files_close(xfptr, XMP_CLOSE_NOOPTION)
            exempi.files_free(xfptr)
    def test_xmpfiles_write(self):
        """According to test-xmpfiles-write.cpp"""
        filename = pkg_resources.resource_filename(__name__,
                                                   "samples/BlueSquare.jpg")

        fmt = exempi.files_check_file_format(filename)
        self.assertEqual(fmt, libxmp.consts.XMP_FT_JPEG)

        xfptr = exempi.files_open_new(filename, XMP_OPEN_READ)
        xmp = exempi.files_get_new_xmp(xfptr)
        exempi.files_free(xfptr)

        with tempfile.NamedTemporaryFile(suffix=".jpg") as tfile:
            shutil.copyfile(filename, tfile.name)

            xfptr = exempi.files_open_new(tfile.name, XMP_OPEN_FORUPDATE)

            exempi.set_property(xmp, NS_PHOTOSHOP, "ICCProfile", "foo", 0)
            self.assertTrue(exempi.files_can_put_xmp(xfptr, xmp))
            exempi.files_put_xmp(xfptr, xmp)
            exempi.free(xmp)
            exempi.files_close(xfptr, XMP_CLOSE_SAFEUPDATE)
            exempi.files_free(xfptr)

            xfptr = exempi.files_open_new(tfile.name, XMP_OPEN_READ)
            xmp = exempi.files_get_new_xmp(xfptr)
            the_prop, _ = exempi.get_property(xmp, NS_PHOTOSHOP, "ICCProfile")
            self.assertEqual("foo", the_prop)

            exempi.free(xmp)
            exempi.files_close(xfptr, XMP_CLOSE_NOOPTION)
            exempi.files_free(xfptr)
    def test_bad_formats(self):
        """Verify check_file_format on PDF, Adobe Illustrator, XMP."""
        # Issue 26
        filename = pkg_resources.resource_filename(__name__,
                                                   "samples/BlueSquare.pdf")
        xfptr = exempi.files_open_new(filename, XMP_OPEN_READ)
        fmt = exempi.files_check_file_format(filename)
        self.assertEqual(fmt, libxmp.consts.XMP_FT_PDF)
        exempi.files_free(xfptr)

        filename = pkg_resources.resource_filename(__name__,
                                                   "samples/BlueSquare.ai")
        xfptr = exempi.files_open_new(filename, XMP_OPEN_READ)
        fmt = exempi.files_check_file_format(filename)
        self.assertEqual(fmt, libxmp.consts.XMP_FT_ILLUSTRATOR)
        exempi.files_free(xfptr)

        filename = pkg_resources.resource_filename(__name__,
                                                   "samples/BlueSquare.xmp")
        xfptr = exempi.files_open_new(filename, XMP_OPEN_READ)
        fmt = exempi.files_check_file_format(filename)
        self.assertEqual(fmt, libxmp.consts.XMP_FT_XML)
        exempi.files_free(xfptr)
    def test_bad_formats(self):
        """Verify check_file_format on PDF, Adobe Illustrator, XMP."""
        # Issue 26
        filename = pkg_resources.resource_filename(__name__,
                                                   "samples/BlueSquare.pdf")
        xfptr = exempi.files_open_new(filename, XMP_OPEN_READ)
        fmt = exempi.files_check_file_format(filename)
        self.assertEqual(fmt, libxmp.consts.XMP_FT_PDF)
        exempi.files_free(xfptr)

        filename = pkg_resources.resource_filename(__name__,
                                                   "samples/BlueSquare.ai")
        xfptr = exempi.files_open_new(filename, XMP_OPEN_READ)
        fmt = exempi.files_check_file_format(filename)
        self.assertEqual(fmt, libxmp.consts.XMP_FT_ILLUSTRATOR)
        exempi.files_free(xfptr)

        filename = pkg_resources.resource_filename(__name__,
                                                   "samples/BlueSquare.xmp")
        xfptr = exempi.files_open_new(filename, XMP_OPEN_READ)
        fmt = exempi.files_check_file_format(filename)
        self.assertEqual(fmt, libxmp.consts.XMP_FT_XML)
        exempi.files_free(xfptr)