diff -Nru kfilemetadata-kf5-5.54.0/autotests/exiv2extractortest.cpp kfilemetadata-kf5-5.55.0/autotests/exiv2extractortest.cpp --- kfilemetadata-kf5-5.54.0/autotests/exiv2extractortest.cpp 2019-01-06 20:21:52.000000000 +0000 +++ kfilemetadata-kf5-5.55.0/autotests/exiv2extractortest.cpp 2019-02-02 23:56:53.000000000 +0000 @@ -28,6 +28,7 @@ #include using namespace KFileMetaData; +using namespace KFileMetaData::Property; QString Exiv2ExtractorTest::testFilePath(const QString& fileName) const { @@ -44,15 +45,37 @@ QCOMPARE(result.types().size(), 1); QCOMPARE(result.types().constFirst(), Type::Image); - using namespace KFileMetaData::Property; - - QCOMPARE(result.properties().value(PhotoGpsLatitude).toDouble(), 41.411); - QCOMPARE(result.properties().value(PhotoGpsLongitude).toDouble(), 2.173); - QVERIFY(qAbs(result.properties().value(PhotoGpsAltitude).toDouble() - 12.2) < 0.0001); QCOMPARE(result.properties().value(Artist).toString(), QStringLiteral("Artist")); QCOMPARE(result.properties().value(Description).toString(), QStringLiteral("Description")); QCOMPARE(result.properties().value(Copyright).toString(), QStringLiteral("Copyright")); QCOMPARE(result.properties().value(Generator).toString(), QStringLiteral("digiKam-5.9.0")); } +void Exiv2ExtractorTest::testGPS() +{ + Exiv2Extractor plugin{this}; + + SimpleExtractionResult result(testFilePath("test.jpg"), "image/jpeg"); + plugin.extract(&result); + + QCOMPARE(result.properties().value(PhotoGpsLatitude).toDouble(), 41.411); + QCOMPARE(result.properties().value(PhotoGpsLongitude).toDouble(), 2.173); + QCOMPARE(result.properties().value(PhotoGpsAltitude).toDouble(), 12.2); + + SimpleExtractionResult resultEmpty(testFilePath("test_no_gps.jpg"), "image/jpeg"); + plugin.extract(&resultEmpty); + QVERIFY(!resultEmpty.properties().contains(PhotoGpsLatitude)); + QVERIFY(!resultEmpty.properties().contains(PhotoGpsLongitude)); + QVERIFY(!resultEmpty.properties().contains(PhotoGpsAltitude)); + + SimpleExtractionResult resultZero(testFilePath("test_zero_gps.jpg"), "image/jpeg"); + plugin.extract(&resultZero); + QVERIFY(resultZero.properties().contains(PhotoGpsLatitude)); + QVERIFY(resultZero.properties().contains(PhotoGpsLongitude)); + QVERIFY(resultZero.properties().contains(PhotoGpsAltitude)); + QCOMPARE(resultZero.properties().value(PhotoGpsLatitude).toDouble(), 0.0); + QCOMPARE(resultZero.properties().value(PhotoGpsLongitude).toDouble(), 0.0); + QCOMPARE(resultZero.properties().value(PhotoGpsAltitude).toDouble(), 0.0); +} + QTEST_GUILESS_MAIN(Exiv2ExtractorTest) diff -Nru kfilemetadata-kf5-5.54.0/autotests/exiv2extractortest.h kfilemetadata-kf5-5.55.0/autotests/exiv2extractortest.h --- kfilemetadata-kf5-5.54.0/autotests/exiv2extractortest.h 2019-01-06 20:21:52.000000000 +0000 +++ kfilemetadata-kf5-5.55.0/autotests/exiv2extractortest.h 2019-02-02 23:56:53.000000000 +0000 @@ -31,6 +31,7 @@ private Q_SLOTS: void test(); + void testGPS(); }; #endif // EXIV2EXTRACTORTEST_H Binary files /tmp/tmpxc5A7H/c9jARK0K2K/kfilemetadata-kf5-5.54.0/autotests/samplefiles/test.flac and /tmp/tmpxc5A7H/qbd9v8LbcP/kfilemetadata-kf5-5.55.0/autotests/samplefiles/test.flac differ Binary files /tmp/tmpxc5A7H/c9jARK0K2K/kfilemetadata-kf5-5.54.0/autotests/samplefiles/test_no_gps.jpg and /tmp/tmpxc5A7H/qbd9v8LbcP/kfilemetadata-kf5-5.55.0/autotests/samplefiles/test_no_gps.jpg differ Binary files /tmp/tmpxc5A7H/c9jARK0K2K/kfilemetadata-kf5-5.54.0/autotests/samplefiles/test.ogg and /tmp/tmpxc5A7H/qbd9v8LbcP/kfilemetadata-kf5-5.55.0/autotests/samplefiles/test.ogg differ Binary files /tmp/tmpxc5A7H/c9jARK0K2K/kfilemetadata-kf5-5.54.0/autotests/samplefiles/test.opus and /tmp/tmpxc5A7H/qbd9v8LbcP/kfilemetadata-kf5-5.55.0/autotests/samplefiles/test.opus differ Binary files /tmp/tmpxc5A7H/c9jARK0K2K/kfilemetadata-kf5-5.54.0/autotests/samplefiles/test.spx and /tmp/tmpxc5A7H/qbd9v8LbcP/kfilemetadata-kf5-5.55.0/autotests/samplefiles/test.spx differ Binary files /tmp/tmpxc5A7H/c9jARK0K2K/kfilemetadata-kf5-5.54.0/autotests/samplefiles/test_zero_gps.jpg and /tmp/tmpxc5A7H/qbd9v8LbcP/kfilemetadata-kf5-5.55.0/autotests/samplefiles/test_zero_gps.jpg differ diff -Nru kfilemetadata-kf5-5.54.0/autotests/taglibwritertest.cpp kfilemetadata-kf5-5.55.0/autotests/taglibwritertest.cpp --- kfilemetadata-kf5-5.54.0/autotests/taglibwritertest.cpp 2019-01-06 20:21:52.000000000 +0000 +++ kfilemetadata-kf5-5.55.0/autotests/taglibwritertest.cpp 2019-02-02 23:56:53.000000000 +0000 @@ -95,6 +95,30 @@ QTest::addColumn("stringSuffix"); + QTest::addRow("aiff") + << QStringLiteral("aif") + << QStringLiteral("audio/x-aiff") + << QString() + ; + + QTest::addRow("aiff_unicode") + << QStringLiteral("aif") + << QStringLiteral("audio/x-aiff") + << unicodeTestStringSuffix + ; + + QTest::addRow("ape") + << QStringLiteral("ape") + << QStringLiteral("audio/x-ape") + << QString() + ; + + QTest::addRow("ape_unicode") + << QStringLiteral("ape") + << QStringLiteral("audio/x-ape") + << unicodeTestStringSuffix + ; + QTest::addRow("flac") << QStringLiteral("flac") << QStringLiteral("audio/flac") @@ -166,6 +190,54 @@ << QStringLiteral("audio/opus") << unicodeTestStringSuffix ; + + QTest::addRow("speex") + << QStringLiteral("spx") + << QStringLiteral("audio/speex") + << QString() + ; + + QTest::addRow("speex_unicode") + << QStringLiteral("spx") + << QStringLiteral("audio/speex") + << unicodeTestStringSuffix + ; + + QTest::addRow("wav") + << QStringLiteral("wav") + << QStringLiteral("audio/wav") + << QString() + ; + + QTest::addRow("wav_unicode") + << QStringLiteral("wav") + << QStringLiteral("audio/wav") + << unicodeTestStringSuffix + ; + + QTest::addRow("wavpack") + << QStringLiteral("wv") + << QStringLiteral("audio/x-wavpack") + << QString() + ; + + QTest::addRow("wavpack_unicode") + << QStringLiteral("wv") + << QStringLiteral("audio/x-wavpack") + << unicodeTestStringSuffix + ; + + QTest::addRow("wma") + << QStringLiteral("wma") + << QStringLiteral("audio/x-ms-wma") + << QString() + ; + + QTest::addRow("wma_unicode") + << QStringLiteral("wma") + << QStringLiteral("audio/x-ms-wma") + << unicodeTestStringSuffix + ; } QTEST_GUILESS_MAIN(TagLibWriterTest) diff -Nru kfilemetadata-kf5-5.54.0/CMakeLists.txt kfilemetadata-kf5-5.55.0/CMakeLists.txt --- kfilemetadata-kf5-5.54.0/CMakeLists.txt 2019-01-06 20:21:52.000000000 +0000 +++ kfilemetadata-kf5-5.55.0/CMakeLists.txt 2019-02-02 23:56:53.000000000 +0000 @@ -1,15 +1,15 @@ cmake_minimum_required(VERSION 3.5) -set(KF5_VERSION "5.54.0") # handled by release scripts -set(KF5_DEP_VERSION "5.54.0") # handled by release scripts +set(KF5_VERSION "5.55.0") # handled by release scripts +set(KF5_DEP_VERSION "5.55.0") # handled by release scripts project(KFileMetaData VERSION ${KF5_VERSION}) include(FeatureSummary) -find_package(ECM 5.54.0 NO_MODULE) +find_package(ECM 5.55.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) -set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${ECM_MODULE_PATH}) include(KDEInstallDirs) include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) @@ -31,7 +31,7 @@ SOVERSION 3) # Dependencies -set(REQUIRED_QT_VERSION 5.9.0) +set(REQUIRED_QT_VERSION 5.10.0) find_package(Qt5 ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE COMPONENTS Xml) @@ -44,12 +44,12 @@ find_package(Poppler 0.12.1 COMPONENTS Qt5) set_package_properties(Poppler PROPERTIES DESCRIPTION "A PDF rendering library" - URL "http://poppler.freedesktop.org" TYPE OPTIONAL + URL "https://poppler.freedesktop.org/" TYPE OPTIONAL PURPOSE "Support for PDF files") find_package(Taglib 1.11.1) set_package_properties(Taglib PROPERTIES DESCRIPTION "Id3 tag reader" - URL "http://developer.kde.org/~wheeler/taglib.html" TYPE OPTIONAL + URL "https://taglib.org/" TYPE OPTIONAL PURPOSE "Support for music metadata") find_package(LibExiv2 0.21) @@ -61,7 +61,7 @@ find_package(FFmpeg 57.40 COMPONENTS AVFORMAT) find_package(FFmpeg 55.27 COMPONENTS AVUTIL) set_package_properties(FFmpeg PROPERTIES DESCRIPTION "Video Tag reader" - URL "http://ffmpeg.org" TYPE OPTIONAL + URL "https://ffmpeg.org/" TYPE OPTIONAL PURPOSE "Support for video metadata") if (FFmpeg_AVFORMAT_FOUND) @@ -71,18 +71,18 @@ find_package(EPub) set_package_properties(EPub PROPERTIES DESCRIPTION "Ebook epub reader" - URL "http://sourceforge.net/projects/ebook-tools" TYPE OPTIONAL + URL "https://sourceforge.net/projects/ebook-tools/" TYPE OPTIONAL PURPOSE "Support for epub metadata") find_package(CatDoc) set_package_properties(CatDoc PROPERTIES DESCRIPTION "catdoc executable" - URL "http://www.wagner.pp.ru/~vitus/software/catdoc/" TYPE RUNTIME + URL "https://www.wagner.pp.ru/~vitus/software/catdoc/" TYPE RUNTIME PURPOSE "Extract text from office 98 files - RUNTIME dependency") if ( CMAKE_SYSTEM_NAME MATCHES "Linux" ) find_package(Xattr) set_package_properties(Xattr PROPERTIES DESCRIPTION "library libattr " - URL "http://savannah.nongnu.org/projects/attr" + URL "https://savannah.nongnu.org/projects/attr" TYPE REQUIRED PURPOSE "Extended attribute shared library") endif() diff -Nru kfilemetadata-kf5-5.54.0/debian/changelog kfilemetadata-kf5-5.55.0/debian/changelog --- kfilemetadata-kf5-5.54.0/debian/changelog 2019-01-13 12:34:40.000000000 +0000 +++ kfilemetadata-kf5-5.55.0/debian/changelog 2019-02-13 08:30:50.000000000 +0000 @@ -1,3 +1,9 @@ +kfilemetadata-kf5 (5.55.0-0ubuntu1) disco; urgency=medium + + * New upstream release (5.55.0) + + -- Rik Mills Wed, 13 Feb 2019 08:30:50 +0000 + kfilemetadata-kf5 (5.54.0-0ubuntu1) disco; urgency=medium * Add qttools5-dev for Qt5Help. diff -Nru kfilemetadata-kf5-5.54.0/debian/control kfilemetadata-kf5-5.55.0/debian/control --- kfilemetadata-kf5-5.54.0/debian/control 2019-01-13 12:34:40.000000000 +0000 +++ kfilemetadata-kf5-5.55.0/debian/control 2019-02-13 08:30:50.000000000 +0000 @@ -7,7 +7,7 @@ cmake (>= 3.0~), debhelper (>= 11~), doxygen, - extra-cmake-modules (>= 5.54.0~), + extra-cmake-modules (>= 5.55.0~), graphviz, libattr1-dev, libavcodec-dev, @@ -16,8 +16,8 @@ libavutil-dev, libepub-dev, libexiv2-dev (>= 0.21), - libkf5archive-dev (>= 5.54.0~), - libkf5i18n-dev (>= 5.54.0~), + libkf5archive-dev (>= 5.55.0~), + libkf5i18n-dev (>= 5.55.0~), libpoppler-qt5-dev (>= 0.12.1), libpostproc-dev, libqt5sql5-sqlite:native, diff -Nru kfilemetadata-kf5-5.54.0/po/fr/kfilemetadata5.po kfilemetadata-kf5-5.55.0/po/fr/kfilemetadata5.po --- kfilemetadata-kf5-5.54.0/po/fr/kfilemetadata5.po 2019-01-06 20:21:52.000000000 +0000 +++ kfilemetadata-kf5-5.55.0/po/fr/kfilemetadata5.po 2019-02-02 23:56:53.000000000 +0000 @@ -2,14 +2,14 @@ # This file is distributed under the same license as the PACKAGE package. # Vincent PINON , 2014, 2016, 2017. # Sebastien Renard , 2014, 2015. -# Simon Depiets , 2017, 2018. +# Simon Depiets , 2017, 2018, 2019. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2018-11-17 03:48+0100\n" -"PO-Revision-Date: 2018-09-21 15:06+0800\n" +"PO-Revision-Date: 2019-01-22 12:22+0800\n" "Last-Translator: Simon Depiets \n" "Language-Team: French \n" "Language: fr\n" @@ -467,9 +467,7 @@ msgstr "Modèle de création" #: src/propertyinfo.cpp:517 -#, fuzzy, kde-format -#| msgctxt "@label the URL a file was originally downloded from" -#| msgid "Downloaded From" +#, kde-format msgctxt "@label the URL a file was originally downloaded from" msgid "Downloaded From" msgstr "Téléchargé depuis" diff -Nru kfilemetadata-kf5-5.54.0/po/zh_CN/kfilemetadata5.po kfilemetadata-kf5-5.55.0/po/zh_CN/kfilemetadata5.po --- kfilemetadata-kf5-5.54.0/po/zh_CN/kfilemetadata5.po 2019-01-06 20:21:52.000000000 +0000 +++ kfilemetadata-kf5-5.55.0/po/zh_CN/kfilemetadata5.po 2019-02-02 23:56:53.000000000 +0000 @@ -10,7 +10,7 @@ "Project-Id-Version: kdeorg\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2018-11-17 03:48+0100\n" -"PO-Revision-Date: 2019-01-05 20:42\n" +"PO-Revision-Date: 2019-01-27 22:57\n" "Last-Translator: guoyunhe \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" diff -Nru kfilemetadata-kf5-5.54.0/src/extractors/CMakeLists.txt kfilemetadata-kf5-5.55.0/src/extractors/CMakeLists.txt --- kfilemetadata-kf5-5.54.0/src/extractors/CMakeLists.txt 2019-01-06 20:21:52.000000000 +0000 +++ kfilemetadata-kf5-5.55.0/src/extractors/CMakeLists.txt 2019-02-02 23:56:53.000000000 +0000 @@ -36,6 +36,9 @@ KF5::FileMetaData LibExiv2::LibExiv2 ) + if(${LibExiv2_VERSION} VERSION_GREATER_EQUAL 0.26) + target_compile_definitions(kfilemetadata_exiv2extractor PRIVATE "-DHAVE_WEBP_SUPPORT") + endif() set_target_properties(kfilemetadata_exiv2extractor PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/kf5/kfilemetadata") install( diff -Nru kfilemetadata-kf5-5.54.0/src/extractors/exiv2extractor.cpp kfilemetadata-kf5-5.55.0/src/extractors/exiv2extractor.cpp --- kfilemetadata-kf5-5.54.0/src/extractors/exiv2extractor.cpp 2019-01-06 20:21:52.000000000 +0000 +++ kfilemetadata-kf5-5.55.0/src/extractors/exiv2extractor.cpp 2019-02-02 23:56:53.000000000 +0000 @@ -19,6 +19,7 @@ #include "exiv2extractor.h" +#include #include using namespace KFileMetaData; @@ -32,11 +33,16 @@ namespace { static const QStringList supportedMimeTypes = { + QStringLiteral("image/bmp"), + QStringLiteral("image/gif"), QStringLiteral("image/jp2"), QStringLiteral("image/jpeg"), QStringLiteral("image/pgf"), QStringLiteral("image/png"), QStringLiteral("image/tiff"), +#ifdef HAVE_WEBP_SUPPORT + QStringLiteral("image/webp"), +#endif QStringLiteral("image/x-exv"), QStringLiteral("image/x-canon-cr2"), QStringLiteral("image/x-canon-crw"), @@ -48,6 +54,7 @@ QStringLiteral("image/x-pentax-pef"), QStringLiteral("image/x-photoshop"), QStringLiteral("image/x-samsung-srw"), + QStringLiteral("image/x-tga"), }; QString toString(const Exiv2::Value& value) @@ -210,15 +217,15 @@ if (!longRef.isEmpty() && longRef[0] == 'W') longitude *= -1; - if (latitude != 0.0) { + if (!std::isnan(latitude)) { result->add(Property::PhotoGpsLatitude, latitude); } - if (longitude != 0.0) { + if (!std::isnan(longitude)) { result->add(Property::PhotoGpsLongitude, longitude); } - if (altitude != 0.0) { + if (!std::isnan(altitude)) { result->add(Property::PhotoGpsAltitude, altitude); } } @@ -246,7 +253,7 @@ d = (*it).toRational(0).second; if (d == 0.0) { - return 0.0; + return std::numeric_limits::quiet_NaN(); } double deg = n / d; @@ -278,20 +285,22 @@ return deg; } - return 0.0; + return std::numeric_limits::quiet_NaN(); } double Exiv2Extractor::fetchGpsAltitude(const Exiv2::ExifData& data) { - double alt = 0.0; + double alt = std::numeric_limits::quiet_NaN(); Exiv2::ExifData::const_iterator it = data.findKey(Exiv2::ExifKey("Exif.GPSInfo.GPSAltitude")); if (it != data.end()) { - alt = it->value().toFloat(); + auto ratio = it->value().toRational(); it = data.findKey(Exiv2::ExifKey("Exif.GPSInfo.GPSAltitudeRef")); - if (it != data.end()) { + if ((ratio.second != 0) && (it != data.end())) { auto altRef = it->value().toLong(); if (altRef) { - alt = alt * -1; + alt = -1.0 * ratio.first / ratio.second; + } else { + alt = 1.0 * ratio.first / ratio.second; } } } diff -Nru kfilemetadata-kf5-5.54.0/src/extractors/taglibextractor.cpp kfilemetadata-kf5-5.55.0/src/extractors/taglibextractor.cpp --- kfilemetadata-kf5-5.54.0/src/extractors/taglibextractor.cpp 2019-01-06 20:21:52.000000000 +0000 +++ kfilemetadata-kf5-5.55.0/src/extractors/taglibextractor.cpp 2019-02-02 23:56:53.000000000 +0000 @@ -1076,7 +1076,7 @@ // TAG information (incomplete). // https://xiph.org/vorbis/doc/v-comment.html -// http://help.mp3tag.de/main_tags.html +// https://help.mp3tag.de/main_tags.html // http://id3.org/ // https://www.legroom.net/2009/05/09/ogg-vorbis-and-flac-comment-field-recommendations // https://kodi.wiki/view/Music_tagging#Tags_Kodi_reads diff -Nru kfilemetadata-kf5-5.54.0/src/writers/taglibwriter.cpp kfilemetadata-kf5-5.55.0/src/writers/taglibwriter.cpp --- kfilemetadata-kf5-5.54.0/src/writers/taglibwriter.cpp 2019-01-06 20:21:52.000000000 +0000 +++ kfilemetadata-kf5-5.55.0/src/writers/taglibwriter.cpp 2019-02-02 23:56:53.000000000 +0000 @@ -39,10 +39,18 @@ QStringLiteral("audio/mpeg3"), QStringLiteral("audio/ogg"), QStringLiteral("audio/opus"), + QStringLiteral("audio/speex"), + QStringLiteral("audio/wav"), + QStringLiteral("audio/x-aiff"), + QStringLiteral("audio/x-ape"), QStringLiteral("audio/x-mpeg"), + QStringLiteral("audio/x-ms-wma"), QStringLiteral("audio/x-musepack"), QStringLiteral("audio/x-opus+ogg"), + QStringLiteral("audio/x-speex"), QStringLiteral("audio/x-vorbis+ogg"), + QStringLiteral("audio/x-wav"), + QStringLiteral("audio/x-wavpack"), }; QStringList TagLibWriter::writeMimetypes() const