1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-04-14 04:51:53 +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_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;
}

View File

@ -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;