1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-01 03:40:16 +02:00

* Added extensionToMimetype() to TomahawkUtils. ScriptResolver results now either need a mimetype or an extension.

This commit is contained in:
Christian Muehlhaeuser
2011-03-16 04:22:27 +01:00
parent 1e8ad402bb
commit 0aca34a1c2
5 changed files with 48 additions and 24 deletions

View File

@@ -227,6 +227,26 @@ filesizeToString( unsigned int size )
} }
QString
extensionToMimetype( const QString& extension )
{
static QMap<QString, QString> s_ext2mime;
if ( s_ext2mime.isEmpty() )
{
s_ext2mime.insert( "mp3", "audio/mpeg" );
s_ext2mime.insert( "ogg", "application/ogg" );
s_ext2mime.insert( "flac", "audio/flac" );
s_ext2mime.insert( "mpc", "audio/x-musepack" );
s_ext2mime.insert( "wma", "audio/x-ms-wma" );
s_ext2mime.insert( "aac", "audio/mp4" );
s_ext2mime.insert( "m4a", "audio/mp4" );
s_ext2mime.insert( "mp4", "audio/mp4" );
}
return s_ext2mime.value( extension, "unknown" );
}
QPixmap QPixmap
createDragPixmap( int itemCount ) createDragPixmap( int itemCount )
{ {

View File

@@ -31,20 +31,20 @@ namespace TomahawkUtils
public: public:
explicit DNSResolver(); explicit DNSResolver();
~DNSResolver() {} ~DNSResolver() {}
void resolve( QString& host, QString type ); void resolve( QString& host, QString type );
signals: signals:
void result( QString& result ); void result( QString& result );
public slots: public slots:
void resultsReady(); void resultsReady();
private: private:
JDnsShared* m_dnsShared; JDnsShared* m_dnsShared;
JDnsSharedRequest* m_dnsSharedRequest; JDnsSharedRequest* m_dnsSharedRequest;
}; };
class DLLEXPORT Sleep : public QThread class DLLEXPORT Sleep : public QThread
{ {
public: public:
@@ -61,14 +61,15 @@ namespace TomahawkUtils
QThread::usleep( usecs ); QThread::usleep( usecs );
} }
}; };
DLLEXPORT QDir appConfigDir(); DLLEXPORT QDir appConfigDir();
DLLEXPORT QDir appDataDir(); DLLEXPORT QDir appDataDir();
DLLEXPORT QDir appLogDir(); DLLEXPORT QDir appLogDir();
DLLEXPORT QString timeToString( int seconds ); DLLEXPORT QString timeToString( int seconds );
DLLEXPORT QString ageToString( const QDateTime& time ); DLLEXPORT QString ageToString( const QDateTime& time );
DLLEXPORT QString filesizeToString( unsigned int size ); DLLEXPORT QString filesizeToString( unsigned int size );
DLLEXPORT QString extensionToMimetype( const QString& extension );
DLLEXPORT QPixmap createDragPixmap( int itemCount = 1 ); DLLEXPORT QPixmap createDragPixmap( int itemCount = 1 );

View File

