1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-07 06:36:55 +02:00

* Added static MusicScanner::readTags( QFileInfo ), returning a variant-map filled with a file's tags. Wrapped by the regular ::readFile( QFileInfo ).

This commit is contained in:
Christian Muehlhaeuser
2014-09-09 17:22:32 +02:00
parent 5fe25c386f
commit 1bd9d02ee2
2 changed files with 30 additions and 28 deletions

View File

@@ -139,10 +139,6 @@ MusicScanner::MusicScanner( MusicScanner::ScanMode scanMode, const QStringList&
, m_batchsize( bs ) , m_batchsize( bs )
, m_dirListerThreadController( 0 ) , 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 QVariant
MusicScanner::readFile( const QFileInfo& fi ) MusicScanner::readTags( const QFileInfo& fi )
{ {
tLog( LOGVERBOSE ) << Q_FUNC_INFO << "Parsing tags for file:" << fi.absoluteFilePath(); tLog( LOGVERBOSE ) << Q_FUNC_INFO << "Parsing tags for file:" << fi.absoluteFilePath();
const QString suffix = fi.suffix().toLower(); const QString suffix = fi.suffix().toLower();
if ( !TomahawkUtils::supportedExtensions().contains( suffix ) )
if ( !m_ext2mime.contains( suffix ) )
{
return QVariantMap(); // invalid extension 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 #ifdef COMPLEX_TAGLIB_FILENAME
const wchar_t *encodedName = reinterpret_cast< const wchar_t * >( fi.canonicalFilePath().utf16() ); 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 ); TagLib::FileRef f( encodedName );
if ( f.isNull() || !f.tag() ) if ( f.isNull() || !f.tag() )
{
m_skippedFiles << fi.canonicalFilePath();
m_skipped++;
return QVariantMap(); return QVariantMap();
}
int bitrate = 0; int bitrate = 0;
int duration = 0; int duration = 0;
Tag* tag = Tag::fromFile( f ); Tag* tag = Tag::fromFile( f );
if ( f.audioProperties() ) if ( f.audioProperties() )
{ {
@@ -398,14 +380,9 @@ MusicScanner::readFile( const QFileInfo& fi )
track = tag->title().trimmed(); track = tag->title().trimmed();
} }
if ( !tag || artist.isEmpty() || track.isEmpty() ) if ( !tag || artist.isEmpty() || track.isEmpty() )
{
// FIXME: do some clever filename guessing
m_skippedFiles << fi.canonicalFilePath();
m_skipped++;
return QVariantMap(); return QVariantMap();
}
QString mimetype = m_ext2mime.value( suffix ); QString mimetype = TomahawkUtils::extensionToMimetype( suffix );
QString url( "file://%1" ); QString url( "file://%1" );
QVariantMap m; QVariantMap m;
@@ -425,7 +402,31 @@ MusicScanner::readFile( const QFileInfo& fi )
m["discnumber"] = tag->discNumber(); m["discnumber"] = tag->discNumber();
m["hash"] = ""; // TODO 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; return m;
} }

View File

@@ -102,6 +102,8 @@ public:
enum ScanMode { DirScan, FileScan }; enum ScanMode { DirScan, FileScan };
enum ScanType { None, Full, Normal, File }; enum ScanType { None, Full, Normal, File };
static QVariant readTags( const QFileInfo& fi );
MusicScanner( MusicScanner::ScanMode scanMode, const QStringList& paths, quint32 bs = 0 ); MusicScanner( MusicScanner::ScanMode scanMode, const QStringList& paths, quint32 bs = 0 );
~MusicScanner(); ~MusicScanner();
@@ -129,7 +131,6 @@ private:
MusicScanner::ScanMode m_scanMode; MusicScanner::ScanMode m_scanMode;
QStringList m_paths; QStringList m_paths;
QMap<QString, QString> m_ext2mime; // eg: mp3 -> audio/mpeg
unsigned int m_scanned; unsigned int m_scanned;
unsigned int m_skipped; unsigned int m_skipped;