Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kfilemetadata5 for openSUSE:Factory 
checked in at 2022-12-12 17:38:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kfilemetadata5 (Old)
 and      /work/SRC/openSUSE:Factory/.kfilemetadata5.new.1835 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kfilemetadata5"

Mon Dec 12 17:38:12 2022 rev:116 rq:1042122 version:5.101.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kfilemetadata5/kfilemetadata5.changes    
2022-11-15 13:19:23.212320914 +0100
+++ /work/SRC/openSUSE:Factory/.kfilemetadata5.new.1835/kfilemetadata5.changes  
2022-12-12 17:39:50.525223160 +0100
@@ -1,0 +2,13 @@
+Tue Dec  6 20:10:39 UTC 2022 - Christophe Marin <[email protected]>
+
+- Update to 5.101.0
+  * New feature release
+  * For more details please see:
+  * https://kde.org/announcements/frameworks/5/5.101.0
+- Changes since 5.100.0:
+  * FFmpegExtrator: Try stream metadata if no global metadata is available
+  * office2007extractor: Extract text document line count
+  * office2007extractor: Update docx to include more properties
+  * Add FictionBook2 extractor
+
+-------------------------------------------------------------------

Old:
----
  kfilemetadata-5.100.0.tar.xz
  kfilemetadata-5.100.0.tar.xz.sig

New:
----
  kfilemetadata-5.101.0.tar.xz
  kfilemetadata-5.101.0.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kfilemetadata5.spec ++++++
--- /var/tmp/diff_new_pack.aO0Vjm/_old  2022-12-12 17:39:51.133226227 +0100
+++ /var/tmp/diff_new_pack.aO0Vjm/_new  2022-12-12 17:39:51.137226247 +0100
@@ -16,7 +16,7 @@
 #
 
 
-%define _tar_path 5.100
+%define _tar_path 5.101
 # Full KF5 version (e.g. 5.33.0)
 %{!?_kf5_version: %global _kf5_version %{version}}
 # Last major and minor KF5 version (e.g. 5.33)
@@ -24,11 +24,10 @@
 %bcond_without ffmpeg
 %bcond_without released
 Name:           kfilemetadata5
-Version:        5.100.0
+Version:        5.101.0
 Release:        0
 Summary:        Library for extracting Metadata
 License:        GPL-2.0-or-later AND LGPL-2.1-or-later AND LGPL-3.0-only
-Group:          Development/Libraries/KDE
 URL:            https://www.kde.org
 Source:         kfilemetadata-%{version}.tar.xz
 %if %{with released}
@@ -61,7 +60,6 @@
 
 %package devel
 Summary:        Development package for kfilemetadata
-Group:          Development/Libraries/KDE
 Requires:       %{name} = %{version}
 Requires:       extra-cmake-modules >= %{_kf5_bugfix_version}
 Requires:       cmake(Qt5Core) >= 5.15.0


++++++ kfilemetadata-5.100.0.tar.xz -> kfilemetadata-5.101.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kfilemetadata-5.100.0/CMakeLists.txt 
new/kfilemetadata-5.101.0/CMakeLists.txt
--- old/kfilemetadata-5.100.0/CMakeLists.txt    2022-11-05 13:26:53.000000000 
+0100
+++ new/kfilemetadata-5.101.0/CMakeLists.txt    2022-12-03 10:46:22.000000000 
+0100
@@ -1,11 +1,11 @@
 cmake_minimum_required(VERSION 3.16)
 
-set(KF_VERSION "5.100.0") # handled by release scripts
-set(KF_DEP_VERSION "5.100.0") # handled by release scripts
+set(KF_VERSION "5.101.0") # handled by release scripts
+set(KF_DEP_VERSION "5.101.0") # handled by release scripts
 project(KFileMetaData VERSION ${KF_VERSION})
 
 include(FeatureSummary)
-find_package(ECM 5.100.0  NO_MODULE)
+find_package(ECM 5.101.0  NO_MODULE)
 set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake 
Modules." URL "https://commits.kde.org/extra-cmake-modules";)
 feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND 
FATAL_ON_MISSING_REQUIRED_PACKAGES)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kfilemetadata-5.100.0/autotests/CMakeLists.txt 
new/kfilemetadata-5.101.0/autotests/CMakeLists.txt
--- old/kfilemetadata-5.100.0/autotests/CMakeLists.txt  2022-11-05 
13:26:53.000000000 +0100
+++ new/kfilemetadata-5.101.0/autotests/CMakeLists.txt  2022-12-03 
10:46:22.000000000 +0100
@@ -101,6 +101,17 @@
 endif()
 
 #
+# FictionBook2
+#
+ecm_add_test(
+    fb2extractortest.cpp
+    ../src/extractors/fb2extractor.cpp
+    ../src/kfilemetadata_debug.cpp
+    TEST_NAME "fb2extractortest"
+    LINK_LIBRARIES Qt${QT_MAJOR_VERSION}::Test KF5::Archive KF5::FileMetaData
+)
+
+#
 # Property Info
 #
 add_executable(propertyinfotest_bin propertyinfotest.cpp)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kfilemetadata-5.100.0/autotests/extractorcoveragetest.cpp 
new/kfilemetadata-5.101.0/autotests/extractorcoveragetest.cpp
--- old/kfilemetadata-5.100.0/autotests/extractorcoveragetest.cpp       
2022-11-05 13:26:53.000000000 +0100
+++ new/kfilemetadata-5.101.0/autotests/extractorcoveragetest.cpp       
2022-12-03 10:46:22.000000000 +0100
@@ -42,6 +42,8 @@
             { "test.dot",                      "text/vnd.graphviz"},
             { "test.eps",                      "image/x-eps"},
             { "test.epub",                     "application/epub+zip"},
+            { "test.fb2",                      
"application/x-fictionbook+xml"},
+            { "test.fb2.zip",                  
"application/x-zip-compressed-fb2"},
             { "test.flac",                     "audio/flac"},
             { "test.heif",                     "image/heif"}, // alias for 
image/heic
             { "test.jpg",                      "image/jpeg"},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kfilemetadata-5.100.0/autotests/fb2extractortest.cpp 