@@ -24,7 +24,7 @@ DirLister::scanDir( QDir dir, int depth )
QFileInfoList dirs; QFileInfoList dirs;
const uint mtime = QFileInfo( dir.absolutePath() ).lastModified().toUTC().toTime_t(); const uint mtime = QFileInfo( dir.absolutePath() ).lastModified().toUTC().toTime_t();
m_newdirmtimes.insert( dir.absolutePath(), mtime ); m_newdirmtimes.insert( dir.absolutePath(), mtime );
if ( m_dirmtimes.contains( dir.absolutePath() ) && mtime == m_dirmtimes.value( dir.absolutePath() ) ) if ( m_dirmtimes.contains( dir.absolutePath() ) && mtime == m_dirmtimes.value( dir.absolutePath() ) )
{ {
// dont scan this dir, unchanged since last time. // dont scan this dir, unchanged since last time.
@@ -33,7 +33,7 @@ DirLister::scanDir( QDir dir, int depth )
{ {
if ( m_dirmtimes.contains( dir.absolutePath() ) ) if ( m_dirmtimes.contains( dir.absolutePath() ) )
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( new DatabaseCommand_DeleteFiles( dir, SourceList::instance()->getLocal() ) ) ); Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( new DatabaseCommand_DeleteFiles( dir, SourceList::instance()->getLocal() ) ) );
dir.setFilter( QDir::Files | QDir::Readable | QDir::NoDotAndDotDot ); dir.setFilter( QDir::Files | QDir::Readable | QDir::NoDotAndDotDot );
dir.setSorting( QDir::Name ); dir.setSorting( QDir::Name );
dirs = dir.entryInfoList(); dirs = dir.entryInfoList();
@@ -44,7 +44,7 @@ DirLister::scanDir( QDir dir, int depth )
} }
dir.setFilter( QDir::Dirs | QDir::Readable | QDir::NoDotAndDotDot ); dir.setFilter( QDir::Dirs | QDir::Readable | QDir::NoDotAndDotDot );
dirs = dir.entryInfoList(); dirs = dir.entryInfoList();
foreach( const QFileInfo& di, dirs ) foreach( const QFileInfo& di, dirs )
{ {
scanDir( di.absoluteFilePath(), depth + 1 ); scanDir( di.absoluteFilePath(), depth + 1 );
@@ -59,19 +59,14 @@ MusicScanner::MusicScanner( const QString& dir, quint32 bs )
, m_dirLister( 0 ) , m_dirLister( 0 )
, m_dirListerThreadController( 0 ) , m_dirListerThreadController( 0 )
{ {
m_ext2mime.insert( "mp3", "audio/mpeg" ); m_ext2mime.insert( "mp3", TomahawkUtils::extensionToMimetype( "mp3" ) );
#ifndef NO_OGG #ifndef NO_OGG
m_ext2mime.insert( "ogg", "application/ogg" ); m_ext2mime.insert( "ogg", TomahawkUtils::extensionToMimetype( "ogg" ) );
#endif #endif
#ifndef NO_FLAC #ifndef NO_FLAC
m_ext2mime.insert( "flac", "audio/flac" ); m_ext2mime.insert( "flac", TomahawkUtils::extensionToMimetype( "flac" ) );
#endif #endif
// m_ext2mime.insert( "aac", "audio/mp4" );
// m_ext2mime.insert( "m4a", "audio/mp4" );
// m_ext2mime.insert( "mp4", "audio/mp4" );
} }
@@ -82,13 +77,13 @@ MusicScanner::~MusicScanner()
if( m_dirListerThreadController ) if( m_dirListerThreadController )
{ {
m_dirListerThreadController->quit(); m_dirListerThreadController->quit();
while( !m_dirListerThreadController->isFinished() ) while( !m_dirListerThreadController->isFinished() )
{ {
QCoreApplication::processEvents( QEventLoop::AllEvents, 200 ); QCoreApplication::processEvents( QEventLoop::AllEvents, 200 );
TomahawkUtils::Sleep::msleep( 100 ); TomahawkUtils::Sleep::msleep( 100 );
} }
if( m_dirLister ) if( m_dirLister )
{ {
delete m_dirLister; delete m_dirLister;

View File

@@ -74,7 +74,7 @@ private slots:
private: private:
QString m_dir; QString m_dir;
QMap<QString,QString> m_ext2mime; // eg: mp3 -> audio/mpeg 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;
@@ -82,10 +82,10 @@ private:
QMap<QString, unsigned int> m_dirmtimes; QMap<QString, unsigned int> m_dirmtimes;
QMap<QString, unsigned int> m_newdirmtimes; QMap<QString, unsigned int> m_newdirmtimes;
QList<QVariant> m_scannedfiles; QList<QVariant> m_scannedfiles;
quint32 m_batchsize; quint32 m_batchsize;
DirLister* m_dirLister; DirLister* m_dirLister;
QThread* m_dirListerThreadController; QThread* m_dirListerThreadController;
}; };

View File

@@ -7,6 +7,7 @@
#include "pipeline.h" #include "pipeline.h"
#include "sourcelist.h" #include "sourcelist.h"
#include "functimeout.h" #include "functimeout.h"
#include "utils/tomahawkutils.h"
ScriptResolver::ScriptResolver( const QString& exe ) ScriptResolver::ScriptResolver( const QString& exe )
@@ -132,10 +133,17 @@ ScriptResolver::handleMsg( const QByteArray& msg )
rp->setBitrate( m.value( "bitrate" ).toUInt() ); rp->setBitrate( m.value( "bitrate" ).toUInt() );
rp->setUrl( m.value( "url" ).toString() ); rp->setUrl( m.value( "url" ).toString() );
rp->setSize( m.value( "size" ).toUInt() ); rp->setSize( m.value( "size" ).toUInt() );
rp->setMimetype( m.value( "mimetype" ).toString() );
rp->setScore( m.value( "score" ).toFloat() * ( (float)weight() / 100.0 ) ); rp->setScore( m.value( "score" ).toFloat() * ( (float)weight() / 100.0 ) );
rp->setRID( uuid() ); rp->setRID( uuid() );
rp->setFriendlySource( m_name ); rp->setFriendlySource( m_name );
rp->setMimetype( m.value( "mimetype" ).toString() );
if ( rp->mimetype().isEmpty() )
{
rp->setMimetype( TomahawkUtils::extensionToMimetype( m.value( "extension" ).toString() ) );
Q_ASSERT( !rp->mimetype().isEmpty() );
}
results << rp; results << rp;
} }