1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-04-20 07:52:30 +02:00

Adding Soundcloud parsing

This commit is contained in:
Hugo Lindström 2012-09-11 19:58:49 +02:00
parent a972101e75
commit 2036c3c2e7
4 changed files with 45 additions and 1 deletions

View File

@ -102,6 +102,7 @@ set( libGuiSources
utils/ItunesParser.cpp
utils/RdioParser.cpp
utils/ShortenedLinkParser.cpp
utils/SoundcloudParser.cpp
utils/StyleHelper.cpp
utils/DropJobNotifier.cpp
utils/ProxyStyle.cpp

View File

@ -30,6 +30,7 @@
#include "utils/RdioParser.h"
#include "utils/M3uLoader.h"
#include "utils/ShortenedLinkParser.h"
#include "utils/SoundcloudParser.h"
#include "utils/Logger.h"
#include "utils/TomahawkUtils.h"
#include "GlobalActionManager.h"
@ -128,6 +129,9 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType
if ( url.contains( "spotify" ) && url.contains( "playlist" ) && s_canParseSpotifyPlaylists )
return true;
if( url.contains( "soundcloud" ) && url.contains("sets") )
return true;
if ( url.contains( "grooveshark.com" ) && url.contains( "playlist" ) )
return true;
}
@ -146,6 +150,10 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType
if ( url.contains( "spotify" ) && url.contains( "track" ) )
return true;
if( url.contains( "soundcloud" ) )
return true;
if ( url.contains( "rdio.com" ) && ( ( ( url.contains( "track" ) && url.contains( "artist" ) && url.contains( "album" ) )
|| url.contains( "playlists" ) ) ) )
return true;
@ -169,6 +177,8 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType
return true;
if ( url.contains( "rdio.com" ) && ( url.contains( "artist" ) && !url.contains( "album" ) && !url.contains( "track" ) ) )
return true;
if( url.contains( "soundcloud" ) )
return true;
}
// We whitelist certain url-shorteners since they do some link checking. Often playable (e.g. spotify) links hide behind them,
@ -196,6 +206,9 @@ DropJob::isDropType( DropJob::DropType desired, const QMimeData* data )
if ( url.contains( "spotify" ) && url.contains( "playlist" ) && s_canParseSpotifyPlaylists )
return true;
if( url.contains( "soundcloud" ) && url.contains( "sets" ) )
return true;
if ( url.contains( "rdio.com" ) && url.contains( "people" ) && url.contains( "playlist" ) )
return true;
#ifdef QCA2_FOUND
@ -567,6 +580,23 @@ DropJob::handleRdioUrls( const QString& urlsRaw )
}
void
DropJob::handleSoundcloudUrls( const QString& urlsRaw )
{
QStringList urls = urlsRaw.split( QRegExp( "\\s+" ), QString::SkipEmptyParts );
qDebug() << "Got Soundcloud urls!" << urls;
if ( dropAction() == Default )
setDropAction( Create );
SoundcloudParser* sc = new SoundcloudParser( urls, dropAction() == Create, this );
connect( sc, SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), this, SLOT( onTracksAdded( QList< Tomahawk::query_ptr > ) ) );
m_queryCount++;
}
void
DropJob::handleGroovesharkUrls ( const QString& urlsRaw )
{
@ -605,6 +635,8 @@ DropJob::handleAllUrls( const QString& urls )
handleSpotifyUrls( urls );
else if ( urls.contains( "rdio.com" ) )
handleRdioUrls( urls );
else if( urls.contains( "soundcloud" ) )
handleSoundcloudUrls( urls );
#ifdef QCA2_FOUND
else if ( urls.contains( "grooveshark.com" ) )
handleGroovesharkUrls( urls );
@ -635,6 +667,15 @@ DropJob::handleTrackUrls( const QString& urls )
connect( spot, SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), this, SLOT( onTracksAdded( QList< Tomahawk::query_ptr > ) ) );
m_queryCount++;
}
else if ( urls.contains( "soundcloud") )
{
QStringList tracks = urls.split( QRegExp( "\\s+" ), QString::SkipEmptyParts );
tDebug() << "Got a list of Soundcloud tracks!" << tracks;
SoundcloudParser* sc = new SoundcloudParser( tracks, false, this );
connect( sc, SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), this, SLOT( onTracksAdded( QList< Tomahawk::query_ptr > ) ) );
m_queryCount++;
}
else if ( urls.contains( "rdio.com" ) )
{
QStringList tracks = urls.split( QRegExp( "\\s+" ), QString::SkipEmptyParts );

View File

@ -105,6 +105,7 @@ public:
void handleM3u( const QString& urls );
void handleSpotifyUrls( const QString& urls );
void handleRdioUrls( const QString& urls );
void handleSoundcloudUrls( const QString& urls );
void handleGroovesharkUrls( const QString& urls );
static bool canParseSpotifyPlaylists() { return s_canParseSpotifyPlaylists; }

View File

@ -66,7 +66,8 @@ ShortenedLinkParser::handlesUrl( const QString& url )
url.contains( "tinysong.com" ) ||
url.contains( "grooveshark.com/s/~/" ) || // These redirect to the 'real' grooveshark track url
url.contains( "grooveshark.com/#/s/~/" ) ||
url.contains( "rd.io" ) );
url.contains( "rd.io" ) ||
url.contains( "snd.sc" ) );
}