1
0
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:
Christian Muehlhaeuser 2012-12-09 07:15:14 +01:00
parent 1f570298df
commit a21c73712a
2 changed files with 35 additions and 19 deletions

View File

@ -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()
{

View File

@ -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 );