mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-11 00:24:12 +02:00
Adding Soundcloud parsing
This commit is contained in:
@@ -102,6 +102,7 @@ set( libGuiSources
|
|||||||
utils/ItunesParser.cpp
|
utils/ItunesParser.cpp
|
||||||
utils/RdioParser.cpp
|
utils/RdioParser.cpp
|
||||||
utils/ShortenedLinkParser.cpp
|
utils/ShortenedLinkParser.cpp
|
||||||
|
utils/SoundcloudParser.cpp
|
||||||
utils/StyleHelper.cpp
|
utils/StyleHelper.cpp
|
||||||
utils/DropJobNotifier.cpp
|
utils/DropJobNotifier.cpp
|
||||||
utils/ProxyStyle.cpp
|
utils/ProxyStyle.cpp
|
||||||
|
@@ -30,6 +30,7 @@
|
|||||||
#include "utils/RdioParser.h"
|
#include "utils/RdioParser.h"
|
||||||
#include "utils/M3uLoader.h"
|
#include "utils/M3uLoader.h"
|
||||||
#include "utils/ShortenedLinkParser.h"
|
#include "utils/ShortenedLinkParser.h"
|
||||||
|
#include "utils/SoundcloudParser.h"
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
#include "utils/TomahawkUtils.h"
|
#include "utils/TomahawkUtils.h"
|
||||||
#include "GlobalActionManager.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 )
|
if ( url.contains( "spotify" ) && url.contains( "playlist" ) && s_canParseSpotifyPlaylists )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
if( url.contains( "soundcloud" ) && url.contains("sets") )
|
||||||
|
return true;
|
||||||
|
|
||||||
if ( url.contains( "grooveshark.com" ) && url.contains( "playlist" ) )
|
if ( url.contains( "grooveshark.com" ) && url.contains( "playlist" ) )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -146,6 +150,10 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType
|
|||||||
if ( url.contains( "spotify" ) && url.contains( "track" ) )
|
if ( url.contains( "spotify" ) && url.contains( "track" ) )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
||||||
|
if( url.contains( "soundcloud" ) )
|
||||||
|
return true;
|
||||||
|
|
||||||
if ( url.contains( "rdio.com" ) && ( ( ( url.contains( "track" ) && url.contains( "artist" ) && url.contains( "album" ) )
|
if ( url.contains( "rdio.com" ) && ( ( ( url.contains( "track" ) && url.contains( "artist" ) && url.contains( "album" ) )
|
||||||
|| url.contains( "playlists" ) ) ) )
|
|| url.contains( "playlists" ) ) ) )
|
||||||
return true;
|
return true;
|
||||||
@@ -169,6 +177,8 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType
|
|||||||
return true;
|
return true;
|
||||||
if ( url.contains( "rdio.com" ) && ( url.contains( "artist" ) && !url.contains( "album" ) && !url.contains( "track" ) ) )
|
if ( url.contains( "rdio.com" ) && ( url.contains( "artist" ) && !url.contains( "album" ) && !url.contains( "track" ) ) )
|
||||||
return true;
|
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,
|
// 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 )
|
if ( url.contains( "spotify" ) && url.contains( "playlist" ) && s_canParseSpotifyPlaylists )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
if( url.contains( "soundcloud" ) && url.contains( "sets" ) )
|
||||||
|
return true;
|
||||||
|
|
||||||
if ( url.contains( "rdio.com" ) && url.contains( "people" ) && url.contains( "playlist" ) )
|
if ( url.contains( "rdio.com" ) && url.contains( "people" ) && url.contains( "playlist" ) )
|
||||||
return true;
|
return true;
|
||||||
#ifdef QCA2_FOUND
|
#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
|
void
|
||||||
DropJob::handleGroovesharkUrls ( const QString& urlsRaw )
|
DropJob::handleGroovesharkUrls ( const QString& urlsRaw )
|
||||||
{
|
{
|
||||||
@@ -605,6 +635,8 @@ DropJob::handleAllUrls( const QString& urls )
|
|||||||
handleSpotifyUrls( urls );
|
handleSpotifyUrls( urls );
|
||||||
else if ( urls.contains( "rdio.com" ) )
|
else if ( urls.contains( "rdio.com" ) )
|
||||||
handleRdioUrls( urls );
|
handleRdioUrls( urls );
|
||||||
|
else if( urls.contains( "soundcloud" ) )
|
||||||
|
handleSoundcloudUrls( urls );
|
||||||
#ifdef QCA2_FOUND
|
#ifdef QCA2_FOUND
|
||||||
else if ( urls.contains( "grooveshark.com" ) )
|
else if ( urls.contains( "grooveshark.com" ) )
|
||||||
handleGroovesharkUrls( urls );
|
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 > ) ) );
|
connect( spot, SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), this, SLOT( onTracksAdded( QList< Tomahawk::query_ptr > ) ) );
|
||||||
m_queryCount++;
|
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" ) )
|
else if ( urls.contains( "rdio.com" ) )
|
||||||
{
|
{
|
||||||
QStringList tracks = urls.split( QRegExp( "\\s+" ), QString::SkipEmptyParts );
|
QStringList tracks = urls.split( QRegExp( "\\s+" ), QString::SkipEmptyParts );
|
||||||
|
@@ -105,6 +105,7 @@ public:
|
|||||||
void handleM3u( const QString& urls );
|
void handleM3u( const QString& urls );
|
||||||
void handleSpotifyUrls( const QString& urls );
|
void handleSpotifyUrls( const QString& urls );
|
||||||
void handleRdioUrls( const QString& urls );
|
void handleRdioUrls( const QString& urls );
|
||||||
|
void handleSoundcloudUrls( const QString& urls );
|
||||||
void handleGroovesharkUrls( const QString& urls );
|
void handleGroovesharkUrls( const QString& urls );
|
||||||
|
|
||||||
static bool canParseSpotifyPlaylists() { return s_canParseSpotifyPlaylists; }
|
static bool canParseSpotifyPlaylists() { return s_canParseSpotifyPlaylists; }
|
||||||
|
@@ -66,7 +66,8 @@ ShortenedLinkParser::handlesUrl( const QString& url )
|
|||||||
url.contains( "tinysong.com" ) ||
|
url.contains( "tinysong.com" ) ||
|
||||||
url.contains( "grooveshark.com/s/~/" ) || // These redirect to the 'real' grooveshark track url
|
url.contains( "grooveshark.com/s/~/" ) || // These redirect to the 'real' grooveshark track url
|
||||||
url.contains( "grooveshark.com/#/s/~/" ) ||
|
url.contains( "grooveshark.com/#/s/~/" ) ||
|
||||||
url.contains( "rd.io" ) );
|
url.contains( "rd.io" ) ||
|
||||||
|
url.contains( "snd.sc" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user