diff --git a/autotests/taglibextractortest.h b/autotests/taglibextractortest.h --- a/autotests/taglibextractortest.h +++ b/autotests/taglibextractortest.h @@ -23,6 +23,7 @@ #define TAGLIBEXTRACTORTEST_H #include +#include #include "properties.h" class TagLibExtractorTest : public QObject @@ -57,6 +58,7 @@ private: // Convenience function const QStringList propertyEnumNames(const QList& key) const; + QMimeDatabase mimeDb; }; #endif // TAGLIBEXTRACTORTEST_H diff --git a/autotests/taglibextractortest.cpp b/autotests/taglibextractortest.cpp --- a/autotests/taglibextractortest.cpp +++ b/autotests/taglibextractortest.cpp @@ -25,6 +25,7 @@ //TODO: use QTESTFINDDATA and remove this #include "indexerextractortestsconfig.h" #include "extractors/taglibextractor.h" +#include "mimeutils.h" #include #include @@ -104,15 +105,14 @@ void TagLibExtractorTest::testCommonData() { QFETCH(QString, fileType); - QFETCH(QString, mimeType); - - QString fileName = QStringLiteral("test.") + fileType; + QString fileName = testFilePath(QStringLiteral("test.") + fileType); + QString mimeType = MimeUtils::strictMimeType(fileName, mimeDb).name(); TagLibExtractor plugin{this}; - QCOMPARE(plugin.mimetypes().contains(mimeType), true); + QVERIFY(plugin.mimetypes().contains(mimeType)); - SimpleExtractionResult result(testFilePath(fileName), mimeType); + SimpleExtractionResult result(fileName, mimeType); plugin.extract(&result); QCOMPARE(result.types().size(), 1); @@ -130,78 +130,65 @@ void TagLibExtractorTest::testCommonData_data() { QTest::addColumn("fileType"); - QTest::addColumn("mimeType"); QTest::addRow("aiff") << QStringLiteral("aif") - << QStringLiteral("audio/x-aiff") ; QTest::addRow("ape") << QStringLiteral("ape") - << QStringLiteral("audio/x-ape") ; QTest::addRow("flac") << QStringLiteral("flac") - << QStringLiteral("audio/flac") ; QTest::addRow("m4a") << QStringLiteral("m4a") - << QStringLiteral("audio/mp4") ; QTest::addRow("mp3") << QStringLiteral("mp3") - << QStringLiteral("audio/mpeg3") ; QTest::addRow("mpc") << QStringLiteral("mpc") - << QStringLiteral("audio/x-musepack") ; QTest::addRow("ogg") << QStringLiteral("ogg") - << QStringLiteral("audio/ogg") ; QTest::addRow("opus") << QStringLiteral("opus") - << QStringLiteral("audio/opus") ; QTest::addRow("speex") << QStringLiteral("spx") - << QStringLiteral("audio/speex") ; QTest::addRow("wav") << QStringLiteral("wav") - << QStringLiteral("audio/wav") ; QTest::addRow("wavpack") << QStringLiteral("wv") - << QStringLiteral("audio/x-wavpack") ; QTest::addRow("wma") << QStringLiteral("wma") - << QStringLiteral("audio/x-ms-wma") ; } void TagLibExtractorTest::testVorbisComment() { QFETCH(QString, fileType); - QFETCH(QString, mimeType); - QString fileName = QStringLiteral("test.") + fileType; + QString fileName = testFilePath(QStringLiteral("test.") + fileType); + QString mimeType = MimeUtils::strictMimeType(fileName, mimeDb).name(); TagLibExtractor plugin{this}; - SimpleExtractionResult result(testFilePath(fileName), mimeType); + SimpleExtractionResult result(fileName, mimeType); plugin.extract(&result); QCOMPARE(result.properties().value(Property::AlbumArtist), QVariant(QStringLiteral("Album Artist"))); @@ -233,26 +220,21 @@ void TagLibExtractorTest::testVorbisComment_data() { QTest::addColumn("fileType"); - QTest::addColumn("mimeType"); QTest::addRow("flac") << QStringLiteral("flac") - << QStringLiteral("audio/flac") ; QTest::addRow("ogg") << QStringLiteral("ogg") - << QStringLiteral("audio/ogg") ; QTest::addRow("opus") << QStringLiteral("opus") - << QStringLiteral("audio/opus") ; QTest::addRow("speex") << QStringLiteral("spx") - << QStringLiteral("audio/speex") ; } @@ -283,12 +265,12 @@ void TagLibExtractorTest::testId3() { QFETCH(QString, fileType); - QFETCH(QString, mimeType); - QString fileName = QStringLiteral("test.") + fileType; + QString fileName = testFilePath(QStringLiteral("test.") + fileType); + QString mimeType = MimeUtils::strictMimeType(fileName, mimeDb).name(); TagLibExtractor plugin{this}; - SimpleExtractionResult result(testFilePath(fileName), mimeType); + SimpleExtractionResult result(fileName, mimeType); plugin.extract(&result); QCOMPARE(result.properties().value(Property::AlbumArtist), QVariant(QStringLiteral("Album Artist"))); @@ -311,33 +293,29 @@ void TagLibExtractorTest::testId3_data() { QTest::addColumn("fileType"); - QTest::addColumn("mimeType"); QTest::addRow("aiff") << QStringLiteral("aif") - << QStringLiteral("audio/x-aiff") ; QTest::addRow("mp3") << QStringLiteral("mp3") - << QStringLiteral("audio/mpeg") ; QTest::addRow("wav") << QStringLiteral("wav") - << QStringLiteral("audio/wav") ; } void TagLibExtractorTest::testApe() { QFETCH(QString, fileType); - QFETCH(QString, mimeType); - QString fileName = QStringLiteral("test.") + fileType; + QString fileName = testFilePath(QStringLiteral("test.") + fileType); + QString mimeType = MimeUtils::strictMimeType(fileName, mimeDb).name(); TagLibExtractor plugin{this}; - SimpleExtractionResult result(testFilePath(fileName), mimeType); + SimpleExtractionResult result(fileName, mimeType); plugin.extract(&result); QCOMPARE(result.properties().value(Property::AlbumArtist), QVariant(QStringLiteral("Album Artist"))); @@ -367,33 +345,29 @@ void TagLibExtractorTest::testApe_data() { QTest::addColumn("fileType"); - QTest::addColumn("mimeType"); QTest::addRow("ape") << QStringLiteral("ape") - << QStringLiteral("audio/x-ape") ; QTest::addRow("musepack") << QStringLiteral("mpc") - << QStringLiteral("audio/x-musepack") ; QTest::addRow("wavpack") << QStringLiteral("wv") - << QStringLiteral("audio/x-wavpack") ; } void TagLibExtractorTest::testMp4() { QFETCH(QString, fileType); - QFETCH(QString, mimeType); - QString fileName = QStringLiteral("test.") + fileType; + QString fileName = testFilePath(QStringLiteral("test.") + fileType); + QString mimeType = MimeUtils::strictMimeType(fileName, mimeDb).name(); TagLibExtractor plugin{this}; - SimpleExtractionResult resultMp4(testFilePath(fileName), mimeType); + SimpleExtractionResult resultMp4(fileName, mimeType); plugin.extract(&resultMp4); QCOMPARE(resultMp4.properties().value(Property::AlbumArtist), QVariant(QStringLiteral("Album Artist"))); @@ -408,23 +382,21 @@ void TagLibExtractorTest::testMp4_data() { QTest::addColumn("fileType"); - QTest::addColumn("mimeType"); QTest::addRow("mp4") << QStringLiteral("m4a") - << QStringLiteral("audio/mp4") ; } void TagLibExtractorTest::testAsf() { QFETCH(QString, fileType); - QFETCH(QString, mimeType); - QString fileName = QStringLiteral("test.") + fileType; + QString fileName = testFilePath(QStringLiteral("test.") + fileType); + QString mimeType = MimeUtils::strictMimeType(fileName, mimeDb).name(); TagLibExtractor plugin{this}; - SimpleExtractionResult result(testFilePath(fileName), mimeType); + SimpleExtractionResult result(fileName, mimeType); plugin.extract(&result); QCOMPARE(result.properties().value(Property::AlbumArtist), QVariant(QStringLiteral("Album Artist"))); @@ -441,11 +413,9 @@ void TagLibExtractorTest::testAsf_data() { QTest::addColumn("fileType"); - QTest::addColumn("mimeType"); QTest::addRow("asf") << QStringLiteral("wma") - << QStringLiteral("audio/x-ms-wma") ; } diff --git a/src/extractors/taglibextractor.cpp b/src/extractors/taglibextractor.cpp --- a/src/extractors/taglibextractor.cpp +++ b/src/extractors/taglibextractor.cpp @@ -64,12 +64,13 @@ QStringLiteral("audio/speex"), QStringLiteral("audio/wav"), QStringLiteral("audio/x-aiff"), + QStringLiteral("audio/x-aifc"), 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-speex+ogg"), QStringLiteral("audio/x-vorbis+ogg"), QStringLiteral("audio/x-wav"), QStringLiteral("audio/x-wavpack"), @@ -412,7 +413,7 @@ extractId3Tags(file.ID3v2Tag(), result); } } - } else if (mimeType == QLatin1String("audio/x-aiff")) { + } else if (mimeType == QLatin1String("audio/x-aiff") || mimeType == QLatin1String("audio/x-aifc")) { TagLib::RIFF::AIFF::File file(&stream, true); if (file.isValid()) { extractAudioProperties(&file, result); @@ -473,7 +474,7 @@ extractAudioProperties(&file, result); readGenericProperties(file.properties(), result); } - } else if (mimeType == QLatin1String("audio/speex") || mimeType == QLatin1String("audio/x-speex")) { + } else if (mimeType == QLatin1String("audio/speex") || mimeType == QLatin1String("audio/x-speex+ogg")) { TagLib::Ogg::Speex::File file(&stream, true); if (file.isValid()) { extractAudioProperties(&file, result); diff --git a/src/extractors/taglibextractor.json b/src/extractors/taglibextractor.json --- a/src/extractors/taglibextractor.json +++ b/src/extractors/taglibextractor.json @@ -11,12 +11,13 @@ "audio/speex" : { "Version" : "0.0" }, "audio/wav" : { "Version" : "0.0" }, "audio/x-aiff" : { "Version" : "0.0" }, + "audio/x-aifc" : { "Version" : "0.0" }, "audio/x-ape" : { "Version" : "0.0" }, "audio/x-mpeg" : { "Version" : "0.0" }, "audio/x-ms-wma" : { "Version" : "0.0" }, "audio/x-musepack" : { "Version" : "0.0" }, "audio/x-opus+ogg" : { "Version" : "0.0" }, - "audio/x-speex" : { "Version" : "0.0" }, + "audio/x-speex+ogg : { "Version" : "0.0" }, "audio/x-vorbis+ogg" : { "Version" : "0.0" }, "audio/x-wav" : { "Version" : "0.0" }, "audio/x-wavpack" : { "Version" : "0.0" }