Add support for `prefer album artist` option to ListenBrainz
This commit is contained in:
parent
f41a3b9bb2
commit
07d88e86a2
|
@ -46,6 +46,7 @@
|
||||||
#include "core/timeconstants.h"
|
#include "core/timeconstants.h"
|
||||||
#include "core/logging.h"
|
#include "core/logging.h"
|
||||||
#include "internet/localredirectserver.h"
|
#include "internet/localredirectserver.h"
|
||||||
|
#include "settings/scrobblersettingspage.h"
|
||||||
|
|
||||||
#include "audioscrobbler.h"
|
#include "audioscrobbler.h"
|
||||||
#include "scrobblerservice.h"
|
#include "scrobblerservice.h"
|
||||||
|
@ -76,7 +77,8 @@ ListenBrainzScrobbler::ListenBrainzScrobbler(Application *app, QObject *parent)
|
||||||
submitted_(false),
|
submitted_(false),
|
||||||
scrobbled_(false),
|
scrobbled_(false),
|
||||||
timestamp_(0),
|
timestamp_(0),
|
||||||
submit_error_(false) {
|
submit_error_(false),
|
||||||
|
prefer_albumartist_(false) {
|
||||||
|
|
||||||
refresh_login_timer_.setSingleShot(true);
|
refresh_login_timer_.setSingleShot(true);
|
||||||
QObject::connect(&refresh_login_timer_, &QTimer::timeout, this, &ListenBrainzScrobbler::RequestNewAccessToken);
|
QObject::connect(&refresh_login_timer_, &QTimer::timeout, this, &ListenBrainzScrobbler::RequestNewAccessToken);
|
||||||
|
@ -114,6 +116,10 @@ void ListenBrainzScrobbler::ReloadSettings() {
|
||||||
user_token_ = s.value("user_token").toString();
|
user_token_ = s.value("user_token").toString();
|
||||||
s.endGroup();
|
s.endGroup();
|
||||||
|
|
||||||
|
s.beginGroup(ScrobblerSettingsPage::kSettingsGroup);
|
||||||
|
prefer_albumartist_ = s.value("albumartist", false).toBool();
|
||||||
|
s.endGroup();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ListenBrainzScrobbler::LoadSession() {
|
void ListenBrainzScrobbler::LoadSession() {
|
||||||
|
@ -429,7 +435,7 @@ void ListenBrainzScrobbler::UpdateNowPlaying(const Song &song) {
|
||||||
title = title.remove(Song::kTitleRemoveMisc);
|
title = title.remove(Song::kTitleRemoveMisc);
|
||||||
|
|
||||||
QJsonObject object_track_metadata;
|
QJsonObject object_track_metadata;
|
||||||
if (song.albumartist().isEmpty() || song.albumartist().compare(Song::kVariousArtists, Qt::CaseInsensitive) == 0) {
|
if (!prefer_albumartist_ || song.albumartist().isEmpty() || song.albumartist().compare(Song::kVariousArtists, Qt::CaseInsensitive) == 0) {
|
||||||
object_track_metadata.insert("artist_name", QJsonValue::fromVariant(song.artist()));
|
object_track_metadata.insert("artist_name", QJsonValue::fromVariant(song.artist()));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -552,7 +558,7 @@ void ListenBrainzScrobbler::Submit() {
|
||||||
QJsonObject object_listen;
|
QJsonObject object_listen;
|
||||||
object_listen.insert("listened_at", QJsonValue::fromVariant(item->timestamp_));
|
object_listen.insert("listened_at", QJsonValue::fromVariant(item->timestamp_));
|
||||||
QJsonObject object_track_metadata;
|
QJsonObject object_track_metadata;
|
||||||
if (item->albumartist_.isEmpty() || item->albumartist_.compare(Song::kVariousArtists, Qt::CaseInsensitive) == 0) {
|
if (!prefer_albumartist_ || item->albumartist_.isEmpty() || item->albumartist_.compare(Song::kVariousArtists, Qt::CaseInsensitive) == 0) {
|
||||||
object_track_metadata.insert("artist_name", QJsonValue::fromVariant(item->artist_));
|
object_track_metadata.insert("artist_name", QJsonValue::fromVariant(item->artist_));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -120,6 +120,8 @@ class ListenBrainzScrobbler : public ScrobblerService {
|
||||||
QTimer timer_submit_;
|
QTimer timer_submit_;
|
||||||
bool submit_error_;
|
bool submit_error_;
|
||||||
|
|
||||||
|
bool prefer_albumartist_;
|
||||||
|
|
||||||
QList<QNetworkReply*> replies_;
|
QList<QNetworkReply*> replies_;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue