diff --git a/src/libtomahawk/filemetadata/MusicScanner.cpp b/src/libtomahawk/filemetadata/MusicScanner.cpp index 797f08381..49bec0a7b 100644 --- a/src/libtomahawk/filemetadata/MusicScanner.cpp +++ b/src/libtomahawk/filemetadata/MusicScanner.cpp @@ -139,10 +139,6 @@ MusicScanner::MusicScanner( MusicScanner::ScanMode scanMode, const QStringList& , m_batchsize( bs ) , m_dirListerThreadController( 0 ) { - foreach ( const QString& extension, TomahawkUtils::supportedExtensions() ) - { - m_ext2mime.insert( extension, TomahawkUtils::extensionToMimetype( extension ) ); - } } @@ -347,22 +343,13 @@ MusicScanner::scanFile( const QFileInfo& fi ) QVariant -MusicScanner::readFile( const QFileInfo& fi ) +MusicScanner::readTags( const QFileInfo& fi ) { tLog( LOGVERBOSE ) << Q_FUNC_INFO << "Parsing tags for file:" << fi.absoluteFilePath(); const QString suffix = fi.suffix().toLower(); - - if ( !m_ext2mime.contains( suffix ) ) - { + if ( !TomahawkUtils::supportedExtensions().contains( suffix ) ) return QVariantMap(); // invalid extension - } - - if ( m_scanned ) - if ( m_scanned % 3 == 0 ) - SourceList::instance()->getLocal()->scanningProgress( m_scanned ); - if ( m_scanned % 100 == 0 ) - tDebug( LOGINFO ) << "Scan progress:" << m_scanned << fi.canonicalFilePath(); #ifdef COMPLEX_TAGLIB_FILENAME const wchar_t *encodedName = reinterpret_cast< const wchar_t * >( fi.canonicalFilePath().utf16() ); @@ -373,15 +360,10 @@ MusicScanner::readFile( const QFileInfo& fi ) TagLib::FileRef f( encodedName ); if ( f.isNull() || !f.tag() ) - { - m_skippedFiles << fi.canonicalFilePath(); - m_skipped++; return QVariantMap(); - } int bitrate = 0; int duration = 0; - Tag* tag = Tag::fromFile( f ); if ( f.audioProperties() ) { @@ -398,14 +380,9 @@ MusicScanner::readFile( const QFileInfo& fi ) track = tag->title().trimmed(); } if ( !tag || artist.isEmpty() || track.isEmpty() ) - { - // FIXME: do some clever filename guessing - m_skippedFiles << fi.canonicalFilePath(); - m_skipped++; return QVariantMap(); - } - QString mimetype = m_ext2mime.value( suffix ); + QString mimetype = TomahawkUtils::extensionToMimetype( suffix ); QString url( "file://%1" ); QVariantMap m; @@ -425,7 +402,31 @@ MusicScanner::readFile( const QFileInfo& fi ) m["discnumber"] = tag->discNumber(); m["hash"] = ""; // TODO - m_scanned++; + return m; +} + + +QVariant +MusicScanner::readFile( const QFileInfo& fi ) +{ + const QVariant m = readTags( fi ); + + if ( m_scanned ) + if ( m_scanned % 3 == 0 ) + SourceList::instance()->getLocal()->scanningProgress( m_scanned ); + if ( m_scanned % 100 == 0 ) + tDebug( LOGINFO ) << "Scan progress:" << m_scanned << fi.canonicalFilePath(); + + if ( m.toMap().isEmpty() ) + { + m_skippedFiles << fi.canonicalFilePath(); + m_skipped++; + } + else + { + m_scanned++; + } + return m; } diff --git a/src/libtomahawk/filemetadata/MusicScanner.h b/src/libtomahawk/filemetadata/MusicScanner.h index 8e038f514..c0c9e5140 100644 --- a/src/libtomahawk/filemetadata/MusicScanner.h +++ b/src/libtomahawk/filemetadata/MusicScanner.h @@ -102,6 +102,8 @@ public: enum ScanMode { DirScan, FileScan }; enum ScanType { None, Full, Normal, File }; + static QVariant readTags( const QFileInfo& fi ); + MusicScanner( MusicScanner::ScanMode scanMode, const QStringList& paths, quint32 bs = 0 ); ~MusicScanner(); @@ -129,7 +131,6 @@ private: MusicScanner::ScanMode m_scanMode; QStringList m_paths; - QMap<QString, QString> m_ext2mime; // eg: mp3 -> audio/mpeg unsigned int m_scanned; unsigned int m_skipped;