new/kfilemetadata-5.101.0/autotests/fb2extractortest.cpp
--- old/kfilemetadata-5.100.0/autotests/fb2extractortest.cpp    1970-01-01 
01:00:00.000000000 +0100
+++ new/kfilemetadata-5.101.0/autotests/fb2extractortest.cpp    2022-12-03 
10:46:22.000000000 +0100
@@ -0,0 +1,116 @@
+/*
+    SPDX-FileCopyrightText: 2022 Kai Uwe Broulik <[email protected]>
+
+    SPDX-License-Identifier: LGPL-2.1-or-later
+*/
+
+#include "fb2extractortest.h"
+#include "extractors/fb2extractor.h"
+#include "indexerextractortestsconfig.h"
+#include "mimeutils.h"
+#include "simpleextractionresult.h"
+
+#include <QMimeDatabase>
+#include <QTest>
+
+using namespace KFileMetaData;
+
+QString Fb2ExtractorTest::testFilePath(const QString &fileName) const
+{
+    return QLatin1String(INDEXER_TESTS_SAMPLE_FILES_PATH) + QLatin1Char('/') + 
fileName;
+}
+
+void Fb2ExtractorTest::testNoExtraction_data()
+{
+    QTest::addColumn<QString>("fileName");
+
+    QTest::addRow("uncompressed") << QStringLiteral("test.fb2");
+    QTest::addRow("compressed") << QStringLiteral("test.fb2.zip");
+}
+
+void Fb2ExtractorTest::testNoExtraction()
+{
+    QFETCH(QString, fileName);
+
+    Fb2Extractor plugin{this};
+
+    const QString path = testFilePath(fileName);
+    QMimeDatabase mimeDb;
+    QString mimeType = MimeUtils::strictMimeType(path, mimeDb).name();
+    QVERIFY(plugin.mimetypes().contains(mimeType));
+
+    SimpleExtractionResult result(path, mimeType, 
ExtractionResult::ExtractNothing);
+    plugin.extract(&result);
+
+    QCOMPARE(result.types().size(), 1);
+    QCOMPARE(result.types().constFirst(), Type::Document);
+    QCOMPARE(result.properties().size(), 0);
+}
+
+void Fb2ExtractorTest::test_data()
+{
+    QTest::addColumn<QString>("fileName");
+
+    QTest::addRow("uncompressed") << QStringLiteral("test.fb2");
+    QTest::addRow("compressed") << QStringLiteral("test.fb2.zip");
+}
+
+void Fb2ExtractorTest::test()
+{
+    QFETCH(QString, fileName);
+
+    Fb2Extractor plugin{this};
+
+    const QString path = testFilePath(fileName);
+    QMimeDatabase mimeDb;
+    QString mimeType = MimeUtils::strictMimeType(path, mimeDb).name();
+    QVERIFY(plugin.mimetypes().contains(mimeType));
+
+    SimpleExtractionResult result(path, mimeType);
+    plugin.extract(&result);
+
+    QCOMPARE(result.types().size(), 1);
+    QCOMPARE(result.types().constFirst(), Type::Document);
+
+    QCOMPARE(result.text(), QStringLiteral("This is a sample PDF file for 
KFileMetaData. "));
+    QCOMPARE(result.properties().value(Property::Author), 
QVariant(QStringLiteral("Happy Man")));
+    QCOMPARE(result.properties().value(Property::Publisher), 
QVariant(QStringLiteral("Happy Publisher")));
+    QCOMPARE(result.properties().value(Property::Title), 
QVariant(QStringLiteral("The Big Brown Bear")));
+    QCOMPARE(result.properties().value(Property::Description), 
QVariant(QStringLiteral("Honey")));
+    QCOMPARE(result.properties().value(Property::Language), 
QVariant(QStringLiteral("en")));
+    QCOMPARE(result.properties().value(Property::Genre), 
QVariant(QStringLiteral("antique")));
+    QCOMPARE(result.properties().value(Property::Generator), 
QVariant(QStringLiteral("calibre 4.99.4")));
+
+    QDateTime dt(QDate(2014, 1, 1), QTime(0, 0, 0));
+    dt.setTimeSpec(Qt::UTC);
+    QCOMPARE(result.properties().value(Property::CreationDate), QVariant(dt));
+    QCOMPARE(result.properties().value(Property::ReleaseYear), QVariant(2014));
+
+    QCOMPARE(result.properties().size(), 9);
+}
+
+void Fb2ExtractorTest::testMetaDataOnly_data()
+{
+    QTest::addColumn<QString>("fileName");
+    QTest::addColumn<QString>("mimeType");
+
+    QTest::addRow("uncompressed") << QStringLiteral("test.fb2") << 
QStringLiteral("application/x-fictionbook+xml");
+    QTest::addRow("compressed") << QStringLiteral("test.fb2.zip") << 
QStringLiteral("application/x-zip-compressed-fb2");
+}
+
+void Fb2ExtractorTest::testMetaDataOnly()
+{
+    QFETCH(QString, fileName);
+    QFETCH(QString, mimeType);
+
+    Fb2Extractor plugin{this};
+
+    SimpleExtractionResult result(testFilePath(fileName), mimeType, 
ExtractionResult::ExtractMetaData);
+    plugin.extract(&result);
+
+    QVERIFY(!result.types().isEmpty());
+    QVERIFY(!result.properties().isEmpty());
+    QVERIFY(result.text().isEmpty());
+}
+
+QTEST_GUILESS_MAIN(Fb2ExtractorTest)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kfilemetadata-5.100.0/autotests/fb2extractortest.h 
new/kfilemetadata-5.101.0/autotests/fb2extractortest.h
--- old/kfilemetadata-5.100.0/autotests/fb2extractortest.h      1970-01-01 
01:00:00.000000000 +0100
+++ new/kfilemetadata-5.101.0/autotests/fb2extractortest.h      2022-12-03 
10:46:22.000000000 +0100
@@ -0,0 +1,29 @@
+/*
+    SPDX-FileCopyrightText: 2022 Kai Uwe Broulik <[email protected]>
+
+    SPDX-License-Identifier: LGPL-2.1-or-later
+*/
+
+#ifndef FB2EXTRACTORTEST_H
+#define FB2EXTRACTORTEST_H
+
+#include <QObject>
+
+class Fb2ExtractorTest : public QObject
+{
+    Q_OBJECT
+private:
+    QString testFilePath(const QString &fileName) const;
+
+private Q_SLOTS:
+    void testNoExtraction_data();
+    void testNoExtraction();
+
+    void test_data();
+    void test();
+
+    void testMetaDataOnly_data();
+    void testMetaDataOnly();
+};
+
+#endif // FB2EXTRACTORTEST_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kfilemetadata-5.100.0/autotests/ffmpegextractortest.cpp 
new/kfilemetadata-5.101.0/autotests/ffmpegextractortest.cpp
--- old/kfilemetadata-5.100.0/autotests/ffmpegextractortest.cpp 2022-11-05 
13:26:53.000000000 +0100
+++ new/kfilemetadata-5.101.0/autotests/ffmpegextractortest.cpp 2022-12-03 
10:46:22.000000000 +0100
@@ -109,7 +109,6 @@
     SimpleExtractionResult result(fileName, mimeType);
     plugin.extract(&result);
 
-    QEXPECT_FAIL("Vorbis Video", "Not yet supported", Abort);
     QCOMPARE(result.properties().value(Property::Title).toString(), 
QStringLiteral("Title"));
     QCOMPARE(result.properties().value(Property::Copyright).toString(), 
QStringLiteral("Copyright"));
     QCOMPARE(result.properties().value(Property::Author).toString(), 
QStringLiteral("Author"));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kfilemetadata-5.100.0/autotests/office2007extractortest.cpp 
new/kfilemetadata-5.101.0/autotests/office2007extractortest.cpp
--- old/kfilemetadata-5.100.0/autotests/office2007extractortest.cpp     
2022-11-05 13:26:53.000000000 +0100
+++ new/kfilemetadata-5.101.0/autotests/office2007extractortest.cpp     
2022-12-03 10:46:22.000000000 +0100
@@ -58,12 +58,15 @@
     QCOMPARE(result.properties().value(Property::Description), 
QVariant(QStringLiteral("KFileMetaData comment")));
     QCOMPARE(result.properties().value(Property::Language), 
QVariant(QStringLiteral("en-US")));
     
QVERIFY(result.properties().value(Property::Generator).toString().contains(QStringLiteral("LibreOffice")));
+    QCOMPARE(result.properties().value(Property::PageCount), QVariant(1));
+    QCOMPARE(result.properties().value(Property::WordCount), QVariant(4));
+    QCOMPARE(result.properties().value(Property::LineCount), QVariant(1));
 
     QDateTime dt(QDate(2014, 07, 01), QTime(17, 37, 40));
     dt.setTimeSpec(Qt::UTC);
     QCOMPARE(result.properties().value(Property::CreationDate), QVariant(dt));
 
-    QCOMPARE(result.properties().size(), 7);
+    QCOMPARE(result.properties().size(), 10);
     QCOMPARE(result.text(), QStringLiteral("Test file for KFileMetaData. "));
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kfilemetadata-5.100.0/autotests/samplefiles/test.fb2 
new/kfilemetadata-5.101.0/autotests/samplefiles/test.fb2
--- old/kfilemetadata-5.100.0/autotests/samplefiles/test.fb2    1970-01-01 
01:00:00.000000000 +0100
+++ new/kfilemetadata-5.101.0/autotests/samplefiles/test.fb2    2022-12-03 
10:46:22.000000000 +0100
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0"; 
xmlns:l="http://www.w3.org/1999/xlink";>
+<description>
+    <title-info>
+        <genre match="80">antique</genre>
+        
<author><first-name>Happy</first-name><last-name>Man</last-name></author>
+        <book-title>The Big Brown Bear</book-title>
+        <coverpage><image l:href="#img_0"/></coverpage>
+        <lang>en</lang>
+        <keywords>Baloo KFileMetaData</keywords>
+        <annotation><p>Honey</p></annotation>
+    </title-info>
+    <document-info>
+        
<author><first-name>Happy</first-name><last-name>Man</last-name></author>
+        <program-used>calibre 4.99.4</program-used>
+        <date>01.01.2014</date>
+        <id>c27999e8-05e8-434e-b235-f124bfd58022</id>
+        <version>1.0</version>
+    </document-info>
+    <publish-info>
+        <publisher>Happy Publisher</publisher>
+        <year>2014</year>
+    </publish-info>
+</description>
+<body>
+<section>
+<p>This is a sample PDF file for KFileMetaData.</p>
+<empty-line/>
+</section>
+</body>
+<binary id="img_0" 
content-type="image/jpeg">/9j/4AAQSkZJRgABAQEAlgCWAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
+Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCALeAjYBAREA/8QAGwAB
+AAMAAwEAAAAAAAAAAAAAAAMEBQECBgf/xAAtEAEAAgICAQMDAwQDAQEAAAAAAQIDBAUREgYT
+IRQiMUFRgTJhcZEVI0IWsf/aAAgBAQAAPwD7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACjyfM8dwuCufktzFq4rW8YvknqO+u/8A8hHx
+3qDieWtWuhv4NibRaaxjt33FfHuY/wAeVf8AcLuLYw5smbHjyVtfDaKZKx+azMRPU/xMT/Jl
+2cOC+KmXJWlst/bxxP8A6t1M9R/ET/pKAIcm1gw7GHBky0rmz+XtUmfm/Udz1/iEzH1PVfA7
+239Lq8tq5c8+URSuSO58e++v366n8fs54/1TwXLZva0OV1djJ4TeKUyR3NY/MxH6x/hzx3qf
+hOX2IwcdyWvs5ZrN4rjt33Efq75vUPEa+1n1c3IYKZtevlmpa39EePl8/t9sd/4aVbRasWrP
+cTHcSrX5LTpyVOOtsUjcvjnLXD3900j47/wtK2TkdPDlz4smzipfBijNli1oj28c99Wn9o+2
+3z/aWbl9X+nsGamHLy2tXJelLxSbfPjaO6z/ADH4aODktLZ2JwYNnHkzVi0zSs/MRFprM9f2
+tEx/mDY5HS1NrV1djZxYtjbtauvjvbq2WYjuYrH69R8ucPIaefd2NLDs477WtFZzYq27tji0
+d17j9O4hNObFGeMM5K+7NZvFO/max1Ez1+3zH+1Tk+Z47hsOPLyW5i1ceS/hSck9eVupnqP4
+iZ/hLocjp8pq12tDZxbOC0zEZMVotHcfmPj9f7JozYpzWwxkrOWtYtNIn7oie4iev2+J/wBO
+4AAAAAAAAAAAAAAzfUOHJsemuVw4aWvlyaeWlKVjubWmkxER/Ly/I8Fsb+fhYyYtyka/C56W
+tgy3xTXNMYfGszWYnvuszEfvDH29f1Fl0fc2v+U9z3MdvCtMtq3t9JiiYn2rRev/AGRfqY7i
+Ld9x+HqeUryufiOBnDi3MOz7lZ2qYskWvjj6fJ3E2+Inq81+Z+O+lb0LTkcGLdxbeHbnHWuK
+cebZjLScl+p8o8MtrTW0dR3NZ8Zmfj8SzvSNeaj1NjzbWvyGHWzaeX6imf3pimbzpNYta9ur
+W68vmla16/Hf6Q7ded1ef5bLq6vK7nnXZ8Y8smGaR4fZFLd2xXjvqK9RF47+e/lBxnHc1s79
+dTLHKU4y+7r3tNZ2MUTT2c3uR3e83ivlGPv5juep6+e1bd1OZ4j059TfNzFL30c1dm87OSbx
+aNnHGKI7n7be3NoiY67j8re1oc7l2cubhtffx4cf1X/H/V+fnivOt1398+UROT8eX69/o3fR
+GHkMOXdnYvufSzXF7dNnDlx9ZOp85j3clrT/AOe/xXuPjv5UvT3pXkMnBcdblN3PFNPLk2MO
+hOCtPDJ3eK+Vv6p+Ld9fHfcK3F49zkOH9J8dXid/X2OKrjybOfZ15xVxxXDalqVmfm02mYj4
++Ou5lveh+J5HjPTfGV3uQ272rpY6Tp58eOsYLREfEeNYt8fj5mXmea4Lk6zzv0Wru2rube3a
+1a3vauWs6URWepnrqcncR/eIj9IWtTV9QR6wrfNk3adb3dfHDknF9L4fFZtOSMcR/bx8/L/a
+f1DxW7/9PvcjrYN+cOTBp49i2tkvFsmKMuT3a0iJ/Pj499fPUz18z88cRxvI7XPac5/+Vx8P
+iybWXWpmzZKTFYnD7cZPnyn592a1t+n5/Zx6m9O8pynqnd3dXytgwaWrkpq5Kx7G9kx5Mtva
+vP7dT+Px3asz310ucToclvep+T5auxyPF62xXUvGC2DHHudY/urbyrMxMT9s9TDB3tD1JbLt
+58GLcraZvS+Txva84Prr2mtepi0/9UxMRExPj+P0dM3C81tYuO2IxbmfJo5tva05y4b0mk1j
+FbHTq9rXiLTW8R5T31brrp0zcTz9drb5HHrbWvHI21djfiuO9rxSZzzOPqlotPhE4a2is99R
++rvfQ5jXrr71tXltvZnjtrBhtX3MV6ROes1rb7rWjqnlMd/dMREf1dJOPpyulvau1taXJ59L
+V5ecuKKa2a0xitqWrM1re1r+PuT18z+Z/EJ9zX5PNsbm7j4ze19LkuQjJ7fjki1K1wRXzyY8
+Uxf77R8R3H4ibM/V0+a1tX6ra4/lsm/scZqYMuSL5YmPDPeMnl4zM9xWaTMR91o76n5mXrfR
+WTkNbSzavI4d3u+7m+ntlxXiK4vGtq/12tatZmZ68pmf0+Pw9aAAAAAAAAAAAAAAAACPPgw7
+OG2LPiplx267pesWievn8SkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//2Q==</binary>
+</FictionBook>
Binary files old/kfilemetadata-5.100.0/autotests/samplefiles/test.fb2.zip and 
new/kfilemetadata-5.101.0/autotests/samplefiles/test.fb2.zip differ
Binary files 
old/kfilemetadata-5.100.0/autotests/samplefiles/test_libreoffice.docx and 
new/kfilemetadata-5.101.0/autotests/samplefiles/test_libreoffice.docx differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kfilemetadata-5.100.0/po/ca/kfilemetadata5.po 
new/kfilemetadata-5.101.0/po/ca/kfilemetadata5.po
--- old/kfilemetadata-5.100.0/po/ca/kfilemetadata5.po   2022-11-05 
13:26:53.000000000 +0100
+++ new/kfilemetadata-5.101.0/po/ca/kfilemetadata5.po   2022-12-03 
10:46:22.000000000 +0100
@@ -10,7 +10,7 @@
 "Project-Id-Version: kfilemetadata\n"
 "Report-Msgid-Bugs-To: https://bugs.kde.org\n";
 "POT-Creation-Date: 2020-06-09 02:02+0200\n"
-"PO-Revision-Date: 2022-08-31 11:13+0200\n"
+"PO-Revision-Date: 2022-11-06 11:27+0100\n"
 "Last-Translator: Josep M. Ferrer <[email protected]>\n"
 "Language-Team: Catalan <[email protected]>\n"
 "Language: ca\n"
@@ -664,7 +664,7 @@
 #, kde-format
 msgctxt "@label"
 msgid "Lyrics"
-msgstr "Lletres"
+msgstr "Lletra"
 
 #: src/propertyinfo.cpp:442
 #, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kfilemetadata-5.100.0/po/ca@valencia/kfilemetadata5.po 
new/kfilemetadata-5.101.0/po/ca@valencia/kfilemetadata5.po
--- old/kfilemetadata-5.100.0/po/ca@valencia/kfilemetadata5.po  2022-11-05 
13:26:53.000000000 +0100
+++ new/kfilemetadata-5.101.0/po/ca@valencia/kfilemetadata5.po  2022-12-03 
10:46:22.000000000 +0100
@@ -10,7 +10,7 @@
 "Project-Id-Version: kfilemetadata\n"
 "Report-Msgid-Bugs-To: https://bugs.kde.org\n";
 "POT-Creation-Date: 2020-06-09 02:02+0200\n"
-"PO-Revision-Date: 2022-08-31 11:13+0200\n"
+"PO-Revision-Date: 2022-11-06 11:27+0100\n"
 "Last-Translator: Josep M. Ferrer <[email protected]>\n"
 "Language-Team: Catalan <[email protected]>\n"
 "Language: ca@valencia\n"
@@ -662,7 +662,7 @@
 #, kde-format
 msgctxt "@label"
 msgid "Lyrics"
-msgstr "Lletres"
+msgstr "Lletra"
 
 #: src/propertyinfo.cpp:442
 #, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kfilemetadata-5.100.0/po/ie/kfilemetadata5.po 
new/kfilemetadata-5.101.0/po/ie/kfilemetadata5.po
--- old/kfilemetadata-5.100.0/po/ie/kfilemetadata5.po   1970-01-01 
01:00:00.000000000 +0100
+++ new/kfilemetadata-5.101.0/po/ie/kfilemetadata5.po   2022-12-03 
10:46:22.000000000 +0100
@@ -0,0 +1,823 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR This file is copyright:
+# This file is distributed under the same license as the kfilemetadata package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: kfilemetadata\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n";
+"POT-Creation-Date: 2020-06-09 02:02+0200\n"
+"PO-Revision-Date: 2022-11-09 16:42+0700\n"
+"Last-Translator: OIS <[email protected]>\n"
+"Language-Team: Interlingue <[email protected]>\n"
+"Language: ie\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 1.8.12\n"
+
+#: src/formatstrings.cpp:64
+#, kde-format
+msgctxt "@label bitrate (per second)"
+msgid "%1/s"
+msgstr "%1/s"
+
+#: src/formatstrings.cpp:78
+#, kde-format
+msgctxt "Description of image orientation"
+msgid "Unchanged"
+msgstr "Ínalterat"
+
+#: src/formatstrings.cpp:79
+#, kde-format
+msgctxt "Description of image orientation"
+msgid "Horizontally flipped"
+msgstr "Reflectet horisontalmen"
+
+#: src/formatstrings.cpp:80
+#, kde-format
+msgctxt "Description of image orientation"
+msgid "180° rotated"
+msgstr "Rotat per 180°"
+
+#: src/formatstrings.cpp:81
+#, kde-format
+msgctxt "Description of image orientation"
+msgid "Vertically flipped"
+msgstr "Reflectet verticalmen"
+
+#: src/formatstrings.cpp:82
+#, kde-format
+msgctxt "Description of image orientation"
+msgid "Transposed"
+msgstr ""
+
+#: src/formatstrings.cpp:83
+#, kde-format
+msgctxt "Description of image orientation, counter clock-wise rotated"
+msgid "90° rotated CCW "
+msgstr "Rotat 90° a levul "
+
+#: src/formatstrings.cpp:84
+#, kde-format
+msgctxt "Description of image orientation"
+msgid "Transversed"
+msgstr ""
+
+#: src/formatstrings.cpp:85
+#, kde-format
+msgctxt "Description of image orientation, counter clock-wise rotated"
+msgid "270° rotated CCW"
+msgstr "Rotat 270° a levul"
+
+#: src/formatstrings.cpp:96
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "No flash"
+msgstr "Sin flash"
+
+#: src/formatstrings.cpp:97
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "Fired"
+msgstr "Flash tirat"
+
+#: src/formatstrings.cpp:98
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "Fired, return light not detected"
+msgstr ""
+
+#: src/formatstrings.cpp:99
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "Fired, return light detected"
+msgstr ""
+
+#: src/formatstrings.cpp:100
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "Yes, did not fire"
+msgstr "Yes, ne tirat"
+
+#: src/formatstrings.cpp:101
+#, fuzzy, kde-format
+msgctxt "Description of photo flash"
+msgid "Yes, compulsory"
+msgstr " (yes o no)"
+
+#: src/formatstrings.cpp:102
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "Yes, compulsory, return light not detected"
+msgstr ""
+
+#: src/formatstrings.cpp:103
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "Yes, compulsory, return light detected"
+msgstr ""
+
+#: src/formatstrings.cpp:104
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "No, compulsory"
+msgstr ""
+
+#: src/formatstrings.cpp:105
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "No, did not fire, return light not detected"
+msgstr ""
+
+#: src/formatstrings.cpp:106
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "No, auto"
+msgstr "No, automatic"
+
+#: src/formatstrings.cpp:107
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "Yes, auto"
+msgstr "Yes, automatic"
+
+#: src/formatstrings.cpp:108
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "Yes, auto, return light not detected"
+msgstr ""
+
+#: src/formatstrings.cpp:109
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "Yes, auto, return light detected"
+msgstr ""
+
+#: src/formatstrings.cpp:110
+#, fuzzy, kde-format
+msgctxt "Description of photo flash"
+msgid "No flash function"
+msgstr "function"
+
+#: src/formatstrings.cpp:111
+#, fuzzy, kde-format
+msgctxt "Description of photo flash"
+msgid "No, no flash function"
+msgstr "function"
+
+#: src/formatstrings.cpp:112
+#, fuzzy, kde-format
+msgctxt "Description of photo flash"
+msgid "Yes, red-eye reduction"
+msgstr "Reducter li rubi ocules"
+
+#: src/formatstrings.cpp:113
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "Yes, red-eye reduction, return light not detected"
+msgstr ""
+
+#: src/formatstrings.cpp:114
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "Yes, red-eye reduction, return light detected"
+msgstr ""
+
+#: src/formatstrings.cpp:115
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "Yes, compulsory, red-eye reduction"
+msgstr ""
+
+#: src/formatstrings.cpp:116
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "Yes, compulsory, red-eye reduction, return light not detected"
+msgstr ""
+
+#: src/formatstrings.cpp:117
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "Yes, compulsory, red-eye reduction, return light detected"
+msgstr ""
+
+#: src/formatstrings.cpp:118
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "No, red-eye reduction"
+msgstr "No, reduction del rubi ocules"
+
+#: src/formatstrings.cpp:119
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "No, auto, red-eye reduction"
+msgstr "No, automatic, reduction del rubi ocules"
+
+#: src/formatstrings.cpp:120
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "Yes, auto, red-eye reduction"
+msgstr ""
+
+#: src/formatstrings.cpp:121
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "Yes, auto, red-eye reduction, return light not detected"
+msgstr ""
+
+#: src/formatstrings.cpp:122
+#, kde-format
+msgctxt "Description of photo flash"
+msgid "Yes, auto, red-eye reduction, return light detected"
+msgstr ""
+
+#: src/formatstrings.cpp:127
+#, kde-format
+msgid "Unknown"
+msgstr "Ínconosset"
+
+#: src/formatstrings.cpp:134
+#, kde-format
+msgctxt "Symbol of degree, no space"
+msgid "%1°"
+msgstr "%1°"
+
+#: src/formatstrings.cpp:145
+#, kde-format
+msgctxt "Focal length given in mm"
+msgid "%1 mm"
+msgstr "%1 mm"
+
+#: src/formatstrings.cpp:150
+#, kde-format
+msgctxt "Symbol of frames per second, with space"
+msgid "%1 fps"
+msgstr "%1 cps"
+
+#: src/formatstrings.cpp:160
+#, kde-format
+msgctxt "Time period given in seconds as rational number, denominator is given"
+msgid "1/%1 s"
+msgstr "1/%1 s"
+
+#: src/formatstrings.cpp:163
+#, kde-format
+msgctxt "Time period given in seconds"
+msgid "%1 s"
+msgstr "%1 s"
+
+#: src/formatstrings.cpp:179
+#, kde-format
+msgctxt "Exposure bias/compensation in exposure value (EV)"
+msgid "%1 EV"
+msgstr ""
+
+#: src/formatstrings.cpp:193
+#, fuzzy, kde-format
+msgctxt ""
+"Exposure compensation given as integral with fraction, in exposure value (EV)"
+msgid "%1 %2/%3 EV"
+msgstr "%1 %2 (%3)"
+
+#: src/formatstrings.cpp:196
+#, fuzzy, kde-format
+msgctxt "Exposure compensation given as rational, in exposure value (EV)"
+msgid "%1/%2 EV"
+msgstr "%1 %2"
+
+#: src/formatstrings.cpp:201
+#, kde-format
+msgctxt "Aspect ratio, normalized to one"
+msgid "%1:1"
+msgstr "%1:1"
+
+#: src/formatstrings.cpp:206
+#, kde-format
+msgctxt "F number for photographs"
+msgid "f/%1"
+msgstr "f/%1"
+
+#: src/propertyinfo.cpp:49
+#, kde-format
+msgctxt "@label music album"
+msgid "Album"
+msgstr "Album"
+
+#: src/propertyinfo.cpp:55
+#, kde-format
+msgctxt "@label"
+msgid "Album Artist"
+msgstr "Artist del album"
+
+#: src/propertyinfo.cpp:61
+#, kde-format
+msgctxt "@label"
+msgid "Artist"
+msgstr "Artist"
+
+#: src/propertyinfo.cpp:67
+#, kde-format
+msgctxt "@label"
+msgid "Aspect Ratio"
+msgstr "Aspecte"
+
+#: src/propertyinfo.cpp:74
+#, kde-format
+msgctxt "@label"
+msgid "Author"
+msgstr "Autor"
+
+#: src/propertyinfo.cpp:80
+#, kde-format
+msgctxt "@label"
+msgid "Bitrate"
+msgstr "Bitrate"
+
+#: src/propertyinfo.cpp:87
+#, kde-format
+msgctxt "@label"
+msgid "Channels"
+msgstr "Canales"
+
+#: src/propertyinfo.cpp:93
+#, kde-format
+msgctxt "@label"
+msgid "Comment"
+msgstr "Comenta"
+
+#: src/propertyinfo.cpp:100
+#, kde-format
+msgctxt "@label"
+msgid "Description"
+msgstr "Descrition"
+
+#: src/propertyinfo.cpp:107
+#, kde-format
+msgctxt "@label"
+msgid "Composer"
+msgstr "Compositor"
+
+#: src/propertyinfo.cpp:113
+#, kde-format
+msgctxt "@label"
+msgid "Copyright"
+msgstr "Jure editorial"
+
+#: src/propertyinfo.cpp:120
+#, kde-format
+msgctxt "@label"
+msgid "Creation Date"
+msgstr "Date de creation"
+
+#: src/propertyinfo.cpp:127
+#, kde-format
+msgctxt "@label"
+msgid "Duration"
+msgstr "Duration"
+
+#: src/propertyinfo.cpp:139
+#, kde-format
+msgctxt "@label"
+msgid "Frame Rate"
+msgstr "Rapiditá de cadres"
+
+#: src/propertyinfo.cpp:146
+#, kde-format
+msgctxt "@label"
+msgid "Document Generated By"
+msgstr "Generator"
+
+#: src/propertyinfo.cpp:153
+#, kde-format
+msgctxt "@label music genre"
+msgid "Genre"
+msgstr "Genre"
+
+#: src/propertyinfo.cpp:159
+#, kde-format
+msgctxt "@label"
+msgid "Height"
+msgstr "Altore"
+
+#: src/propertyinfo.cpp:165
+#, fuzzy, kde-format
+msgctxt "@label EXIF"
+msgid "Image Date Time"
+msgstr "Li Date e posque li hora"
+
+#: src/propertyinfo.cpp:172
+#, kde-format
+msgctxt "@label EXIF"
+msgid "Manufacturer"
+msgstr "Fabricator"
+
+#: src/propertyinfo.cpp:179
+#, kde-format
+msgctxt "@label EXIF"
+msgid "Model"
+msgstr "Modelle"
+
+#: src/propertyinfo.cpp:186
+#, kde-format
+msgctxt "@label EXIF"
+msgid "Image Orientation"
+msgstr "Orientation de image"
+
+#: src/propertyinfo.cpp:193
+#, kde-format
+msgctxt "@label"
+msgid "Keywords"
+msgstr "Clav-paroles"
+
+#: src/propertyinfo.cpp:200
+#, kde-format
+msgctxt "@label"
+msgid "Language"
+msgstr "Lingue"
+
+#: src/propertyinfo.cpp:207
+#, kde-format
+msgctxt "@label number of lines"
+msgid "Line Count"
+msgstr "Númere de lineas"
+
+#: src/propertyinfo.cpp:213
+#, kde-format
+msgctxt "@label"
+msgid "Lyricist"
+msgstr "Autor del textu"
+
+#: src/propertyinfo.cpp:219
+#, kde-format
+msgctxt "@label"
+msgid "Page Count"
+msgstr "Númere de págines"
+
+#: src/propertyinfo.cpp:225
+#, kde-format
+msgctxt "@label EXIF"
+msgid "Aperture Value"
+msgstr "Valore de apertura"
+
+#: src/propertyinfo.cpp:232
+#, fuzzy, kde-format
+msgctxt "@label EXIF"
+msgid "Original Date Time"
+msgstr "Date de original"
+
+#: src/propertyinfo.cpp:239
+#, fuzzy, kde-format
+msgctxt "@label EXIF"
+msgid "Exposure Bias"
+msgstr "_Exposition:"
+
+#: src/propertyinfo.cpp:246
+#, kde-format
+msgctxt "@label EXIF"
+msgid "Exposure Time"
+msgstr "Exposition"
+
+#: src/propertyinfo.cpp:253
+#, kde-format
+msgctxt "@label EXIF"
+msgid "Flash"
+msgstr "Flash"
+
+#: src/propertyinfo.cpp:260
+#, kde-format
+msgctxt "@label EXIF"
+msgid "F Number"
+msgstr "Numeró F"
+
+#: src/propertyinfo.cpp:267
+#, kde-format
+msgctxt "@label EXIF"
+msgid "Focal Length"
+msgstr "Dist. focal"
+
+#: src/propertyinfo.cpp:274
+#, fuzzy, kde-format
+msgctxt "@label EXIF"
+msgid "Focal Length 35mm"
+msgstr "Dist. focal:"
+
+#: src/propertyinfo.cpp:281
+#, kde-format
+msgctxt "@label EXIF"
+msgid "GPS Latitude"
+msgstr "Latitúdine GPS"
+
+#: src/propertyinfo.cpp:288
+#, kde-format
+msgctxt "@label EXIF"
+msgid "GPS Longitude"
+msgstr "Longitúdine GPS"
+
+#: src/propertyinfo.cpp:295
+#, kde-format
+msgctxt "@label EXIF"
+msgid "GPS Altitude"
+msgstr "Altitúdine GPS"
+
+#: src/propertyinfo.cpp:302
+#, fuzzy, kde-format
+msgctxt "@label EXIF"
+msgid "ISO Speed Rating"
+msgstr "Velocitá ISO"
+
+#: src/propertyinfo.cpp:308
+#, kde-format
+msgctxt "@label EXIF"
+msgid "Metering Mode"
+msgstr "Mode de mesura"
+
+#: src/propertyinfo.cpp:314
+#, kde-format
+msgctxt "@label EXIF"
+msgid "X Dimension"
+msgstr "Dimension X"
+
+#: src/propertyinfo.cpp:320
+#, kde-format
+msgctxt "@label EXIF"
+msgid "Y Dimension"
+msgstr "Dimension Y"
+
+#: src/propertyinfo.cpp:326
+#, kde-format
+msgctxt "@label EXIF"
+msgid "Saturation"
+msgstr "Saturation"
+
+#: src/propertyinfo.cpp:332
+#, kde-format
+msgctxt "@label EXIF"
+msgid "Sharpness"
+msgstr ""
+
+#: src/propertyinfo.cpp:338
+#, kde-format
+msgctxt "@label EXIF"
+msgid "White Balance"
+msgstr "Balancie del blanc"
+
+#: src/propertyinfo.cpp:344
+#, kde-format
+msgctxt "@label"
+msgid "Publisher"
+msgstr "Publicator"
+
+#: src/propertyinfo.cpp:350
+#, kde-format
+msgctxt "@label"
+msgid "Label"
+msgstr "Label"
+
+#: src/propertyinfo.cpp:356
+#, kde-format
+msgctxt "@label"
+msgid "Release Year"
+msgstr "Annu de publication"
+
+#: src/propertyinfo.cpp:362
+#, fuzzy, kde-format
+msgctxt "@label"
+msgid "Sample Rate"
+msgstr "Percentage"
+
+#: src/propertyinfo.cpp:369
+#, kde-format
+msgctxt "@label"
+msgid "Subject"
+msgstr "Tema"
+
+#: src/propertyinfo.cpp:376
+#, kde-format
+msgctxt "@label"
+msgid "Title"
+msgstr "Titul"
+
+#: src/propertyinfo.cpp:382
+#, kde-format
+msgctxt "@label music track number"
+msgid "Track Number"
+msgstr "Nró del track"
+
+#: src/propertyinfo.cpp:388
+#, kde-format
+msgctxt "@label music disc number"
+msgid "Disc Number"
+msgstr "Nró de disco"
+
+#: src/propertyinfo.cpp:394
+#, kde-format
+msgctxt "@label"
+msgid "Location"
+msgstr "Localisation"
+
+#: src/propertyinfo.cpp:400
+#, kde-format
+msgctxt "@label"
+msgid "Performer"
+msgstr "Performant"
+
+#: src/propertyinfo.cpp:406
+#, kde-format
+msgctxt "@label"
+msgid "Ensemble"
+msgstr "Orchestre"
+
+#: src/propertyinfo.cpp:412
+#, kde-format
+msgctxt "@label"
+msgid "Arranger"
+msgstr "Arangeator"
+
+#: src/propertyinfo.cpp:418
+#, kde-format
+msgctxt "@label"
+msgid "Conductor"
+msgstr "Dirigente"
+
+#: src/propertyinfo.cpp:424
+#, kde-format
+msgctxt "@label"
+msgid "Compilation"
+msgstr "Compilation"
+
+#: src/propertyinfo.cpp:430
+#, kde-format
+msgctxt "@label"
+msgid "License"
+msgstr "Licentie"
+
+#: src/propertyinfo.cpp:436
+#, kde-format
+msgctxt "@label"
+msgid "Lyrics"
+msgstr "Textu"
+
+#: src/propertyinfo.cpp:442
+#, kde-format
+msgctxt "@label"
+msgid "Opus"
+msgstr "Opus"
+
+#: src/propertyinfo.cpp:448
+#, kde-format
+msgctxt "@label"
+msgid "Rating"
+msgstr "Evaluation"
+
+#: src/propertyinfo.cpp:454
+#, fuzzy, kde-format
+msgctxt "@label"
+msgid "Replay Gain Album Peak"
+msgstr "Gania de album"
+
+#: src/propertyinfo.cpp:461
+#, fuzzy, kde-format
+msgctxt "@label"
+msgid "Replay Gain Album Gain"
+msgstr "Gania de album"
+
+#: src/propertyinfo.cpp:468
+#, fuzzy, kde-format
+msgctxt "@label"
+msgid "Replay Gain Track Peak"
+msgstr "Gania de track"
+
+#: src/propertyinfo.cpp:475
+#, fuzzy, kde-format
+msgctxt "@label"
+msgid "Replay Gain Track Gain"
+msgstr "Gania de track"
+
+#: src/propertyinfo.cpp:482
+#, kde-format
+msgctxt "@label"
+msgid "Width"
+msgstr "Largore"
+
+#: src/propertyinfo.cpp:488
+#, kde-format
+msgctxt "@label number of words"
+msgid "Word Count"
+msgstr "Númere de paroles"
+
+#: src/propertyinfo.cpp:495
+#, kde-format
+msgctxt "@label number of translatable strings"
+msgid "Translatable Units"
+msgstr "Traductibil unités"
+
+#: src/propertyinfo.cpp:502
+#, kde-format
+msgctxt "@label number of translated strings"
+msgid "Translations"
+msgstr "Traductiones"
+
+#: src/propertyinfo.cpp:510
+#, kde-format
+msgctxt "@label number of fuzzy translated strings"
+msgid "Draft Translations"
+msgstr "Ínprecis traductiones"
+
+#: src/propertyinfo.cpp:517
+#, kde-format
+msgctxt "@label translation author"
+msgid "Author"
+msgstr "Autor"
+
+#: src/propertyinfo.cpp:524
+#, kde-format
+msgctxt "@label translations last update"
+msgid "Last Update"
+msgstr "Actualisat"
+
+#: src/propertyinfo.cpp:532
+#, kde-format
+msgctxt "@label date of template creation8"
+msgid "Template Creation"
+msgstr "Creation de modelle"
+
+#: src/propertyinfo.cpp:540
+#, kde-format
+msgctxt "@label the URL a file was originally downloaded from"
+msgid "Downloaded From"
+msgstr "Descargat de"
+
+#: src/propertyinfo.cpp:547
+#, kde-format
+msgctxt "@label the subject of an email this file was attached to"
+msgid "E-Mail Attachment Subject"
+msgstr "Tema del atachament"
+
+#: src/propertyinfo.cpp:554
+#, kde-format
+msgctxt "@label the sender of an email this file was attached to"
+msgid "E-Mail Attachment Sender"
+msgstr "Inviator del atachament"
+
+#: src/propertyinfo.cpp:561
+#, kde-format
+msgctxt "@label the message ID of an email this file was attached to"
+msgid "E-Mail Attachment Message ID"
+msgstr "ID de missage del atachament"
+
+#: src/typeinfo.cpp:34
+#, kde-format
+msgctxt "@label"
+msgid "Archive"
+msgstr "Archive"
+
+#: src/typeinfo.cpp:39
+#, kde-format
+msgctxt "@label"
+msgid "Audio"
+msgstr "Audio"
+
+#: src/typeinfo.cpp:44
+#, kde-format
+msgctxt "@label"
+msgid "Document"
+msgstr "Document"
+
+#: src/typeinfo.cpp:49
+#, kde-format
+msgctxt "@label"
+msgid "Image"
+msgstr "Image"
+
+#: src/typeinfo.cpp:54
+#, kde-format
+msgctxt "@label"
+msgid "Presentation"
+msgstr "Presentation"
+
+#: src/typeinfo.cpp:59
+#, kde-format
+msgctxt "@label"
+msgid "Spreadsheet"
+msgstr "Folie de calcules"
+
+#: src/typeinfo.cpp:64
+#, kde-format
+msgctxt "@label"
+msgid "Text"
+msgstr "Textu"
+
+#: src/typeinfo.cpp:69
+#, kde-format
+msgctxt "@label"
+msgid "Video"
+msgstr "Video"
+
+#: src/typeinfo.cpp:74
+#, kde-format
+msgctxt "@label"
+msgid "Folder"
+msgstr "Fólder"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kfilemetadata-5.100.0/po/zh_CN/kfilemetadata5.po 
new/kfilemetadata-5.101.0/po/zh_CN/kfilemetadata5.po
--- old/kfilemetadata-5.100.0/po/zh_CN/kfilemetadata5.po        2022-11-05 
13:26:53.000000000 +0100
+++ new/kfilemetadata-5.101.0/po/zh_CN/kfilemetadata5.po        2022-12-03 
10:46:22.000000000 +0100
@@ -3,7 +3,7 @@
 "Project-Id-Version: kdeorg\n"
 "Report-Msgid-Bugs-To: https://bugs.kde.org\n";
 "POT-Creation-Date: 2020-06-09 02:02+0200\n"
-"PO-Revision-Date: 2022-10-30 07:48\n"
+"PO-Revision-Date: 2022-12-01 06:52\n"
 "Last-Translator: \n"
 "Language-Team: Chinese Simplified\n"
 "Language: zh_CN\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kfilemetadata-5.100.0/src/extractors/CMakeLists.txt 
new/kfilemetadata-5.101.0/src/extractors/CMakeLists.txt
--- old/kfilemetadata-5.100.0/src/extractors/CMakeLists.txt     2022-11-05 
13:26:53.000000000 +0100
+++ new/kfilemetadata-5.101.0/src/extractors/CMakeLists.txt     2022-12-03 
10:46:22.000000000 +0100
@@ -266,3 +266,18 @@
 install(
 TARGETS kfilemetadata_pngextractor
 DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf${QT_MAJOR_VERSION}/kfilemetadata)
+
+#
+# FictionBook2
+#
+add_library(kfilemetadata_fb2extractor MODULE fb2extractor.cpp )
+target_link_libraries(kfilemetadata_fb2extractor
+    KF5::Archive
+    KF5::FileMetaData
+    Qt${QT_MAJOR_VERSION}::Core
+)
+
+set_target_properties(kfilemetadata_fb2extractor PROPERTIES 
LIBRARY_OUTPUT_DIRECTORY 
"${CMAKE_BINARY_DIR}/bin/kf${QT_MAJOR_VERSION}/kfilemetadata")
+install(
+TARGETS kfilemetadata_fb2extractor
+DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf${QT_MAJOR_VERSION}/kfilemetadata)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kfilemetadata-5.100.0/src/extractors/fb2extractor.cpp 
new/kfilemetadata-5.101.0/src/extractors/fb2extractor.cpp
--- old/kfilemetadata-5.100.0/src/extractors/fb2extractor.cpp   1970-01-01 
01:00:00.000000000 +0100
+++ new/kfilemetadata-5.101.0/src/extractors/fb2extractor.cpp   2022-12-03 
10:46:22.000000000 +0100
@@ -0,0 +1,218 @@
+/*
+    SPDX-FileCopyrightText: 2022 Kai Uwe Broulik <[email protected]>
+
+    SPDX-License-Identifier: LGPL-2.1-or-later
+*/
+
+#include "fb2extractor.h"
+#include "kfilemetadata_debug.h"
+
+#include <QDateTime>
+#include <QFile>
+#include <QXmlStreamReader>
+
+#include <KZip>
+
+#include <memory>
+
+using namespace KFileMetaData;
+
+Fb2Extractor::Fb2Extractor(QObject *parent)
+    : ExtractorPlugin(parent)
+{
+}
+
+namespace
+{
+static const QString regularMimeType()
+{
+    return QStringLiteral("application/x-fictionbook+xml");
+}
+
+static const QString compressedMimeType()
+{
+    return QStringLiteral("application/x-zip-compressed-fb2");
+}
+
+static const QStringList supportedMimeTypes = {regularMimeType(), 
compressedMimeType()};
+
+}
+
+QStringList Fb2Extractor::mimetypes() const
+{
+    return supportedMimeTypes;
+}
+
+void Fb2Extractor::extract(ExtractionResult *result)
+{
+    std::unique_ptr<QIODevice> device;
+    std::unique_ptr<KZip> zip;
+
+    if (result->inputMimetype() == regularMimeType()) {
+        device.reset(new QFile(result->inputUrl()));
+        if (!device->open(QIODevice::ReadOnly | QIODevice::Text)) {
+            return;
+        }
+
+    } else if (result->inputMimetype() == compressedMimeType()) {
+        zip.reset(new KZip(result->inputUrl()));
+        if (!zip->open(QIODevice::ReadOnly)) {
+            return;
+        }
+
+        const auto entries = zip->directory()->entries();
+        if (entries.count() != 1) {
+            return;
+        }
+
+        const QString entryPath = entries.first();
+        if (!entryPath.endsWith(QLatin1String(".fb2"))) {
+            return;
+        }
+
+        const auto *entry = zip->directory()->file(entryPath);
+        if (!entry) {
+            return;
+        }
+
+        device.reset(entry->createDevice());
+    }
+
+    result->addType(Type::Document);
+
+    QXmlStreamReader xml(device.get());
+
+    bool inFictionBook = false;
+    bool inDescription = false;
+    bool inTitleInfo = false;
+    bool inAuthor = false;
+    bool inDocumentInfo = false;
+    bool inPublishInfo = false;
+    bool inBody = false;
+
+    QString authorFirstName;
+    QString authorMiddleName;
+    QString authorLastName;
+    QString authorNickName;
+
+    while (!xml.atEnd() && !xml.hasError()) {
+        xml.readNext();
+
+        if (xml.name() == QLatin1String("FictionBook")) {
+            if (xml.isStartElement()) {
+                inFictionBook = true;
+            } else if (xml.isEndElement()) {
+                break;
+            }
+        } else if (xml.name() == QLatin1String("description")) {
+            if (xml.isStartElement()) {
+                inDescription = true;
+            } else if (xml.isEndElement()) {
+                inDescription = false;
+            }
+        } else if (xml.name() == QLatin1String("title-info")) {
+            if (xml.isStartElement()) {
+                inTitleInfo = true;
+            } else if (xml.isEndElement()) {
+                inTitleInfo = false;
+            }
+        } else if (xml.name() == QLatin1String("document-info")) {
+            if (xml.isStartElement()) {
+                inDocumentInfo = true;
+            } else if (xml.isEndElement()) {
+                inDocumentInfo = false;
+            }
+        } else if (xml.name() == QLatin1String("publish-info")) {
+            if (xml.isStartElement()) {
+                inPublishInfo = true;
+            } else if (xml.isEndElement()) {
+                inPublishInfo = false;
+            }
+        } else if (xml.name() == QLatin1String("body")) {
+            if (xml.isStartElement()) {
+                inBody = true;
+            } else if (xml.isEndElement()) {
+                inBody = false;
+            }
+        }
+
+        if (!inFictionBook) {
+            continue;
+        }
+
+        if (inDescription && result->inputFlags() & 
ExtractionResult::ExtractMetaData) {
+            if (inTitleInfo) {
+                if (xml.isStartElement()) {
+                    if (xml.name() == QLatin1String("author")) {
+                        inAuthor = true;
+                    } else if (inAuthor) {
+                        if (xml.name() == QLatin1String("first-name")) {
+                            authorFirstName = xml.readElementText();
+                        } else if (xml.name() == QLatin1String("middle-name")) 
{
+                            authorMiddleName = xml.readElementText();
+                        } else if (xml.name() == QLatin1String("last-name")) {
+                            authorLastName = xml.readElementText();
+                        } else if (xml.name() == QLatin1String("nickname")) {
+                            authorNickName = xml.readElementText();
+                        }
+                    } else if (xml.name() == QLatin1String("book-title")) {
+                        result->add(Property::Title, xml.readElementText());
+                    } else if (xml.name() == QLatin1String("annotation")) {
+                        result->add(Property::Description, 
xml.readElementText(QXmlStreamReader::IncludeChildElements).trimmed());
+                    } else if (xml.name() == QLatin1String("lang")) {
+                        result->add(Property::Language, xml.readElementText());
+                    } else if (xml.name() == QLatin1String("genre")) {
+                        result->add(Property::Genre, xml.readElementText());
+                    }
+                } else if (xml.isEndElement()) {
+                    inAuthor = false;
+
+                    QStringList nameParts = {authorFirstName, 
authorMiddleName, authorLastName};
+                    nameParts.removeAll(QString());
+
+                    if (!nameParts.isEmpty()) {
+                        result->add(Property::Author, 
nameParts.join(QLatin1Char(' ')));
+                    } else if (!authorNickName.isEmpty()) {
+                        result->add(Property::Author, authorNickName);
+                    }
+
+                    authorFirstName.clear();
+                    authorMiddleName.clear();
+                    authorLastName.clear();
+                    authorNickName.clear();
+                }
+            } else if (inDocumentInfo) {
+                if (xml.name() == QLatin1String("date")) {
+                    // Date can be "not exact" but date "value", if present, 
is an xs:date
+                    const auto dateValue = 
xml.attributes().value(QLatin1String("value"));
+                    QDateTime dt = QDateTime::fromString(dateValue.toString());
+
+                    if (!dt.isValid()) {
+                        dt = 
ExtractorPlugin::dateTimeFromString(xml.readElementText());
+                    }
+
+                    if (dt.isValid()) {
+                        result->add(Property::CreationDate, dt);
+                    }
+                } else if (xml.name() == QLatin1String("program-used")) {
+                    result->add(Property::Generator, xml.readElementText());
+                    // "Owner of the fb2 document copyrights"
+                } else if (xml.name() == QLatin1String("publisher")) {
+                    result->add(Property::Copyright, xml.readElementText());
+                }
+            } else if (inPublishInfo) {
+                if (xml.name() == QLatin1String("publisher")) {
+                    result->add(Property::Publisher, xml.readElementText());
+                } else if (xml.name() == QLatin1String("year")) {
+                    bool ok;
+                    const int releaseYear = xml.readElementText().toInt(&ok);
+                    if (ok) {
+                        result->add(Property::ReleaseYear, releaseYear);
+                    }
+                }
+            }
+        } else if (inBody && result->inputFlags() & 
ExtractionResult::ExtractPlainText && xml.isCharacters() && 
!xml.isWhitespace()) {
+            result->append(xml.text().toString());
+        }
+    }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kfilemetadata-5.100.0/src/extractors/fb2extractor.h 
new/kfilemetadata-5.101.0/src/extractors/fb2extractor.h
--- old/kfilemetadata-5.100.0/src/extractors/fb2extractor.h     1970-01-01 
01:00:00.000000000 +0100
+++ new/kfilemetadata-5.101.0/src/extractors/fb2extractor.h     2022-12-03 
10:46:22.000000000 +0100
@@ -0,0 +1,29 @@
+/*
+    SPDX-FileCopyrightText: 2022 Kai Uwe Broulik <[email protected]>
+
+    SPDX-License-Identifier: LGPL-2.1-or-later
+*/
+
+#ifndef FB2EXTRACTOR_H
+#define FB2EXTRACTOR_H
+
+#include "extractorplugin.h"
+
+namespace KFileMetaData
+{
+class Fb2Extractor : public ExtractorPlugin
+{
+    Q_OBJECT
+    Q_PLUGIN_METADATA(IID "org.kde.kf5.kfilemetadata.ExtractorPlugin" FILE 
"fb2extractor.json")
+    Q_INTERFACES(KFileMetaData::ExtractorPlugin)
+
+public:
+    explicit Fb2Extractor(QObject *parent = nullptr);
+
+    void extract(ExtractionResult *result) override;
+    QStringList mimetypes() const override;
+};
+
+}
+
+#endif // FB2EXTRACTOR_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kfilemetadata-5.100.0/src/extractors/fb2extractor.json 
new/kfilemetadata-5.101.0/src/extractors/fb2extractor.json
--- old/kfilemetadata-5.100.0/src/extractors/fb2extractor.json  1970-01-01 
01:00:00.000000000 +0100
+++ new/kfilemetadata-5.101.0/src/extractors/fb2extractor.json  2022-12-03 
10:46:22.000000000 +0100
@@ -0,0 +1,9 @@
+{
+    "Name" : "Fb2Extractor",
+    "Id" :   "org.kde.epubextractor",
+    "MimeTypes" : {
+        "application/x-fictionbook+xml" : { "Version" : "0.0" },
+        "application/x-zip-compressed-fb2" : { "Version" : "0.0" }
+    }
+}
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kfilemetadata-5.100.0/src/extractors/ffmpegextractor.cpp 
new/kfilemetadata-5.101.0/src/extractors/ffmpegextractor.cpp
--- old/kfilemetadata-5.100.0/src/extractors/ffmpegextractor.cpp        
2022-11-05 13:26:53.000000000 +0100
+++ new/kfilemetadata-5.101.0/src/extractors/ffmpegextractor.cpp        
2022-12-03 10:46:22.000000000 +0100
@@ -121,6 +121,12 @@
         }
 
         AVDictionary* dict = fmt_ctx->metadata;
+        // In Ogg, the internal comment metadata headers are attached to a 
single content stream.
+        // By convention, it's the first logical bitstream occuring.
+        if (!dict && fmt_ctx->nb_streams > 0) {
+            dict = fmt_ctx->streams[0]->metadata;
+        }
+
         AVDictionaryEntry* entry;
 
         entry = av_dict_get(dict, "title", nullptr, 0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kfilemetadata-5.100.0/src/extractors/office2007extractor.cpp 
new/kfilemetadata-5.101.0/src/extractors/office2007extractor.cpp
--- old/kfilemetadata-5.100.0/src/extractors/office2007extractor.cpp    
2022-11-05 13:26:53.000000000 +0100
+++ new/kfilemetadata-5.101.0/src/extractors/office2007extractor.cpp    
2022-12-03 10:46:22.000000000 +0100
@@ -140,7 +140,6 @@
 
         QDomElement docElem = appDoc.documentElement();
 
-        // According to the ontologies only Documents can have a wordCount and 
pageCount
         const QString mimeType = result->inputMimetype();
         if (mimeType == 
QLatin1String("application/vnd.openxmlformats-officedocument.wordprocessingml.document"))
 {
             QDomElement elem = 
docElem.firstChildElement(QStringLiteral("Pages"));
@@ -160,6 +159,15 @@
                     result->add(Property::WordCount, wordCount);
                 }
             }
+
+            elem = docElem.firstChildElement(QStringLiteral("Lines"));
+            if (!elem.isNull()) {
+                bool ok = false;
+                int lineCount = elem.text().toInt(&ok);
+                if (ok) {
+                    result->add(Property::LineCount, lineCount);
+                }
+            }
         }
 
         QDomElement elem = 
docElem.firstChildElement(QStringLiteral("Application"));

Reply via email to