mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-03-20 15:59:42 +01:00
* Fetch album covers via Last.fm's Album.getInfo API call. Use ExtraLarge instead of Mega per default.
This commit is contained in:
parent
1f570298df
commit
a21c73712a
@ -108,7 +108,7 @@ LastFmInfoPlugin::getInfo( Tomahawk::InfoSystem::InfoRequestData requestData )
|
||||
switch ( requestData.type )
|
||||
{
|
||||
case InfoAlbumCoverArt:
|
||||
fetchCoverArt( requestData );
|
||||
fetchAlbumInfo( requestData );
|
||||
break;
|
||||
|
||||
case InfoArtistSimilars:
|
||||
@ -386,7 +386,7 @@ LastFmInfoPlugin::fetchChartCapabilities( Tomahawk::InfoSystem::InfoRequestData
|
||||
|
||||
|
||||
void
|
||||
LastFmInfoPlugin::fetchCoverArt( Tomahawk::InfoSystem::InfoRequestData requestData )
|
||||
LastFmInfoPlugin::fetchAlbumInfo( Tomahawk::InfoSystem::InfoRequestData requestData )
|
||||
{
|
||||
if ( !requestData.input.canConvert< Tomahawk::InfoSystem::InfoStringHash >() )
|
||||
{
|
||||
@ -529,22 +529,11 @@ LastFmInfoPlugin::notInCacheSlot( QHash<QString, QString> criteria, Tomahawk::In
|
||||
|
||||
case InfoAlbumCoverArt:
|
||||
{
|
||||
QString artistName = criteria["artist"];
|
||||
QString albumName = criteria["album"];
|
||||
|
||||
QUrl imgurl( "http://ws.audioscrobbler.com/2.0/" );
|
||||
imgurl.addQueryItem( "method", "album.imageredirect" );
|
||||
imgurl.addEncodedQueryItem( "artist", QUrl::toPercentEncoding( artistName, "", "+" ) );
|
||||
imgurl.addEncodedQueryItem( "album", QUrl::toPercentEncoding( albumName, "", "+" ) );
|
||||
imgurl.addQueryItem( "autocorrect", QString::number( 1 ) );
|
||||
imgurl.addQueryItem( "size", "large" );
|
||||
imgurl.addQueryItem( "api_key", "7a90f6672a04b809ee309af169f34b8b" );
|
||||
|
||||
QNetworkRequest req( imgurl );
|
||||
QNetworkReply* reply = TomahawkUtils::nam()->get( req );
|
||||
lastfm::Album a( criteria["artist"], criteria["album"] );
|
||||
QNetworkReply* reply = a.getInfo();
|
||||
reply->setProperty( "requestData", QVariant::fromValue< Tomahawk::InfoSystem::InfoRequestData >( requestData ) );
|
||||
|
||||
connect( reply, SIGNAL( finished() ), SLOT( coverArtReturned() ) );
|
||||
connect( reply, SIGNAL( finished() ), SLOT( albumInfoReturned() ) );
|
||||
return;
|
||||
}
|
||||
|
||||
@ -765,9 +754,9 @@ LastFmInfoPlugin::artistInfoReturned()
|
||||
{
|
||||
lastfm::Artist artist = lastfm::Artist::getInfo( reply );
|
||||
|
||||
QUrl imgurl = artist.imageUrl( lastfm::AbstractType::MegaImage );
|
||||
QUrl imgurl = artist.imageUrl( lastfm::AbstractType::ExtraLargeImage );
|
||||
if ( !imgurl.isValid() )
|
||||
imgurl = artist.imageUrl( lastfm::AbstractType::ExtraLargeImage );
|
||||
imgurl = artist.imageUrl( lastfm::AbstractType::MegaImage );
|
||||
if ( !imgurl.isValid() )
|
||||
imgurl = artist.imageUrl( lastfm::AbstractType::LargeImage );
|
||||
|
||||
@ -779,6 +768,32 @@ LastFmInfoPlugin::artistInfoReturned()
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
LastFmInfoPlugin::albumInfoReturned()
|
||||
{
|
||||
QNetworkReply* reply = qobject_cast<QNetworkReply*>( sender() );
|
||||
Tomahawk::InfoSystem::InfoRequestData requestData = reply->property( "requestData" ).value< Tomahawk::InfoSystem::InfoRequestData >();
|
||||
|
||||
if ( requestData.type == Tomahawk::InfoSystem::InfoAlbumCoverArt )
|
||||
{
|
||||
lastfm::XmlQuery lfm;
|
||||
if ( lfm.parse( reply->readAll() ) )
|
||||
{
|
||||
QUrl imgurl = QUrl( lfm["album"]["image size=extralarge"].text() );
|
||||
if ( !imgurl.isValid() )
|
||||
imgurl = QUrl( lfm["album"]["image size=mega"].text() );
|
||||
if ( !imgurl.isValid() )
|
||||
imgurl = QUrl( lfm["album"]["image size=large"].text() );
|
||||
|
||||
QNetworkRequest req( imgurl );
|
||||
QNetworkReply* newReply = TomahawkUtils::nam()->get( req );
|
||||
newReply->setProperty( "requestData", reply->property( "requestData" ) );
|
||||
connect( newReply, SIGNAL( finished() ), SLOT( coverArtReturned() ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
LastFmInfoPlugin::coverArtReturned()
|
||||
{
|
||||
|
@ -60,6 +60,7 @@ public slots:
|
||||
void similarArtistsReturned();
|
||||
void topTracksReturned();
|
||||
void artistInfoReturned();
|
||||
void albumInfoReturned();
|
||||
void chartReturned();
|
||||
void similarTracksReturned();
|
||||
|
||||
@ -71,10 +72,10 @@ protected slots:
|
||||
virtual void pushInfo( Tomahawk::InfoSystem::InfoPushData pushData );
|
||||
|
||||
private:
|
||||
void fetchCoverArt( Tomahawk::InfoSystem::InfoRequestData requestData );
|
||||
void fetchSimilarArtists( Tomahawk::InfoSystem::InfoRequestData requestData );
|
||||
void fetchTopTracks( Tomahawk::InfoSystem::InfoRequestData requestData );
|
||||
void fetchArtistInfo( Tomahawk::InfoSystem::InfoRequestData requestData );
|
||||
void fetchAlbumInfo( Tomahawk::InfoSystem::InfoRequestData requestData );
|
||||
void fetchChart( Tomahawk::InfoSystem::InfoRequestData requestData );
|
||||
void fetchChartCapabilities( Tomahawk::InfoSystem::InfoRequestData requestData );
|
||||
void fetchSimilarTracks( Tomahawk::InfoSystem::InfoRequestData requestData );
|
||||
|
Loading…
x
Reference in New Issue
Block a user