aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libpyexiv2.cpp19
-rw-r--r--src/libpyexiv2.hpp3
-rw-r--r--src/libpyexiv2_wrapper.cpp2
3 files changed, 24 insertions, 0 deletions
diff --git a/src/libpyexiv2.cpp b/src/libpyexiv2.cpp
index 06c6d54..96b9ba1 100644
--- a/src/libpyexiv2.cpp
+++ b/src/libpyexiv2.cpp
@@ -285,6 +285,25 @@ namespace LibPyExiv2
throw Exiv2::Error(METADATA_NOT_READ);
}
+ boost::python::tuple Image::tagDetails(std::string key)
+ {
+ std::string keyFamily = key.substr(0, 4);
+ if (keyFamily == "Exif")
+ {
+ Exiv2::ExifKey exifKey = Exiv2::ExifKey(key);
+ std::string tagLabel = exifKey.tagLabel();
+ std::string tagDesc = std::string(Exiv2::ExifTags::tagDesc(exifKey.tag(), exifKey.ifdId()));
+ return boost::python::make_tuple(tagLabel, tagDesc);
+ }
+ else if (keyFamily == "Iptc")
+ {
+ Exiv2::IptcKey iptcKey = Exiv2::IptcKey(key);
+ std::string tagLabel = iptcKey.tagLabel();
+ std::string tagDesc = std::string(Exiv2::IptcDataSets::dataSetDesc(iptcKey.tag(), iptcKey.record()));
+ return boost::python::make_tuple(tagLabel, tagDesc);
+ }
+ }
+
boost::python::tuple Image::getThumbnailData()
{
if(_dataRead)
diff --git a/src/libpyexiv2.hpp b/src/libpyexiv2.hpp
index 736d1cf..4c867de 100644
--- a/src/libpyexiv2.hpp
+++ b/src/libpyexiv2.hpp
@@ -108,6 +108,9 @@ namespace LibPyExiv2
// than the highest existing one.
boost::python::tuple deleteIptcTag(std::string key, unsigned int index);
+ // Return a tuple containing the name of the tag and its description.
+ boost::python::tuple tagDetails(std::string key);
+
// Read and write access to the thumbnail embedded in the image.
// Return a tuple containing the format of the thumbnail ("TIFF" or
diff --git a/src/libpyexiv2_wrapper.cpp b/src/libpyexiv2_wrapper.cpp
index dc9152f..50519d4 100644
--- a/src/libpyexiv2_wrapper.cpp
+++ b/src/libpyexiv2_wrapper.cpp
@@ -54,6 +54,8 @@ BOOST_PYTHON_MODULE(libpyexiv2)
.def("_Image__setIptcTag", &Image::setIptcTag)
.def("_Image__deleteIptcTag", &Image::deleteIptcTag)
+ .def("tagDetails", &Image::tagDetails)
+
.def("getThumbnailData", &Image::getThumbnailData)
.def("setThumbnailData", &Image::setThumbnailData)
.def("deleteThumbnail", &Image::deleteThumbnail)