[amarok] add reviewboard patch to support liblastfm1

Rex Dieter rdieter at fedoraproject.org
Wed Jul 4 00:06:08 UTC 2012


commit fcce43cfd6e42b75b1195b9f8895ff6a8fea5bad
Author: Rex Dieter <rdieter at fedoraproject.org>
Date:   Tue Jul 3 19:09:19 2012 -0500

    add reviewboard patch to support liblastfm1

 amarok-liblastfm1.patch |  722 +++++++++++++++++++++++++++++++++++++++++++++++
 amarok.spec             |   15 +-
 2 files changed, 735 insertions(+), 2 deletions(-)
---
diff --git a/amarok-liblastfm1.patch b/amarok-liblastfm1.patch
new file mode 100644
index 0000000..582062e
--- /dev/null
+++ b/amarok-liblastfm1.patch
@@ -0,0 +1,722 @@
+diff --git a/src/services/ampache/LastfmInfoParser.cpp b/src/services/ampache/LastfmInfoParser.cpp
+index 50cb529516ce1358785fa04824cd32642a526495..0c6dd8fe9f6a491a88dfb062a09e2652976df0ef 100644
+--- a/src/services/ampache/LastfmInfoParser.cpp
++++ b/src/services/ampache/LastfmInfoParser.cpp
+@@ -20,8 +20,7 @@
+ #include "core/support/Amarok.h"
+ #include "core/support/Debug.h"
+ 
+-#include <lastfm/XmlQuery>
+-#include <lastfm/ws.h>
++#include <lastfm/XmlQuery.h>
+ 
+ #include <KLocale>
+ 
+@@ -55,7 +54,8 @@ void LastfmInfoParser::onGetTrackInfo()
+     {
+         case QNetworkReply::NoError:
+         {
+-            lastfm::XmlQuery lfm = m_jobs[ "getTrackInfo" ]->readAll();
++            lastfm::XmlQuery lfm;
++            lfm.parse( m_jobs[ "getTrackInfo" ]->readAll() );
+             lastfm::XmlQuery wiki = lfm["track"]["wiki"];
+             const QString contentText = wiki["content"].text();
+             const QString publishedDate = wiki["published"].text();
+@@ -103,7 +103,8 @@ void LastfmInfoParser::onGetAlbumInfo()
+     {
+         case QNetworkReply::NoError:
+         {
+-            lastfm::XmlQuery lfm = m_jobs[ "getAlbumInfo" ]->readAll();
++            lastfm::XmlQuery lfm;
++            lfm.parse( m_jobs[ "getAlbumInfo" ]->readAll() );
+             lastfm::XmlQuery wiki = lfm["album"]["wiki"];
+             const QString summaryText = wiki["summary"].text();
+             const QString contentText = wiki["content"].text();
+@@ -155,7 +156,8 @@ void LastfmInfoParser::onGetArtistInfo()
+     {
+         case QNetworkReply::NoError:
+         {
+-            lastfm::XmlQuery lfm = m_jobs[ "getArtistInfo" ]->readAll();
++            lastfm::XmlQuery lfm;
++            lfm.parse( m_jobs[ "getArtistInfo" ]->readAll() );
+             debug() << lfm.text();
+             lastfm::XmlQuery bio = lfm["artist"]["bio"];
+             const QString summaryText = bio["summary"].text();
+diff --git a/src/services/lastfm/LastFmService.cpp b/src/services/lastfm/LastFmService.cpp
+index a14d989b3fac81e545df095adee36580b052fea7..c9898aa1fcd16ca8070eec66231db23c1beddff2 100644
+--- a/src/services/lastfm/LastFmService.cpp
++++ b/src/services/lastfm/LastFmService.cpp
+@@ -46,8 +46,8 @@
+ #include "widgets/SearchWidget.h"
+ #include "NetworkAccessManagerProxy.h"
+ 
+-#include <lastfm/Audioscrobbler> // from liblastfm
+-#include <lastfm/XmlQuery>
++#include <lastfm/Audioscrobbler.h> // from liblastfm
++#include <lastfm/XmlQuery.h>
+ 
+ #include <KLocale>
+ #include <KPasswordDialog>
+@@ -224,10 +224,7 @@ LastFmService::init()
+ {
+     // set the global static Lastfm::Ws stuff
+     lastfm::ws::ApiKey = Amarok::lastfmApiKey();
+-    lastfm::ws::SharedSecret = "fe0dcde9fcd14c2d1d50665b646335e9";
+-    // testing w/ official keys
+-    //Ws::SharedSecret = "73582dfc9e556d307aead069af110ab8";
+-    //Ws::ApiKey = "c8c7b163b11f92ef2d33ba6cd3c2c3c3";
++    lastfm::ws::SharedSecret = Amarok::lastfmApiSharedSecret();
+     m_userNameArray = qstrdup( m_userName.toLatin1().data() );
+     lastfm::ws::Username = m_userNameArray;
+     if( lastfm::nam() != The::networkAccessManager() )
+@@ -309,7 +306,8 @@ LastFmService::onAuthenticated()
+         case QNetworkReply::NoError:
+         {
+ 
+-            lastfm::XmlQuery lfm = lastfm::XmlQuery( m_jobs[ "auth" ]->readAll() );
++            lastfm::XmlQuery lfm;
++            lfm.parse( m_jobs[ "auth" ]->readAll() );
+             LastFmServiceConfig config;
+ 
+             if( lfm.children( "error" ).size() > 0 )
+@@ -359,10 +357,8 @@ LastFmService::onGetUserInfo()
+     {
+         case QNetworkReply::NoError:
+         {
+-            try
+-            {
+-                lastfm::XmlQuery lfm( m_jobs[ "getUserInfo" ]->readAll() );
+-
++            lastfm::XmlQuery lfm;
++            if( lfm.parse( m_jobs[ "getUserInfo" ]->readAll() ) ) {
+                 m_country = lfm["user"]["country"].text();
+                 m_age = lfm["user"]["age"].text();
+                 m_gender = lfm["user"]["gender"].text();
+@@ -381,9 +377,10 @@ LastFmService::onGetUserInfo()
+                 }
+                 updateProfileInfo();
+ 
+-            } catch( lastfm::ws::ParseError& e )
++            }
++            else
+             {
+-                debug() << "Got exception in parsing from last.fm:" << e.what();
++                debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+             }
+             break;
+         } case QNetworkReply::AuthenticationRequiredError:
+diff --git a/src/services/lastfm/LastFmServiceCollection.cpp b/src/services/lastfm/LastFmServiceCollection.cpp
+index 22f49ec0fe8e9f917f8a26f9d546ad147ad04e5b..0ed5505c1cd1350c85f21964e772f3c36cf6ae3e 100644
+--- a/src/services/lastfm/LastFmServiceCollection.cpp
++++ b/src/services/lastfm/LastFmServiceCollection.cpp
+@@ -26,7 +26,7 @@
+ #include "core-impl/collections/support/MemoryQueryMaker.h"
+ 
+ #include <lastfm/ws.h>
+-#include <lastfm/XmlQuery>
++#include <lastfm/XmlQuery.h>
+ 
+ #include <QNetworkReply>
+ 
+@@ -154,10 +154,9 @@ void LastFmServiceCollection::slotAddNeighboursLoved()
+         case QNetworkReply::NoError:
+         {
+             // iterate through each neighbour
+-            try
++            lastfm::XmlQuery lfm;
++            if( lfm.parse( m_jobs[ "user.getNeighbours" ]->readAll() ) )
+             {
+-                lastfm::XmlQuery lfm( m_jobs[ "user.getNeighbours" ]->readAll() );
+-
+                 foreach( const lastfm::XmlQuery &e, lfm[ "neighbours" ].children( "user" ) )
+                 {
+                     const QString name = e[ "name" ].text();
+@@ -168,9 +167,10 @@ void LastFmServiceCollection::slotAddNeighboursLoved()
+                     addTrack( trackPtr );
+                 }
+ 
+-            } catch( lastfm::ws::ParseError& e )
++            }
++            else
+             {
+-                debug() << "Got exception in parsing from last.fm:" << e.what();
++                debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+             }
+             break;
+         }
+@@ -195,15 +195,14 @@ void LastFmServiceCollection::slotAddNeighboursPersonal()
+         case QNetworkReply::NoError:
+         {
+             // iterate through each neighbour
+-            try
++            if( !m_jobs[ "user.getNeighbours" ] )
++            {
++                debug() << "BAD! got no result object";
++                return;
++            }
++            lastfm::XmlQuery lfm;
++            if( lfm.parse( m_jobs[ "user.getNeighbours" ]->readAll() ) )
+             {
+-                if( !m_jobs[ "user.getNeighbours" ] )
+-                {
+-                    debug() << "BAD! got no result object";
+-                    return;
+-                }
+-                lastfm::XmlQuery lfm( m_jobs[ "user.getNeighbours" ]->readAll() );
+-
+                 // iterate through each neighbour
+                 foreach( const lastfm::XmlQuery &e, lfm[ "neighbours" ].children( "user" ) )
+                 {
+@@ -218,9 +217,10 @@ void LastFmServiceCollection::slotAddNeighboursPersonal()
+ 
+                 // should be safe, as both slots SHOULD get called before we return to the event loop...
+                 m_jobs[ "user.getNeighbours" ]->deleteLater();
+-            } catch( lastfm::ws::ParseError& e )
++            }
++            else
+             {
+-                debug() << "Got exception in parsing from last.fm:" << e.what();
++                debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+             }
+             break;
+         }
+@@ -248,10 +248,9 @@ void LastFmServiceCollection::slotAddFriendsLoved()
+     {
+         case QNetworkReply::NoError:
+         {
+-            try
++            lastfm::XmlQuery lfm;
++            if( lfm.parse( m_jobs[ "user.getFriends" ]->readAll() ) )
+             {
+-                lastfm::XmlQuery lfm( m_jobs[ "user.getFriends" ]->readAll() );
+-
+                 foreach( const lastfm::XmlQuery &e, lfm[ "friends" ].children( "user" ) )
+                 {
+                     const QString name = e[ "name" ].text();
+@@ -261,9 +260,10 @@ void LastFmServiceCollection::slotAddFriendsLoved()
+                     addTrack( trackPtr );
+                 }
+ 
+-            } catch( lastfm::ws::ParseError& e )
++            }
++            else
+             {
+-                debug() << "Got exception in parsing from last.fm:" << e.what();
++                debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+             }
+             break;
+         }
+@@ -293,10 +293,9 @@ void LastFmServiceCollection::slotAddFriendsPersonal()
+     {
+         case QNetworkReply::NoError:
+         {
+-            try
++            lastfm::XmlQuery lfm;
++            if( lfm.parse( m_jobs[ "user.getFriends" ]->readAll() ) )
+             {
+-                lastfm::XmlQuery lfm( m_jobs[ "user.getFriends" ]->readAll() );
+-
+                 foreach( const lastfm::XmlQuery &e, lfm[ "friends" ].children( "user" ) )
+                 {
+                     const QString name = e[ "name" ].text();
+@@ -306,9 +305,10 @@ void LastFmServiceCollection::slotAddFriendsPersonal()
+                     addTrack( trackPtr );
+                 }
+ 
+-            } catch( lastfm::ws::ParseError& e )
++            }
++            else
+             {
+-                debug() << "Got exception in parsing from last.fm:" << e.what();
++                debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+             }
+             break;
+         }
+diff --git a/src/services/lastfm/LastFmServiceSettings.cpp b/src/services/lastfm/LastFmServiceSettings.cpp
+index 2eff71e51dc30605b4d395323a01e24b8fa25d1e..9f67559b79fb218d4c5dba769fe98dcf5cea4b8b 100644
+--- a/src/services/lastfm/LastFmServiceSettings.cpp
++++ b/src/services/lastfm/LastFmServiceSettings.cpp
+@@ -23,9 +23,9 @@
+ #include "NetworkAccessManagerProxy.h"
+ #include "ui_LastFmConfigWidget.h"
+ 
+-#include <lastfm/Audioscrobbler> // from liblastfm
++#include <lastfm/Audioscrobbler.h> // from liblastfm
+ #include <lastfm/ws.h>
+-#include <lastfm/XmlQuery>
++#include <lastfm/XmlQuery.h>
+ 
+ #include <QCryptographicHash>
+ #include <QNetworkAccessManager>
+@@ -100,7 +100,7 @@ LastFmServiceSettings::testLogin()
+     m_configDialog->testLogin->setText( i18n( "Testing..." ) );
+     // set the global static Lastfm::Ws stuff
+     lastfm::ws::ApiKey = Amarok::lastfmApiKey();
+-    lastfm::ws::SharedSecret = "fe0dcde9fcd14c2d1d50665b646335e9";
++    lastfm::ws::SharedSecret = Amarok::lastfmApiSharedSecret();
+     lastfm::ws::Username = qstrdup( m_configDialog->kcfg_ScrobblerUsername->text().toLatin1().data() );
+     if( lastfm::nam() != The::networkAccessManager() )
+         lastfm::setNetworkAccessManager( The::networkAccessManager() );
+@@ -126,7 +126,8 @@ LastFmServiceSettings::onAuthenticated()
+ {
+     DEBUG_BLOCK
+ 
+-    lastfm::XmlQuery lfm = lastfm::XmlQuery( m_authQuery->readAll() );
++    lastfm::XmlQuery lfm;
++    lfm.parse( m_authQuery->readAll() );
+ 
+     switch( m_authQuery->error() )
+     {
+diff --git a/src/services/lastfm/LastFmTreeModel.h b/src/services/lastfm/LastFmTreeModel.h
+index ac171a57a36ec6bb5443035b11bea77e4ae94720..3aa2061afce8bb6c57e1a7f1cf0717af8f52a7d1 100644
+--- a/src/services/lastfm/LastFmTreeModel.h
++++ b/src/services/lastfm/LastFmTreeModel.h
+@@ -22,7 +22,7 @@
+ #include "core/meta/Meta.h"
+ #include "WeightedStringList.h"
+ 
+-#include <lastfm/User>
++#include <lastfm/User.h>
+ 
+ #include <QAbstractItemModel>
+ #include <QHash>
+@@ -136,7 +136,7 @@ private:
+     LastFmTreeItem *m_myTopArtists;
+ 
+     QString m_userName;
+-    lastfm::AuthenticatedUser m_user;
++    lastfm::User m_user;
+ 
+     QStringList m_friends;
+     QStringList m_neighbors;
+diff --git a/src/services/lastfm/LastFmTreeModel.cpp b/src/services/lastfm/LastFmTreeModel.cpp
+index 2d94d67c5fe10bfc1abba3dd9848fd1177daa518..4d47d4201bdd6bfc33ff58a4c94d75ff6a70ec46 100644
+--- a/src/services/lastfm/LastFmTreeModel.cpp
++++ b/src/services/lastfm/LastFmTreeModel.cpp
+@@ -26,8 +26,8 @@
+ #include "AmarokMimeData.h"
+ 
+ #include <lastfm/ws.h>
+-#include <lastfm/Tag>
+-#include <lastfm/XmlQuery>
++#include <lastfm/Tag.h>
++#include <lastfm/XmlQuery.h>
+ 
+ #include <KIcon>
+ #include <KLocale>
+@@ -68,11 +68,12 @@ LastFmTreeModel::slotAddNeighbors ()
+ {
+     DEBUG_BLOCK
+ 
+-    try
+-    {
+         // Iterate over each neighbor, in two passes: 1) Get data 2) Sort data, store in model
+ 
+-        lastfm::XmlQuery lfm( m_jobs[ "getNeighbours" ]->readAll() );
++    lastfm::XmlQuery lfm;
++    lfm.parse( m_jobs[ "getNeighbours" ]->readAll() );
++    if( lfm.parseError().enumValue() == lastfm::ws::NoError )
++    {
+         foreach( const lastfm::XmlQuery &e, lfm[ "neighbours" ].children ( "user" ) )
+         {
+             const QString name = e[ "name" ].text();
+@@ -88,11 +89,11 @@ LastFmTreeModel::slotAddNeighbors ()
+             appendUserStations( neighbor, name );
+         }
+         m_neighbors.sort();
++    } else {
++        debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
++        return;
+     }
+-    catch( lastfm::ws::ParseError e )
+-    {
+-        debug() << "Got exception in parsing from last.fm:" << e.what();
+-    }
++
+     emitRowChanged(LastFm::Neighbors);
+     m_jobs[ "getNeighbours" ]->deleteLater();
+ }
+@@ -102,11 +103,11 @@ LastFmTreeModel::slotAddFriends ()
+ {
+     DEBUG_BLOCK
+ 
+-    try
+-    {
+-        // Iterate over each friend, in two passes: 1) Get data 2) Sort data, store in model
++    // Iterate over each friend, in two passes: 1) Get data 2) Sort data, store in model
+ 
+-        lastfm::XmlQuery lfm( m_jobs[ "getFriends" ]->readAll() );
++    lastfm::XmlQuery lfm;
++    if( lfm.parse( m_jobs[ "getFriends" ]->readAll() ) )
++    {
+         foreach( const lastfm::XmlQuery &e, lfm[ "friends" ].children ( "user" ) )
+         {
+             const QString name = e[ "name" ].text();
+@@ -123,11 +124,11 @@ LastFmTreeModel::slotAddFriends ()
+             appendUserStations( afriend, name );
+         }
+         m_friends.sort();
++    } else {
++        debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
++        return;
+     }
+-    catch( lastfm::ws::ParseError e )
+-    {
+-        debug() << "Got exception in parsing from last.fm:" << e.what();
+-    }
++
+     emitRowChanged(LastFm::Friends);
+     m_jobs[ "getFriends" ]->deleteLater();
+ }
+@@ -137,10 +138,9 @@ LastFmTreeModel::slotAddTopArtists ()
+ {
+     DEBUG_BLOCK
+     WeightedStringList list;
+-    try
++    lastfm::XmlQuery lfm;
++    if( lfm.parse( m_jobs[ "getTopArtists" ]->readAll() ) )
+     {
+-        lastfm::XmlQuery lfm( m_jobs[ "getTopArtists" ]->readAll() );
+-
+         foreach( const lastfm::XmlQuery &e, lfm[ "topartists" ].children ( "artist" ) )
+         {
+             const QString name = e[ "name" ].text();
+@@ -158,9 +158,10 @@ LastFmTreeModel::slotAddTopArtists ()
+             m_myTopArtists->appendChild ( artist );
+         }
+ 
+-    } catch( lastfm::ws::ParseError e )
++    }
++    else
+     {
+-        debug() << "Got exception in parsing from last.fm:" << e.what();
++        debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+     }
+     emitRowChanged(LastFm::TopArtists);
+     m_jobs[ "getTopArtists" ]->deleteLater();
+diff --git a/src/services/lastfm/ScrobblerAdapter.h b/src/services/lastfm/ScrobblerAdapter.h
+index 67ed73b291cef61ee37b0ddae28ba1eadfd6304d..b276837c18b2181c1d7aba1674b878bfbf308e3b 100644
+--- a/src/services/lastfm/ScrobblerAdapter.h
++++ b/src/services/lastfm/ScrobblerAdapter.h
+@@ -20,8 +20,8 @@
+ 
+ #include "core/meta/Meta.h"
+ 
+-#include <lastfm/Audioscrobbler>
+-#include <lastfm/Track>
++#include <lastfm/Audioscrobbler.h>
++#include <lastfm/Track.h>
+ 
+ #include <QVariant>
+ 
+diff --git a/src/services/lastfm/biases/LastFmBias.cpp b/src/services/lastfm/biases/LastFmBias.cpp
+index b011b3299f98d851109d3d9ba52e6fd09855dcff..52307a4aa9ff48adf6c06b18b719717601494515 100644
+--- a/src/services/lastfm/biases/LastFmBias.cpp
++++ b/src/services/lastfm/biases/LastFmBias.cpp
+@@ -34,9 +34,8 @@
+ #include "core/collections/QueryMaker.h"
+ #include "core-impl/collections/support/CollectionManager.h"
+ 
+-#include "lastfm/Artist"
+-#include "lastfm/ws.h"
+-#include "lastfm/XmlQuery"
++#include <lastfm/Artist.h>
++#include <lastfm/ws.h>
+ 
+ #include <QLabel>
+ #include <QComboBox>
+diff --git a/src/services/lastfm/biases/WeeklyTopBias.cpp b/src/services/lastfm/biases/WeeklyTopBias.cpp
+index df6dd6681f05d95a0e281d6e82224de2bbf001e6..2deb9ccba66f7ec0df36225506acea2e4f30905b 100644
+--- a/src/services/lastfm/biases/WeeklyTopBias.cpp
++++ b/src/services/lastfm/biases/WeeklyTopBias.cpp
+@@ -34,9 +34,9 @@
+ #include "core/collections/QueryMaker.h"
+ #include "core-impl/collections/support/CollectionManager.h"
+ 
+-#include "lastfm/Artist"
+-#include "lastfm/ws.h"
+-#include "lastfm/XmlQuery"
++#include <lastfm/Artist.h>
++#include <lastfm/ws.h>
++#include <lastfm/XmlQuery.h>
+ 
+ #include <QNetworkReply>
+ 
+@@ -371,10 +371,9 @@ Dynamic::WeeklyTopBias::weeklyArtistQueryFinished()
+     }
+ 
+ 
+-    try
++    lastfm::XmlQuery lfm;
++    if( lfm.parse( reply->readAll() ) )
+     {
+-        lastfm::XmlQuery lfm( reply->readAll() );
+-
+         // debug() << "got response:" << lfm;
+         QStringList artists;
+         for( int i = 0; i < lfm[ "weeklyartistchart" ].children( "artist" ).size(); i++ )
+@@ -398,10 +397,10 @@ Dynamic::WeeklyTopBias::weeklyArtistQueryFinished()
+             warning() << "Got a reply for a week"<<week<<"that was not requested.";
+             return;
+         }
+-
+-    } catch( lastfm::ws::ParseError& e )
++    }
++    else
+     {
+-        debug() << "caught exception parsing weekly artist chart.";
++        debug() << "failed to parse weekly artist chart.";
+     }
+ 
+     reply->deleteLater();
+diff --git a/src/services/lastfm/meta/LastFmMeta.h b/src/services/lastfm/meta/LastFmMeta.h
+index f7b93c14c92c0bebf99d165656a0e34f8b991cc0..7d64a3fa5c6f6cbe3f0cc5b26881a4996321938a 100644
+--- a/src/services/lastfm/meta/LastFmMeta.h
++++ b/src/services/lastfm/meta/LastFmMeta.h
+@@ -24,7 +24,7 @@
+ #include "ServiceMetaBase.h" // for the SourceInfoProvider
+ 
+ 
+-#include <lastfm/Track>
++#include <lastfm/Track.h>
+ 
+ 
+ #include <QObject>
+diff --git a/src/services/lastfm/meta/LastFmMeta.cpp b/src/services/lastfm/meta/LastFmMeta.cpp
+index d8f52845cb801d8ae940bc1bca77c7281ef18379..220d929977d28c8183db9965cecfc1a80039fe08 100644
+--- a/src/services/lastfm/meta/LastFmMeta.cpp
++++ b/src/services/lastfm/meta/LastFmMeta.cpp
+@@ -41,7 +41,7 @@
+ #include <QWeakPointer>
+ #include <QUrl>
+ 
+-#include <lastfm/Track>
++#include <lastfm/Track.h>
+ 
+ namespace LastFm {
+ 
+@@ -451,8 +451,7 @@ Track::love()
+     DEBUG_BLOCK
+ 
+     debug() << "info:" << d->lastFmTrack.artist() << d->lastFmTrack.title();
+-    d->wsReply = lastfm::MutableTrack( d->lastFmTrack ).love();
+-    connect( d->wsReply, SIGNAL( finished() ), this, SLOT( slotWsReply() ) );
++    lastfm::MutableTrack( d->lastFmTrack ).love();
+ }
+ 
+ void
+@@ -477,9 +476,9 @@ void Track::slotResultReady()
+ {
+     if( d->trackFetch->error() == QNetworkReply::NoError )
+     {
+-        try
++        lastfm::XmlQuery lfm;
++        if( lfm.parse( d->trackFetch->readAll() ) )
+         {
+-            lastfm::XmlQuery lfm( d->trackFetch->readAll() );
+             QString id = lfm[ "track" ][ "id" ].text();
+             QString streamable = lfm[ "track" ][ "streamable" ].text();
+             if( streamable.toInt() == 1 )
+@@ -487,9 +486,10 @@ void Track::slotResultReady()
+             else
+                 init();
+ 
+-        } catch( lastfm::ws::ParseError& e )
++        }
++        else
+         {
+-            debug() << "Got exception in parsing from last.fm:" << e.what();
++            debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+         }
+     } else
+     {
+diff --git a/src/services/lastfm/meta/LastFmMeta_p.h b/src/services/lastfm/meta/LastFmMeta_p.h
+index c2d88ac79a4dd0fe59b9f889baf72c879833f0d3..caf954a1e1acbf220ce8efa9d16db2a71cf4bbb3 100644
+--- a/src/services/lastfm/meta/LastFmMeta_p.h
++++ b/src/services/lastfm/meta/LastFmMeta_p.h
+@@ -26,10 +26,10 @@
+ #include "core/statistics/StatisticsProvider.h"
+ #include "core-impl/statistics/providers/tag/TagStatisticsProvider.h"
+ 
+-#include <lastfm/Track>
++#include <lastfm/Track.h>
+ #include <lastfm/ws.h>
+-#include <lastfm/RadioTuner>
+-#include <lastfm/XmlQuery>
++#include <lastfm/RadioTuner.h>
++#include <lastfm/XmlQuery.h>
+ 
+ #include <kio/job.h>
+ #include <kio/jobclasses.h>
+@@ -144,26 +144,24 @@ class Track::Private : public QObject
+                 return;
+             if( m_userFetch->error() == QNetworkReply::NoError )
+             {
+-                try
++                lastfm::XmlQuery lfm;
++                if( !lfm.parse( m_userFetch->readAll() ) )
+                 {
+-                    lastfm::XmlQuery lfm( m_userFetch->readAll() );
+-                    albumUrl = lfm[ "track" ][ "album" ][ "url" ].text();
+-                    trackUrl = lfm[ "track" ][ "url" ].text();
+-                    artistUrl = lfm[ "track" ][ "artist" ][ "url" ].text();
+-
+-                    notifyObservers();
++                    debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
++                    return;
++                }
++                albumUrl = lfm[ "track" ][ "album" ][ "url" ].text();
++                trackUrl = lfm[ "track" ][ "url" ].text();
++                artistUrl = lfm[ "track" ][ "artist" ][ "url" ].text();
+ 
+-                    imageUrl = lfm[ "track" ][ "album" ][ "image size=large" ].text();
++                notifyObservers();
+ 
+-                    if( !imageUrl.isEmpty() )
+-                    {
+-                        KIO::Job* job = KIO::storedGet( KUrl( imageUrl ), KIO::Reload, KIO::HideProgressInfo );
+-                        connect( job, SIGNAL( result( KJob* ) ), this, SLOT( fetchImageFinished( KJob* ) ) );
+-                    }
++                imageUrl = lfm[ "track" ][ "album" ][ "image size=large" ].text();
+ 
+-                } catch( lastfm::ws::ParseError& e )
++                if( !imageUrl.isEmpty() )
+                 {
+-                    debug() << "Got exception in parsing from last.fm:" << e.what();
++                    KIO::Job* job = KIO::storedGet( KUrl( imageUrl ), KIO::Reload, KIO::HideProgressInfo );
++                    connect( job, SIGNAL( result( KJob* ) ), this, SLOT( fetchImageFinished( KJob* ) ) );
+                 }
+             }
+ 
+diff --git a/src/services/lastfm/meta/MultiPlayableCapabilityImpl_p.h b/src/services/lastfm/meta/MultiPlayableCapabilityImpl_p.h
+index 1c464cc2635c7d614eab48ca5e4e156c67870f04..e9b63271c77d3420cd8eeb5eb19d1152b23c319f 100644
+--- a/src/services/lastfm/meta/MultiPlayableCapabilityImpl_p.h
++++ b/src/services/lastfm/meta/MultiPlayableCapabilityImpl_p.h
+@@ -25,8 +25,9 @@
+ #include "core/meta/Meta.h"
+ #include "core/capabilities/MultiPlayableCapability.h"
+ 
+-#include <lastfm/Track>
+-#include <lastfm/RadioTuner>
++#include <lastfm/Track.h>
++#include <lastfm/RadioStation.h>
++#include <lastfm/RadioTuner.h>
+ #include <lastfm/ws.h>
+ 
+ #include <KLocale>
+@@ -55,24 +56,23 @@ class MultiPlayableCapabilityImpl : public Capabilities::MultiPlayableCapability
+         {
+             DEBUG_BLOCK
+             m_tuner = new lastfm::RadioTuner( lastfm::RadioStation( m_track->uidUrl() ) );
+-            
++
+             connect( m_tuner, SIGNAL( trackAvailable() ), this, SLOT( slotNewTrackAvailable() ) );
+-            connect( m_tuner, SIGNAL( error( lastfm::ws::Error ) ), this, SLOT( error( lastfm::ws::Error ) ) );
++            connect( m_tuner, SIGNAL( error(lastfm::ws::Error,QString) ), this, SLOT( error( lastfm::ws::Error ) ) );
+         }
+-        
++
+         virtual void fetchNext()
+         {
+             DEBUG_BLOCK
+             m_currentTrack = m_tuner->takeNextTrack();
+             m_track->setTrackInfo( m_currentTrack );
+-
+         }
+-        
++
+         using Observer::metadataChanged;
+         virtual void metadataChanged( Meta::TrackPtr track )
+         {
+             const LastFm::TrackPtr ltrack = LastFm::TrackPtr::dynamicCast( track );
+-            
++
+             if( ltrack.isNull() )
+                 return;
+ 
+@@ -94,7 +94,7 @@ class MultiPlayableCapabilityImpl : public Capabilities::MultiPlayableCapability
+                 m_track->setTrackInfo( m_currentTrack );
+             }
+         }
+-        
++
+         virtual void skip()
+         {
+             fetchNext();
+diff --git a/src/context/engines/upcomingevents/UpcomingEventsEngine.cpp b/src/context/engines/upcomingevents/UpcomingEventsEngine.cpp
+index 4ae73d892cef3d4a41662f7ed15849ae773c16e3..689323cc753a3c693bc09870ea1a77e2574ec9a7 100644
+--- a/src/context/engines/upcomingevents/UpcomingEventsEngine.cpp
++++ b/src/context/engines/upcomingevents/UpcomingEventsEngine.cpp
+@@ -27,10 +27,6 @@
+ #include "EngineController.h"
+ #include "LastFmEventXmlParser.h"
+ 
+-// LastFm
+-#include <lastfm/XmlQuery>
+-#include <lastfm/ws.h>
+-
+ // KDE
+ #include <KDateTime>
+ 
+diff --git a/src/core/support/Amarok.h b/src/core/support/Amarok.h
+index c9852154dee74fb372bae435fdeefa92003d41b1..d8c91e789d02b204202c8a99b9459b8d10b3d90d 100644
+--- a/src/core/support/Amarok.h
++++ b/src/core/support/Amarok.h
+@@ -203,6 +203,7 @@ namespace Amarok
+ 
+     inline const char* discogsApiKey() { return "91734dd989"; }
+     inline const char* lastfmApiKey() { return "402d3ca8e9bc9d3cf9b85e1202944ca5"; }
++    inline const char* lastfmApiSharedSecret() { return "fe0dcde9fcd14c2d1d50665b646335e9"; }
+     inline const char* yahooBossApiKey() { return "oQepTNrV34G9Satb1dgRZ8hdl1uhJvguDSU5Knl2Xd4ALK85knYt6ylr.FTA57XMRBA-"; }
+     inline const char* flickrApiKey() { return "9c5a288116c34c17ecee37877397fe31"; }
+ }
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0d146c58bd382b4d4f379ebedddf1630d73db369..31183e59b69cdb3c7902d49bdb93a00a7fb35053 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -129,7 +129,7 @@ if( WITH_PLAYER )
+     # macro_log_feature( STRIGI_FOUND "strigi" "Index metadata of files" "http://strigi.sourceforge.net" FALSE "" "" )
+ 
+     macro_optional_find_package(LibLastFm)
+-    macro_log_feature( LIBLASTFM_FOUND "liblastfm" "Enable Last.Fm service, including scrobbling, song submissions, and suggested song dynamic playlists" "http://cdn.last.fm/src/liblastfm-0.3.0.tar.bz2" FALSE "0.3" "" )
++    macro_log_feature( LIBLASTFM_FOUND "liblastfm" "Enable Last.Fm service, including scrobbling, song submissions, and suggested song dynamic playlists" "http://cdn.last.fm/src/liblastfm-1.0.0.tar.gz" FALSE "1.0.0" "" )
+     macro_bool_to_01( LIBLASTFM_FOUND HAVE_LIBLASTFM )
+ 
+     macro_optional_find_package( FFmpeg )
+diff --git a/cmake/modules/FindLibLastFm.cmake b/cmake/modules/FindLibLastFm.cmake
+index 1d863b08489e27054a049e35d2d94667646db1f7..95dddb6c082c14c7a6b14eb4501e1283106c8fcf 100644
+--- a/cmake/modules/FindLibLastFm.cmake
++++ b/cmake/modules/FindLibLastFm.cmake
+@@ -6,7 +6,7 @@
+ # LIBLASTFM_FOUND, whether liblastfm was found
+ 
+ 
+-find_path(LIBLASTFM_INCLUDE_DIR NAMES Audioscrobbler
++find_path(LIBLASTFM_INCLUDE_DIR NAMES lastfm
+    HINTS
+    ~/usr/include
+    /opt/local/include
+diff --git a/src/LastfmReadLabelCapability.cpp b/src/LastfmReadLabelCapability.cpp
+index 385e6b9c065009b330e116e3d748b82c24f14e8d..d1fb28b6abf2dcf0cf5aaee71dedf1c5328cb59e 100644
+--- a/src/LastfmReadLabelCapability.cpp
++++ b/src/LastfmReadLabelCapability.cpp
+@@ -22,8 +22,7 @@
+ #include <QMap>
+ #include <QNetworkReply>
+ 
+-#include <lastfm/XmlQuery>
+-#include <ws.h>
++#include <lastfm/XmlQuery.h>
+ #include "core/support/Amarok.h"
+ 
+ namespace Capabilities
+@@ -72,7 +71,8 @@ LastfmReadLabelCapability::onTagsFetched()
+     {
+         case QNetworkReply::NoError:
+         {
+-            lastfm::XmlQuery lfm = m_job->readAll();
++            lastfm::XmlQuery lfm;
++            lfm.parse(m_job->readAll());
+             QList<lastfm::XmlQuery> tags = lfm.children( "tag" );
+             QStringList ret;
+             foreach( const lastfm::XmlQuery &child, tags )
diff --git a/amarok.spec b/amarok.spec
index 8fff6a6..420c7f7 100644
--- a/amarok.spec
+++ b/amarok.spec
@@ -2,7 +2,7 @@
 Name:    amarok
 Summary: Media player
 Version: 2.5.90
-Release: 2%{?dist}
+Release: 3%{?dist}
 
 # KDE e.V. may determine that future GPL versions are accepted
 License: GPLv2 or GPLv3
@@ -17,6 +17,11 @@ Patch0:  amarok-2.5.0-onlinedoc.patch
 #Patch50: amarok-2.2.1.90-qtscript_not_required.patch
 
 ## upstream patches
+# https://git.reviewboard.kde.org/r/105276/
+Patch100: amarok-liblastfm1.patch
+%if 0%{?fedora} > 17
+%define liblastfm1 1
+%endif
 
 BuildRequires: curl-devel
 BuildRequires: desktop-file-utils
@@ -24,7 +29,7 @@ BuildRequires: desktop-file-utils
 #BuildRequires: ffmpeg-devel libofa-devel
 BuildRequires: gettext
 BuildRequires: kdelibs4-devel 
-BuildRequires: liblastfm-devel
+BuildRequires: liblastfm-devel%{?liblastfm1: >= 1.0}
 # extra libaio linkage comes from use of mysql_config --libs
 BuildRequires: mysql-embedded-devel libaio-devel
 BuildRequires: pkgconfig(libgpod-1.0) >= 0.7.0
@@ -87,6 +92,9 @@ BuildArch: noarch
 
 %patch0 -p1 -b .onlinedoc
 #patch50 -p1 -b .qtscript_not_required
+%if 0%{?liblastfm1}
+%patch100 -p1 -b .liblastfm1
+%endif
 
 
 %build
@@ -175,6 +183,9 @@ fi
 
 
 %changelog
+* Tue Jul 03 2012 Rex Dieter <rdieter at fedoraproject.org> 2.5.90-3
+- add reviewboard patch to support liblastfm1
+
 * Tue Jul 03 2012 Rex Dieter <rdieter at fedoraproject.org> 2.5.90-2
 - rebuild (liblastfm)
 


More information about the scm-commits mailing list