/* SPDX-FileCopyrightText: 2007 Aurélien Gâteau SPDX-FileCopyrightText: 2022 Fushan Wen SPDX-License-Identifier: GPL-2.0-or-later */ #include "mediametadatafinder.h" #include #include #include "config-KExiv2.h" #if HAVE_KExiv2 #include #endif MediaMetadataFinder::MediaMetadataFinder(const QString &path, QObject *parent) : QObject(parent) , m_path(path) { } void MediaMetadataFinder::run() { MediaMetadata metadata; const QImageReader reader(m_path); metadata.resolution = reader.size(); #if HAVE_KExiv2 KExiv2Iface::KExiv2 exivImage(m_path); // Extract title from XPTitle { const QByteArray titleByte = exivImage.getExifTagData("Exif.Image.XPTitle"); metadata.title = QString::fromUtf8(titleByte).chopped(std::min(titleByte.size(), 1)); } // Use documentName as title if (metadata.title.isEmpty()) { const QByteArray titleByte = exivImage.getExifTagData("Exif.Image.DocumentName"); metadata.title = QString::fromUtf8(titleByte).chopped(std::min(titleByte.size(), 1)); } // Use description as title if (metadata.title.isEmpty()) { const QByteArray titleByte = exivImage.getExifTagData("Exif.Image.ImageDescription"); metadata.title = QString::fromUtf8(titleByte).chopped(std::min(titleByte.size(), 1)); } // Extract author from artist { const QByteArray authorByte = exivImage.getExifTagData("Exif.Image.Artist"); metadata.author = QString::fromUtf8(authorByte).chopped(std::min(authorByte.size(), 1)); } // Extract author from XPAuthor if (metadata.author.isEmpty()) { const QByteArray authorByte = exivImage.getExifTagData("Exif.Image.XPAuthor"); metadata.author = QString::fromUtf8(authorByte).chopped(std::min(authorByte.size(), 1)); } // Extract author from copyright if (metadata.author.isEmpty()) { const QByteArray authorByte = exivImage.getExifTagData("Exif.Image.Copyright"); metadata.author = QString::fromUtf8(authorByte).chopped(std::min(authorByte.size(), 1)); } #endif Q_EMIT metadataFound(m_path, metadata); }