immich improvements
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
#include <QLocale>
|
||||
#include <QTime>
|
||||
#include <QFileInfo>
|
||||
#include <QFile>
|
||||
#include <QStringList>
|
||||
#include <QRegExp>
|
||||
#include <iostream>
|
||||
@@ -162,9 +163,47 @@ QString Overlay::getExifDate(std::string filename) {
|
||||
dateTime = exif_entry_get_value(exifEntry, buf, sizeof(buf));
|
||||
}
|
||||
exif_data_free(exifData);
|
||||
QString exifDateFormat = "yyyy:MM:dd hh:mm:ss";
|
||||
QDateTime exifDateTime = QDateTime::fromString(dateTime, exifDateFormat);
|
||||
return QLocale::system().toString(exifDateTime);
|
||||
}
|
||||
return dateTime;
|
||||
QString formatted = formatExifDateString(dateTime);
|
||||
if (!formatted.isEmpty())
|
||||
return formatted;
|
||||
|
||||
QString sidecar = readSidecarExifDate(QString::fromStdString(filename));
|
||||
if (!sidecar.isEmpty())
|
||||
return formatExifDateString(sidecar);
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
QString Overlay::readSidecarExifDate(const QString &filePath)
|
||||
{
|
||||
QString sidecarPath = filePath + ".exif";
|
||||
QFile file(sidecarPath);
|
||||
if (!file.exists())
|
||||
return "";
|
||||
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
|
||||
return "";
|
||||
QString contents = QString::fromUtf8(file.readAll()).trimmed();
|
||||
file.close();
|
||||
return contents;
|
||||
}
|
||||
|
||||
QString Overlay::formatExifDateString(const QString &raw)
|
||||
{
|
||||
QString trimmed = raw.trimmed();
|
||||
if (trimmed.isEmpty())
|
||||
return "";
|
||||
|
||||
QDateTime parsed = QDateTime::fromString(trimmed, Qt::ISODate);
|
||||
if (!parsed.isValid())
|
||||
parsed = QDateTime::fromString(trimmed, Qt::ISODateWithMs);
|
||||
if (!parsed.isValid())
|
||||
parsed = QDateTime::fromString(trimmed, "yyyy:MM:dd hh:mm:ss");
|
||||
if (!parsed.isValid())
|
||||
parsed = QDateTime::fromString(trimmed, "yyyy-MM-dd hh:mm:ss");
|
||||
|
||||
if (parsed.isValid())
|
||||
return QLocale::system().toString(parsed);
|
||||
|
||||
return trimmed;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user