mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-04 21:27:58 +02:00
* Fetch album covers via Last.fm's Album.getInfo API call. Use ExtraLarge instead of Mega per default.
This commit is contained in:
@@ -108,7 +108,7 @@ LastFmInfoPlugin::getInfo( Tomahawk::InfoSystem::InfoRequestData requestData )
|
|||||||
switch ( requestData.type )
|
switch ( requestData.type )
|
||||||
{
|
{
|
||||||
case InfoAlbumCoverArt:
|
case InfoAlbumCoverArt:
|
||||||
fetchCoverArt( requestData );
|
fetchAlbumInfo( requestData );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case InfoArtistSimilars:
|
case InfoArtistSimilars:
|
||||||
@@ -386,7 +386,7 @@ LastFmInfoPlugin::fetchChartCapabilities( Tomahawk::InfoSystem::InfoRequestData
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
LastFmInfoPlugin::fetchCoverArt( Tomahawk::InfoSystem::InfoRequestData requestData )
|
LastFmInfoPlugin::fetchAlbumInfo( Tomahawk::InfoSystem::InfoRequestData requestData )
|
||||||
{
|
{
|
||||||
if ( !requestData.input.canConvert< Tomahawk::InfoSystem::InfoStringHash >() )
|
if ( !requestData.input.canConvert< Tomahawk::InfoSystem::InfoStringHash >() )
|
||||||
{
|
{
|
||||||
@@ -529,22 +529,11 @@ LastFmInfoPlugin::notInCacheSlot( QHash<QString, QString> criteria, Tomahawk::In
|
|||||||
|
|
||||||
case InfoAlbumCoverArt:
|
case InfoAlbumCoverArt:
|
||||||
{
|
{
|
||||||
QString artistName = criteria["artist"];
|
lastfm::Album a( criteria["artist"], criteria["album"] );
|
||||||
QString albumName = criteria["album"];
|
QNetworkReply* reply = a.getInfo();
|
||||||
|
|
||||||
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 );
|
|
||||||
reply->setProperty( "requestData", QVariant::fromValue< Tomahawk::InfoSystem::InfoRequestData >( requestData ) );
|
reply->setProperty( "requestData", QVariant::fromValue< Tomahawk::InfoSystem::InfoRequestData >( requestData ) );
|
||||||
|
|
||||||
connect( reply, SIGNAL( finished() ), SLOT( coverArtReturned() ) );
|
connect( reply, SIGNAL( finished() ), SLOT( albumInfoReturned() ) );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -765,9 +754,9 @@ LastFmInfoPlugin::artistInfoReturned()
|
|||||||
{
|
{
|
||||||
lastfm::Artist artist = lastfm::Artist::getInfo( reply );
|
lastfm::Artist artist = lastfm::Artist::getInfo( reply );
|
||||||
|
|
||||||
QUrl imgurl = artist.imageUrl( lastfm::AbstractType::MegaImage );
|
QUrl imgurl = artist.imageUrl( lastfm::AbstractType::ExtraLargeImage );
|
||||||
if ( !imgurl.isValid() )
|
if ( !imgurl.isValid() )
|
||||||
imgurl = artist.imageUrl( lastfm::AbstractType::ExtraLargeImage );
|
imgurl = artist.imageUrl( lastfm::AbstractType::MegaImage );
|
||||||
if ( !imgurl.isValid() )
|
if ( !imgurl.isValid() )
|
||||||
imgurl = artist.imageUrl( lastfm::AbstractType::LargeImage );
|
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
|
void
|
||||||
LastFmInfoPlugin::coverArtReturned()
|
LastFmInfoPlugin::coverArtReturned()
|
||||||
{
|
{
|
||||||
|
@@ -60,6 +60,7 @@ public slots:
|
|||||||
void similarArtistsReturned();
|
void similarArtistsReturned();
|
||||||
void topTracksReturned();
|
void topTracksReturned();
|
||||||
void artistInfoReturned();
|
void artistInfoReturned();
|
||||||
|
void albumInfoReturned();
|
||||||
void chartReturned();
|
void chartReturned();
|
||||||
void similarTracksReturned();
|
void similarTracksReturned();
|
||||||
|
|
||||||
@@ -71,10 +72,10 @@ protected slots:
|
|||||||
virtual void pushInfo( Tomahawk::InfoSystem::InfoPushData pushData );
|
virtual void pushInfo( Tomahawk::InfoSystem::InfoPushData pushData );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void fetchCoverArt( Tomahawk::InfoSystem::InfoRequestData requestData );
|
|
||||||
void fetchSimilarArtists( Tomahawk::InfoSystem::InfoRequestData requestData );
|
void fetchSimilarArtists( Tomahawk::InfoSystem::InfoRequestData requestData );
|
||||||
void fetchTopTracks( Tomahawk::InfoSystem::InfoRequestData requestData );
|
void fetchTopTracks( Tomahawk::InfoSystem::InfoRequestData requestData );
|
||||||
void fetchArtistInfo( Tomahawk::InfoSystem::InfoRequestData requestData );
|
void fetchArtistInfo( Tomahawk::InfoSystem::InfoRequestData requestData );
|
||||||
|
void fetchAlbumInfo( Tomahawk::InfoSystem::InfoRequestData requestData );
|
||||||
void fetchChart( Tomahawk::InfoSystem::InfoRequestData requestData );
|
void fetchChart( Tomahawk::InfoSystem::InfoRequestData requestData );
|
||||||
void fetchChartCapabilities( Tomahawk::InfoSystem::InfoRequestData requestData );
|
void fetchChartCapabilities( Tomahawk::InfoSystem::InfoRequestData requestData );
|
||||||
void fetchSimilarTracks( Tomahawk::InfoSystem::InfoRequestData requestData );
|
void fetchSimilarTracks( Tomahawk::InfoSystem::InfoRequestData requestData );
|
||||||
|
Reference in New Issue
Block a user