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:
@@ -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 )
|
||||||
{
|
{
|
||||||
|
@@ -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 );
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
|
@@ -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;
|
||||||
};
|
};
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user