mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-03-20 07:49:42 +01:00
Fix SoundcloudParser
This commit is contained in:
parent
2b4b21e7db
commit
81bd375c0c
@ -71,10 +71,11 @@ void
|
||||
SoundcloudParser::lookupUrl( const QString& link )
|
||||
{
|
||||
tDebug() << "Looking up URL..." << link;
|
||||
|
||||
QUrl scLink( QString( "http://api.soundcloud.com/resolve.json?client_id=TiNg2DRYhBnp01DA3zNag&url=" ) + link );
|
||||
|
||||
NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->get( QNetworkRequest( scLink ) ) );
|
||||
connect( reply, SIGNAL( finished() ), SLOT( soundcloudBrowseFinished() ) );
|
||||
connect( reply, SIGNAL( finished() ), SLOT( soundcloudLookupFinished() ) );
|
||||
|
||||
m_browseJob = new DropJobNotifier( pixmap(), "Soundcloud", DropJob::All, reply );
|
||||
JobStatusView::instance()->model()->addJob( m_browseJob );
|
||||
@ -123,13 +124,25 @@ SoundcloudParser::soundcloudLookupFinished()
|
||||
QJson::Parser p;
|
||||
bool ok;
|
||||
QVariantMap res = p.parse( r->reply(), &ok ).toMap();
|
||||
|
||||
if ( !ok )
|
||||
{
|
||||
tLog() << "Failed to parse json from Soundcloud browse item:" << p.errorString() << "On line" << p.errorLine();
|
||||
return;
|
||||
}
|
||||
|
||||
if( res.value( "kind" ).toString() == "playlist" )
|
||||
m_type = DropJob::Playlist;
|
||||
if( res.value( "kind" ).toString() == "track" )
|
||||
m_type = DropJob::Track;
|
||||
if( res.value( "kind" ).toString() == "user" )
|
||||
{
|
||||
QUrl url = QUrl( QString( res.value( "uri" ).toString() + "/tracks.json?client_id=TiNg2DRYhBnp01DA3zNag" ) );
|
||||
qDebug() << Q_FUNC_INFO << url;
|
||||
NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->get( QNetworkRequest( QUrl( url ) ) ) );
|
||||
connect( reply, SIGNAL( finished() ), SLOT( soundcloudArtistLookupFinished() ) );
|
||||
return;
|
||||
}
|
||||
|
||||
if ( m_type == DropJob::Track )
|
||||
{
|
||||
parseTrack( res );
|
||||
@ -160,10 +173,6 @@ SoundcloudParser::soundcloudLookupFinished()
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if ( m_type == DropJob::Artist )
|
||||
{
|
||||
// cant parse soundcloud json here atm.
|
||||
}
|
||||
}
|
||||
|
||||
if ( m_single && !m_tracks.isEmpty() )
|
||||
@ -185,7 +194,7 @@ SoundcloudParser::playlistCreated()
|
||||
|
||||
|
||||
void
|
||||
SoundcloudParser::soundcloudBrowseFinished()
|
||||
SoundcloudParser::soundcloudArtistLookupFinished()
|
||||
{
|
||||
NetworkReply* r = qobject_cast< NetworkReply* >( sender() );
|
||||
Q_ASSERT( r );
|
||||
@ -194,39 +203,19 @@ SoundcloudParser::soundcloudBrowseFinished()
|
||||
|
||||
if ( r->reply()->error() == QNetworkReply::NoError )
|
||||
{
|
||||
if ( r->reply()->rawHeaderList().contains( "Location" ) )
|
||||
{
|
||||
QString url = r->reply()->rawHeader( "Location" );
|
||||
if ( url.contains( "tracks" ) )
|
||||
{
|
||||
m_type = DropJob::Track;
|
||||
}
|
||||
else if ( url.contains( "users" ) )
|
||||
{
|
||||
// For now, dont handle user tracklists
|
||||
m_type = DropJob::All; //DropJob::Artist;
|
||||
url = url.replace( ".json", "/tracks.json" );
|
||||
}
|
||||
else if ( url.contains( "playlists" ) )
|
||||
{
|
||||
m_type = DropJob::Playlist;
|
||||
}
|
||||
QJson::Parser p;
|
||||
bool ok;
|
||||
QVariantList res = p.parse( r->reply(), &ok ).toList();
|
||||
foreach( const QVariant& track, res )
|
||||
parseTrack( track.toMap() );
|
||||
|
||||
if ( m_type != DropJob::All )
|
||||
{
|
||||
NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->get( QNetworkRequest( QUrl( url ) ) ) );
|
||||
connect( reply, SIGNAL( finished() ), SLOT( soundcloudLookupFinished() ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( m_single && !m_tracks.isEmpty() )
|
||||
emit track( m_tracks.first() );
|
||||
else if ( !m_single && !m_tracks.isEmpty() )
|
||||
emit tracks( m_tracks );
|
||||
|
||||
if ( m_type == DropJob::All )
|
||||
{ // No good
|
||||
m_queries.remove( r );
|
||||
deleteLater();
|
||||
|
||||
if ( m_browseJob )
|
||||
m_browseJob->setFinished();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -63,7 +63,7 @@ signals:
|
||||
void playlist( const Tomahawk::query_ptr& playlist );
|
||||
|
||||
private slots:
|
||||
void soundcloudBrowseFinished();
|
||||
void soundcloudArtistLookupFinished();
|
||||
void soundcloudLookupFinished();
|
||||
void playlistCreated();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user