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:
parent
a972101e75
commit
2036c3c2e7
@ -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
|
||||
|
@ -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 );
|
||||
|
@ -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; }
|
||||
|
@ -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" ) );
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user