From 1d5bd200541783e359e2e43cd7ed1c7ee55f1985 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Thu, 14 Apr 2022 21:01:02 +0300 Subject: [PATCH] kio: extract duration metadata via FFmpeg Signed-off-by: Ivailo Monev --- kio/metadata/kfilemetadata_ffmpeg.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/kio/metadata/kfilemetadata_ffmpeg.cpp b/kio/metadata/kfilemetadata_ffmpeg.cpp index d38e8d6b..c58f3fb6 100644 --- a/kio/metadata/kfilemetadata_ffmpeg.cpp +++ b/kio/metadata/kfilemetadata_ffmpeg.cpp @@ -18,6 +18,8 @@ #include "kfilemetadata_ffmpeg.h" #include "kpluginfactory.h" +#include "kglobal.h" +#include "klocale.h" #include "kmimetype.h" #include "kdebug.h" @@ -43,6 +45,7 @@ KFileMetaDataFFmpegPlugin::~KFileMetaDataFFmpegPlugin() QStringList KFileMetaDataFFmpegPlugin::keys() const { static const QStringList result = QStringList() + << QString::fromLatin1("http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#duration") << QString::fromLatin1("http://www.semanticdesktop.org/ontologies/2009/02/19/nmm#musicAlbum") << QString::fromLatin1("http://www.semanticdesktop.org/ontologies/2007/05/10/nexif#artist") << QString::fromLatin1("http://www.semanticdesktop.org/ontologies/2007/01/19/nie#comment") @@ -98,6 +101,18 @@ QList KFileMetaDataFFmpegPlugin::metaData(const KUrl &url, co kWarning() << "Could not open" << urlpath; return result; } + if (ffmpegcontext->duration > 0) { + const QString ffmpegduration = KGlobal::locale()->formatTime( + QTime().addSecs((ffmpegcontext->duration / AV_TIME_BASE)), + true, true + ); + result.append( + KFileMetaInfoItem( + QString::fromLatin1("http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#duration"), + ffmpegduration + ) + ); + } AVDictionaryEntry *ffmpegentry = av_dict_get(ffmpegcontext->metadata, "album", NULL, 0); if (ffmpegentry) { result.append(