* [gentoo-commits] gentoo-x86 commit in media-sound/clementine/files: clementine-1.0.1-liblastfm-1.patch
@ 2012-07-07 8:03 Samuli Suominen (ssuominen)
0 siblings, 0 replies; 2+ messages in thread
From: Samuli Suominen (ssuominen) @ 2012-07-07 8:03 UTC (permalink / raw
To: gentoo-commits
ssuominen 12/07/07 08:03:03
Added: clementine-1.0.1-liblastfm-1.patch
Log:
Import Fedora patch for compability with media-libs/liblastfm >= 1 wrt #423241 by Ryan Hill
(Portage version: 2.2.0_alpha116/cvs/Linux x86_64)
Revision Changes Path
1.1 media-sound/clementine/files/clementine-1.0.1-liblastfm-1.patch
file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/media-sound/clementine/files/clementine-1.0.1-liblastfm-1.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/media-sound/clementine/files/clementine-1.0.1-liblastfm-1.patch?rev=1.1&content-type=text/plain
Index: clementine-1.0.1-liblastfm-1.patch
===================================================================
--- src/core/song.cpp
+++ src/core/song.cpp
@@ -49,7 +49,7 @@
#ifdef HAVE_LIBLASTFM
#include "internet/fixlastfm.h"
- #include <lastfm/Track>
+ #include <lastfm/Track.h>
#endif
#include <QFile>
--- src/covers/lastfmcoverprovider.cpp
+++ src/covers/lastfmcoverprovider.cpp
@@ -19,8 +19,8 @@
#include "coverprovider.h"
#include "lastfmcoverprovider.h"
-#include <lastfm/Artist>
-#include <lastfm/XmlQuery>
+#include <lastfm/Artist.h>
+#include <lastfm/XmlQuery.h>
#include <lastfm/ws.h>
#include <QNetworkReply>
@@ -52,14 +52,8 @@ void LastFmCoverProvider::QueryFinished(
CoverSearchResults results;
- try {
- lastfm::XmlQuery query(lastfm::ws::parse(reply));
-#ifdef Q_OS_WIN32
- if (lastfm::ws::last_parse_error != lastfm::ws::NoError) {
- throw std::runtime_error("");
- }
-#endif
-
+ lastfm::XmlQuery query;
+ if (query.parse(reply->readAll())) {
// parse the list of search results
QList<lastfm::XmlQuery> elements = query["results"]["albummatches"].children("album");
@@ -69,7 +63,7 @@ void LastFmCoverProvider::QueryFinished(
result.image_url = element["image size=extralarge"].text();
results << result;
}
- } catch(std::runtime_error&) {
+ } else {
// Drop through and emit an empty list of results.
}
--- src/internet/lastfmservice.cpp
+++ src/internet/lastfmservice.cpp
@@ -33,20 +33,18 @@
#include <boost/scoped_ptr.hpp>
-#include <lastfm/Audioscrobbler>
+#include <lastfm/Audioscrobbler.h>
#include <lastfm/misc.h>
-#include <lastfm/RadioStation>
-#include <lastfm/Scrobble>
-#include <lastfm/ScrobbleCache>
-#include <lastfm/ScrobblePoint>
+#include <lastfm/RadioStation.h>
+#include <lastfm/ScrobbleCache.h>
+#include <lastfm/ScrobblePoint.h>
#include <lastfm/ws.h>
-#include <lastfm/XmlQuery>
+#include <lastfm/XmlQuery.h>
#include <QMenu>
#include <QSettings>
using boost::scoped_ptr;
-using lastfm::Scrobble;
using lastfm::XmlQuery;
uint qHash(const lastfm::Track& track) {
@@ -300,13 +298,8 @@ void LastFMService::AuthenticateReplyFin
reply->deleteLater();
// Parse the reply
- try {
- lastfm::XmlQuery const lfm = lastfm::ws::parse(reply);
-#ifdef Q_OS_WIN32
- if (lastfm::ws::last_parse_error != lastfm::ws::NoError)
- throw std::runtime_error("");
-#endif
-
+ lastfm::XmlQuery lfm;
+ if (lfm.parse(reply->readAll())) {
lastfm::ws::Username = lfm["session"]["name"].text();
lastfm::ws::SessionKey = lfm["session"]["key"].text();
QString subscribed = lfm["session"]["subscriber"].text();
@@ -318,8 +311,8 @@ void LastFMService::AuthenticateReplyFin
settings.setValue("Username", lastfm::ws::Username);
settings.setValue("Session", lastfm::ws::SessionKey);
settings.setValue("Subscriber", is_subscriber);
- } catch (std::runtime_error& e) {
- qLog(Error) << e.what();
+ } else {
+ qLog(Error) << lfm.parseError().message();
emit AuthenticationComplete(false);
return;
}
@@ -347,13 +340,8 @@ void LastFMService::UpdateSubscriberStat
bool is_subscriber = false;
- try {
- const lastfm::XmlQuery lfm = lastfm::ws::parse(reply);
-#ifdef Q_OS_WIN32
- if (lastfm::ws::last_parse_error != lastfm::ws::NoError)
- throw std::runtime_error("");
-#endif
-
+ lastfm::XmlQuery lfm;
+ if (lfm.parse(reply->readAll())) {
connection_problems_ = false;
QString subscriber = lfm["user"]["subscriber"].text();
is_subscriber = (subscriber.toInt() == 1);
@@ -362,11 +350,9 @@ void LastFMService::UpdateSubscriberStat
settings.beginGroup(kSettingsGroup);
settings.setValue("Subscriber", is_subscriber);
qLog(Info) << lastfm::ws::Username << "Subscriber status:" << is_subscriber;
- } catch (lastfm::ws::ParseError e) {
- qLog(Error) << "Last.fm parse error: " << e.enumValue();
- connection_problems_ = e.enumValue() == lastfm::ws::MalformedResponse;
- } catch (std::runtime_error& e) {
- qLog(Error) << e.what();
+ } else {
+ qLog(Error) << "Last.fm parse error: " << lfm.parseError().message();
+ connection_problems_ = lfm.parseError().enumValue() == lastfm::ws::MalformedResponse;
}
emit UpdatedSubscriberStatus(is_subscriber);
@@ -469,7 +455,8 @@ bool LastFMService::InitScrobbler() {
scrobbler_ = new lastfm::Audioscrobbler(kAudioscrobblerClientId);
//reemit the signal since the sender is private
- connect(scrobbler_, SIGNAL(status(int)), SIGNAL(ScrobblerStatus(int)));
+ connect(scrobbler_, SIGNAL(scrobblesSubmitted(QList<lastfm::Track>)), SIGNAL(ScrobbleSubmitted()));
+ connect(scrobbler_, SIGNAL(nowPlayingError(int,QString)), SIGNAL(ScrobbleError(int)));
return true;
}
@@ -497,7 +484,7 @@ void LastFMService::NowPlaying(const Son
if (!last_track_.isNull() &&
last_track_.source() == lastfm::Track::NonPersonalisedBroadcast) {
const int duration_secs = last_track_.timestamp().secsTo(QDateTime::currentDateTime());
- if (duration_secs >= ScrobblePoint::kScrobbleMinLength) {
+ if (duration_secs >= lastfm::ScrobblePoint::scrobbleTimeMin()) {
lastfm::MutableTrack mtrack(last_track_);
mtrack.setDuration(duration_secs);
@@ -514,14 +501,16 @@ void LastFMService::NowPlaying(const Son
already_scrobbled_ = false;
last_track_ = mtrack;
- //check immediately if the song is valid
- Scrobble::Invalidity invalidity;
-
- if (!lastfm::Scrobble(last_track_).isValid( &invalidity )) {
- //for now just notify this, we can also see the cause
- emit ScrobblerStatus(-1);
- return;
- }
+// TODO: validity was removed from liblastfm1 but might reappear, it should have
+// no impact as we get a different error when actually trying to scrobble.
+// //check immediately if the song is valid
+// Scrobble::Invalidity invalidity;
+//
+// if (!lastfm::Scrobble(last_track_).isValid( &invalidity )) {
+// //for now just notify this, we can also see the cause
+// emit ScrobbleError(-1);
+// return;
+// }
scrobbler_->nowPlaying(mtrack);
}
@@ -530,12 +519,12 @@ void LastFMService::Scrobble() {
if (!InitScrobbler())
return;
- ScrobbleCache cache(lastfm::ws::Username);
+ lastfm::ScrobbleCache cache(lastfm::ws::Username);
qLog(Debug) << "There are" << cache.tracks().count() << "tracks in the last.fm cache.";
scrobbler_->cache(last_track_);
// Let's mark a track as cached, useful when the connection is down
- emit ScrobblerStatus(30);
+ emit ScrobbleError(30);
scrobbler_->submit();
already_scrobbled_ = true;
@@ -640,7 +629,7 @@ void LastFMService::RefreshFriends(bool
return;
}
- lastfm::AuthenticatedUser user;
+ lastfm::User user;
QNetworkReply* reply = user.getFriends();
connect(reply, SIGNAL(finished()), SLOT(RefreshFriendsFinished()));
}
@@ -649,7 +638,7 @@ void LastFMService::RefreshNeighbours()
if (!neighbours_list_ || !IsAuthenticated())
return;
- lastfm::AuthenticatedUser user;
+ lastfm::User user;
QNetworkReply* reply = user.getNeighbours();
connect(reply, SIGNAL(finished()), SLOT(RefreshNeighboursFinished()));
}
@@ -661,14 +650,11 @@ void LastFMService::RefreshFriendsFinish
QList<lastfm::User> friends;
- try {
- friends = lastfm::User::list(reply);
-#ifdef Q_OS_WIN32
- if (lastfm::ws::last_parse_error != lastfm::ws::NoError)
- throw std::runtime_error("");
-#endif
- } catch (std::runtime_error& e) {
- qLog(Error) << e.what();
+ lastfm::XmlQuery lfm;
+ if (lfm.parse(reply->readAll())) {
+ friends = lastfm::UserList(lfm).users();
+ } else {
+ qLog(Error) << lfm.parseError().message();
return;
}
@@ -708,14 +694,11 @@ void LastFMService::RefreshNeighboursFin
QList<lastfm::User> neighbours;
- try {
- neighbours = lastfm::User::list(reply);
-#ifdef Q_OS_WIN32
- if (lastfm::ws::last_parse_error != lastfm::ws::NoError)
- throw std::runtime_error("");
-#endif
- } catch (std::runtime_error& e) {
- qLog(Error) << e.what();
+ lastfm::XmlQuery lfm;
+ if (lfm.parse(reply->readAll())) {
+ neighbours = lastfm::UserList(lfm).users();
+ } else {
+ qLog(Error) << lfm.parseError().message();
return;
}
@@ -869,13 +852,8 @@ void LastFMService::FetchMoreTracksFinis
model()->task_manager()->SetTaskFinished(tune_task_id_);
tune_task_id_ = 0;
- try {
- const XmlQuery& query = lastfm::ws::parse(reply);
-#ifdef Q_OS_WIN32
- if (lastfm::ws::last_parse_error != lastfm::ws::NoError)
- throw std::runtime_error("");
-#endif
-
+ XmlQuery query;
+ if (query.parse(reply->readAll())) {
const XmlQuery& playlist = query["playlist"];
foreach (const XmlQuery& q, playlist["trackList"].children("track")) {
lastfm::MutableTrack t;
@@ -890,17 +868,9 @@ void LastFMService::FetchMoreTracksFinis
art_urls_[t] = q["image"].text();
playlist_ << t;
}
- } catch (std::runtime_error& e) {
- // For some reason a catch block that takes a lastfm::ws::ParseError&
- // doesn't get called, even when a lastfm::ws::ParseError is thrown...
- // Hacks like this remind me of Java...
- if (QString(typeid(e).name()).contains("ParseError")) {
- // dynamic_cast throws a std::bad_cast ... *boggle*
+ } else {
emit StreamError(tr("Couldn't load the last.fm radio station")
- .arg(e.what()));
- } else {
- emit StreamError(tr("An unknown last.fm error occurred: %1").arg(e.what()));
- }
+ .arg(query.parseError().message()));
return;
}
@@ -913,7 +883,7 @@ void LastFMService::Tune(const QUrl& url
last_url_ = url;
initial_tune_ = true;
- const lastfm::RadioStation station(FixupUrl(url));
+ const lastfm::RadioStation station(FixupUrl(url).toString());
playlist_.clear();
--- src/internet/lastfmservice.h
+++ src/internet/lastfmservice.h
@@ -27,7 +27,8 @@ class Track;
uint qHash(const lastfm::Track& track);
#include "fixlastfm.h"
-#include <lastfm/Track>
+#include <lastfm/Audioscrobbler.h>
+#include <lastfm/Track.h>
#include <lastfm/ws.h>
#include "internetmodel.h"
@@ -132,7 +133,8 @@ class LastFMService : public InternetSer
void ScrobblingEnabledChanged(bool value);
void ButtonVisibilityChanged(bool value);
void ScrobbleButtonVisibilityChanged(bool value);
- void ScrobblerStatus(int value);
+ void ScrobbleSubmitted();
+ void ScrobbleError(int value);
void UpdatedSubscriberStatus(bool is_subscriber);
void ScrobbledRadioStream();
--- src/songinfo/lastfmtrackinfoprovider.cpp
+++ src/songinfo/lastfmtrackinfoprovider.cpp
@@ -22,7 +22,7 @@
#include "ui/iconloader.h"
#include <lastfm/ws.h>
-#include <lastfm/XmlQuery>
+#include <lastfm/XmlQuery.h>
void LastfmTrackInfoProvider::FetchInfo(int id, const Song& metadata) {
QMap<QString, QString> params;
@@ -50,18 +50,12 @@ void LastfmTrackInfoProvider::RequestFin
return;
}
- try {
- lastfm::XmlQuery query = lastfm::ws::parse(reply);
-#ifdef Q_OS_WIN32
- if (lastfm::ws::last_parse_error != lastfm::ws::NoError)
- throw std::runtime_error("");
-#endif
-
+ lastfm::XmlQuery query;
+ if (query.parse(reply->readAll())) {
GetPlayCounts(id, query);
GetWiki(id, query);
GetTags(id, query);
- } catch (std::runtime_error&) {
}
emit Finished(id);
}
--- src/suggesters/lastfmsuggester.cpp
+++ src/suggesters/lastfmsuggester.cpp
@@ -1,6 +1,6 @@
#include "lastfmsuggester.h"
-#include <lastfm/XmlQuery>
+#include <lastfm/XmlQuery.h>
#include "core/logging.h"
#include "core/timeconstants.h"
@@ -39,13 +39,8 @@ void LastFMSuggester::RequestFinished()
int id = it.value();
replies_.erase(it);
- try {
- lastfm::XmlQuery const lfm = lastfm::ws::parse(reply);
-#ifdef Q_OS_WIN32
- if (lastfm::ws::last_parse_error != lastfm::ws::NoError)
- throw std::runtime_error("");
-#endif
-
+ lastfm::XmlQuery lfm;
+ if (lfm.parse(reply->readAll())) {
const QList<XmlQuery> tracks = lfm["similartracks"].children("track");
SongList songs;
foreach (const XmlQuery& q, tracks) {
@@ -59,8 +54,8 @@ void LastFMSuggester::RequestFinished()
}
qLog(Debug) << songs.length() << "suggested songs from Last.fm";
emit SuggestSongsFinished(id, songs);
- } catch (std::runtime_error& e) {
- qLog(Error) << e.what();
+ } else {
+ qLog(Error) << lfm.parseError().message();
emit SuggestSongsFinished(id, SongList());
}
}
--- src/ui/mainwindow.cpp
+++ src/ui/mainwindow.cpp
@@ -700,7 +700,8 @@ MainWindow::MainWindow(
connect(player_->playlists()->sequence(), SIGNAL(ShuffleModeChanged(PlaylistSequence::ShuffleMode)), osd_, SLOT(ShuffleModeChanged(PlaylistSequence::ShuffleMode)));
#ifdef HAVE_LIBLASTFM
- connect(InternetModel::Service<LastFMService>(), SIGNAL(ScrobblerStatus(int)), SLOT(ScrobblerStatus(int)));
+ connect(InternetModel::Service<LastFMService>(), SIGNAL(ScrobbleSubmitted()), SLOT(ScrobbleSubmitted()));
+ connect(InternetModel::Service<LastFMService>(), SIGNAL(ScrobbleError(int)), SLOT(ScrobbleError(int)));
LastFMButtonVisibilityChanged(internet_model_->InternetModel::Service<LastFMService>()->AreButtonsVisible());
ScrobbleButtonVisibilityChanged(internet_model_->InternetModel::Service<LastFMService>()->IsScrobbleButtonVisible());
@@ -2201,30 +2202,26 @@ void MainWindow::SetToggleScrobblingIcon
}
#ifdef HAVE_LIBLASTFM
-void MainWindow::ScrobblerStatus(int value) {
+void MainWindow::ScrobbleSubmitted() {
const LastFMService* lastfm_service = InternetModel::Service<LastFMService>();
const bool last_fm_enabled = ui_->action_toggle_scrobbling->isVisible() &&
lastfm_service->IsScrobblingEnabled() &&
lastfm_service->IsAuthenticated();
+ playlists_->active()->set_lastfm_status(Playlist::LastFM_Scrobbled);
+ // update the button icon
+ if (last_fm_enabled)
+ ui_->action_toggle_scrobbling->setIcon(QIcon(":/last.fm/as.png"));
+}
+
+void MainWindow::ScrobbleError(int value) {
+
switch (value) {
case -1:
// custom error value got from initial validity check
playlists_->active()->set_lastfm_status(Playlist::LastFM_Invalid);
break;
- case 2:
- case 3:
- // we should get 3 for a correct scrobbling, but I just get 2 for
- // mysterious reasons
- // seems to scrobble fine though, so for now we accept it as correct
- playlists_->active()->set_lastfm_status(Playlist::LastFM_Scrobbled);
-
- // update the button icon
- if (last_fm_enabled)
- ui_->action_toggle_scrobbling->setIcon(QIcon(":/last.fm/as.png"));
- break;
-
case 30:
// Hack: when offline, liblastfm doesn't inform us, so set the status
// as queued; in this way we won't try to scrobble again, it will be done automatically
--- src/ui/mainwindow.h
+++ src/ui/mainwindow.h
@@ -224,7 +224,8 @@ class MainWindow : public QMainWindow, p
void ShowCoverManager();
#ifdef HAVE_LIBLASTFM
- void ScrobblerStatus(int value);
+ void ScrobbleSubmitted();
+ void ScrobbleError(int value);
#endif
void ShowAboutDialog();
void ShowTranscodeDialog();
--- tests/mpris1_test.cpp
+++ tests/mpris1_test.cpp
@@ -22,7 +22,7 @@
#include "playlist/playlistsequence.h"
#ifdef HAVE_LIBLASTFM
#include "internet/fixlastfm.h"
-#include <lastfm/Track>
+#include <lastfm/Track.h>
#endif
#include "gmock/gmock.h"
--- tests/song_test.cpp
+++ tests/song_test.cpp
@@ -20,7 +20,7 @@
#include "core/song.h"
#ifdef HAVE_LIBLASTFM
#include "internet/fixlastfm.h"
-#include <lastfm/Track>
+#include <lastfm/Track.h>
#endif
#include "gmock/gmock.h"
^ permalink raw reply [flat|nested] 2+ messages in thread
* [gentoo-commits] gentoo-x86 commit in media-sound/clementine/files: clementine-1.0.1-liblastfm-1.patch
@ 2013-02-03 16:46 Samuli Suominen (ssuominen)
0 siblings, 0 replies; 2+ messages in thread
From: Samuli Suominen (ssuominen) @ 2013-02-03 16:46 UTC (permalink / raw
To: gentoo-commits
ssuominen 13/02/03 16:46:18
Removed: clementine-1.0.1-liblastfm-1.patch
Log:
old
(Portage version: 2.2.0_alpha161/cvs/Linux x86_64, signed Manifest commit with key 4868F14D)
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-02-03 16:46 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-03 16:46 [gentoo-commits] gentoo-x86 commit in media-sound/clementine/files: clementine-1.0.1-liblastfm-1.patch Samuli Suominen (ssuominen)
-- strict thread matches above, loose matches on Subject: below --
2012-07-07 8:03 Samuli Suominen (ssuominen)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox