Rewrite MusicBrainzClient

Use Json instead of XML, make Disc ID requests respect rate limiting, handle sort names.
This commit is contained in:
Jonas Kvinge
2025-10-05 21:42:14 +02:00
parent 330284f03e
commit 1d0d03ed83
8 changed files with 542 additions and 508 deletions

View File

@@ -2,7 +2,7 @@
* Strawberry Music Player
* This file was part of Clementine.
* Copyright 2010, David Sansome <me@davidsansome.com>
* Copyright 2019-2021, Jonas Kvinge <jonas@jkvinge.net>
* Copyright 2019-2025, Jonas Kvinge <jonas@jkvinge.net>
*
* Strawberry is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -89,6 +89,7 @@ TrackSelectionDialog::TrackSelectionDialog(const SharedPtr<TagReaderClient> tagr
ui_->results->setColumnWidth(2, 160); // Title column
ui_->results->setColumnWidth(3, 160); // Artist column
ui_->results->setColumnWidth(4, 160); // Album column
ui_->results->setColumnWidth(5, 160); // Album artist column
}
@@ -228,10 +229,15 @@ void TrackSelectionDialog::AddDivider(const QString &text, QTreeWidget *parent)
}
void TrackSelectionDialog::AddSong(const Song &song, int result_index, QTreeWidget *parent) {
void TrackSelectionDialog::AddSong(const Song &song, const int result_index, QTreeWidget *parent) {
QStringList values;
values << ((song.track() > 0) ? QString::number(song.track()) : QString()) << ((song.year() > 0) ? QString::number(song.year()) : QString()) << song.title() << song.artist() << song.album();
values << ((song.track() > 0) ? QString::number(song.track()) : QString())
<< ((song.year() > 0) ? QString::number(song.year()) : QString())
<< song.title()
<< song.artist()
<< song.album()
<< song.albumartist();
QTreeWidgetItem *item = new QTreeWidgetItem(parent, values);
item->setData(0, Qt::UserRole, result_index);
@@ -275,6 +281,9 @@ void TrackSelectionDialog::SaveData(const QList<Data> &_data) const {
Song copy(ref.original_song_);
copy.set_title(new_metadata.title());
copy.set_artist(new_metadata.artist());
copy.set_artistsort(new_metadata.artistsort());
copy.set_albumartist(new_metadata.albumartist());
copy.set_albumartistsort(new_metadata.albumartistsort());
copy.set_album(new_metadata.album());
copy.set_track(new_metadata.track());
copy.set_year(new_metadata.year());