From 24af1be666702a2f497abb7eda9c92ed74f1ae92 Mon Sep 17 00:00:00 2001 From: Leandro Matheus Date: Sat, 4 Jan 2025 17:11:09 -0300 Subject: [PATCH] Subsonic: Add support for using album id to retrieve album covers --- src/constants/subsonicsettings.h | 1 + src/settings/subsonicsettingspage.cpp | 14 ++++++++++++++ src/settings/subsonicsettingspage.h | 1 + src/settings/subsonicsettingspage.ui | 7 +++++++ src/subsonic/subsonicbaserequest.h | 1 + src/subsonic/subsonicrequest.cpp | 16 ++++++++++++---- src/subsonic/subsonicrequest.h | 1 + src/subsonic/subsonicservice.cpp | 2 ++ src/subsonic/subsonicservice.h | 2 ++ src/translations/strawberry_ca_ES.ts | 4 ++++ src/translations/strawberry_cs_CZ.ts | 4 ++++ src/translations/strawberry_de_DE.ts | 4 ++++ src/translations/strawberry_en_US.ts | 4 ++++ src/translations/strawberry_es_AR.ts | 4 ++++ src/translations/strawberry_es_ES.ts | 4 ++++ src/translations/strawberry_es_MX.ts | 4 ++++ src/translations/strawberry_et_EE.ts | 4 ++++ src/translations/strawberry_fi_FI.ts | 4 ++++ src/translations/strawberry_fr_FR.ts | 4 ++++ src/translations/strawberry_hu_HU.ts | 4 ++++ src/translations/strawberry_id_ID.ts | 4 ++++ src/translations/strawberry_is_IS.ts | 4 ++++ src/translations/strawberry_it_IT.ts | 4 ++++ src/translations/strawberry_ja_JP.ts | 4 ++++ src/translations/strawberry_ko_KR.ts | 4 ++++ src/translations/strawberry_nb_NO.ts | 4 ++++ src/translations/strawberry_nl_NL.ts | 4 ++++ src/translations/strawberry_pl_PL.ts | 4 ++++ src/translations/strawberry_pt_BR.ts | 4 ++++ src/translations/strawberry_ru_RU.ts | 4 ++++ src/translations/strawberry_sv_SE.ts | 4 ++++ src/translations/strawberry_tr_CY.ts | 4 ++++ src/translations/strawberry_tr_TR.ts | 4 ++++ src/translations/strawberry_uk_UA.ts | 4 ++++ src/translations/strawberry_zh_CN.ts | 4 ++++ src/translations/strawberry_zh_TW.ts | 4 ++++ 36 files changed, 149 insertions(+), 4 deletions(-) diff --git a/src/constants/subsonicsettings.h b/src/constants/subsonicsettings.h index f3841549c..8baecc75c 100644 --- a/src/constants/subsonicsettings.h +++ b/src/constants/subsonicsettings.h @@ -37,6 +37,7 @@ constexpr char kPassword[] = "password"; constexpr char kHTTP2[] = "http2"; constexpr char kVerifyCertificate[] = "verifycertificate"; constexpr char kDownloadAlbumCovers[] = "downloadalbumcovers"; +constexpr char kUseAlbumIdForAlbumCovers[] = "usealbumidforalbumcovers"; constexpr char kServerSideScrobbling[] = "serversidescrobbling"; constexpr char kAuthMethod[] = "authmethod"; diff --git a/src/settings/subsonicsettingspage.cpp b/src/settings/subsonicsettingspage.cpp index cf6261051..bf7c5b55d 100644 --- a/src/settings/subsonicsettingspage.cpp +++ b/src/settings/subsonicsettingspage.cpp @@ -51,6 +51,7 @@ SubsonicSettingsPage::SubsonicSettingsPage(SettingsDialog *dialog, const SharedP QObject::connect(ui_->button_test, &QPushButton::clicked, this, &SubsonicSettingsPage::TestClicked); QObject::connect(ui_->button_deletesongs, &QPushButton::clicked, &*service_, &SubsonicService::DeleteSongs); + QObject::connect(ui_->checkbox_download_album_covers, &QCheckBox::toggled, this, &SubsonicSettingsPage::CheckboxDownloadAlbumCoversToggled); QObject::connect(this, &SubsonicSettingsPage::Test, &*service_, &SubsonicService::SendPingWithCredentials); @@ -78,6 +79,7 @@ void SubsonicSettingsPage::Load() { ui_->checkbox_http2->setChecked(s.value(kHTTP2, false).toBool()); ui_->checkbox_verify_certificate->setChecked(s.value(kVerifyCertificate, false).toBool()); ui_->checkbox_download_album_covers->setChecked(s.value(kDownloadAlbumCovers, true).toBool()); + ui_->checkbox_use_album_id_for_album_covers->setChecked(s.value(kUseAlbumIdForAlbumCovers, false).toBool()); ui_->checkbox_server_scrobbling->setChecked(s.value(kServerSideScrobbling, false).toBool()); const AuthMethod auth_method = static_cast(s.value(kAuthMethod, static_cast(AuthMethod::MD5)).toInt()); @@ -90,6 +92,8 @@ void SubsonicSettingsPage::Load() { break; } + ui_->checkbox_use_album_id_for_album_covers->setEnabled(ui_->checkbox_download_album_covers->isChecked()); + s.endGroup(); Init(ui_->layout_subsonicsettingspage->parentWidget()); @@ -109,6 +113,7 @@ void SubsonicSettingsPage::Save() { s.setValue(kHTTP2, ui_->checkbox_http2->isChecked()); s.setValue(kVerifyCertificate, ui_->checkbox_verify_certificate->isChecked()); s.setValue(kDownloadAlbumCovers, ui_->checkbox_download_album_covers->isChecked()); + s.setValue(kUseAlbumIdForAlbumCovers, ui_->checkbox_use_album_id_for_album_covers->isChecked()); s.setValue(kServerSideScrobbling, ui_->checkbox_server_scrobbling->isChecked()); if (ui_->auth_method_hex->isChecked()) { s.setValue(kAuthMethod, static_cast(AuthMethod::Hex)); @@ -116,10 +121,19 @@ void SubsonicSettingsPage::Save() { else { s.setValue(kAuthMethod, static_cast(AuthMethod::MD5)); } + + ui_->checkbox_use_album_id_for_album_covers->setEnabled(ui_->checkbox_download_album_covers->isChecked()); + s.endGroup(); } +void SubsonicSettingsPage::CheckboxDownloadAlbumCoversToggled(bool enabled) { + + ui_->checkbox_use_album_id_for_album_covers->setEnabled(enabled); + +} + void SubsonicSettingsPage::TestClicked() { if (ui_->server_url->text().isEmpty() || ui_->username->text().isEmpty() || ui_->password->text().isEmpty()) { diff --git a/src/settings/subsonicsettingspage.h b/src/settings/subsonicsettingspage.h index 8e8784e12..25b7d970b 100644 --- a/src/settings/subsonicsettingspage.h +++ b/src/settings/subsonicsettingspage.h @@ -51,6 +51,7 @@ class SubsonicSettingsPage : public SettingsPage { void Test(const QUrl &url, const QString &username, const QString &password, const SubsonicSettings::AuthMethod auth_method, const bool redirect = false); private Q_SLOTS: + void CheckboxDownloadAlbumCoversToggled(bool enabled); void TestClicked(); void TestSuccess(); void TestFailure(const QString &failure_reason); diff --git a/src/settings/subsonicsettingspage.ui b/src/settings/subsonicsettingspage.ui index 0b3e868d9..fa826eb64 100644 --- a/src/settings/subsonicsettingspage.ui +++ b/src/settings/subsonicsettingspage.ui @@ -171,6 +171,13 @@ + + + + Use album ID for album covers + + + diff --git a/src/subsonic/subsonicbaserequest.h b/src/subsonic/subsonicbaserequest.h index 8ede47dfb..1e63e18c0 100644 --- a/src/subsonic/subsonicbaserequest.h +++ b/src/subsonic/subsonicbaserequest.h @@ -69,6 +69,7 @@ class SubsonicBaseRequest : public QObject { bool http2() const { return service_->http2(); } bool verify_certificate() const { return service_->verify_certificate(); } bool download_album_covers() const { return service_->download_album_covers(); } + bool use_album_id_for_album_covers() const { return service_->use_album_id_for_album_covers(); } private Q_SLOTS: void HandleSSLErrors(const QList &ssl_errors); diff --git a/src/subsonic/subsonicrequest.cpp b/src/subsonic/subsonicrequest.cpp index cfc80f9bd..5fa17c3a8 100644 --- a/src/subsonic/subsonicrequest.cpp +++ b/src/subsonic/subsonicrequest.cpp @@ -606,12 +606,20 @@ QString SubsonicRequest::ParseSong(Song &song, const QJsonObject &json_obj, cons if (json_obj.contains("genre"_L1)) genre = json_obj["genre"_L1].toString(); QString cover_id; - if (json_obj.contains("coverArt"_L1)) { - if (json_obj["coverArt"_L1].type() == QJsonValue::String) { - cover_id = json_obj["coverArt"_L1].toString(); + if (use_album_id_for_album_covers()) { + cover_id = album_id; + } + else { + if (json_obj.contains("coverArt"_L1)) { + if (json_obj["coverArt"_L1].type() == QJsonValue::String) { + cover_id = json_obj["coverArt"_L1].toString(); + } + else { + cover_id = QString::number(json_obj["coverArt"_L1].toInt()); + } } else { - cover_id = QString::number(json_obj["coverArt"_L1].toInt()); + cover_id = song_id; } } diff --git a/src/subsonic/subsonicrequest.h b/src/subsonic/subsonicrequest.h index fe298363b..7d1efa982 100644 --- a/src/subsonic/subsonicrequest.h +++ b/src/subsonic/subsonicrequest.h @@ -122,6 +122,7 @@ class SubsonicRequest : public SubsonicBaseRequest { QHash album_songs_requests_pending_; QMultiMap album_covers_requests_sent_; + QMultiMap album_covers_retrieved_; int albums_requests_active_; diff --git a/src/subsonic/subsonicservice.cpp b/src/subsonic/subsonicservice.cpp index 5b3b14b87..4f1e6c37d 100644 --- a/src/subsonic/subsonicservice.cpp +++ b/src/subsonic/subsonicservice.cpp @@ -82,6 +82,7 @@ SubsonicService::SubsonicService(const SharedPtr task_manager, http2_(false), verify_certificate_(false), download_album_covers_(true), + use_album_id_for_album_covers_(false), auth_method_(SubsonicSettings::AuthMethod::MD5), ping_redirects_(0) { @@ -128,6 +129,7 @@ void SubsonicService::ReloadSettings() { http2_ = s.value(SubsonicSettings::kHTTP2, false).toBool(); verify_certificate_ = s.value(SubsonicSettings::kVerifyCertificate, false).toBool(); download_album_covers_ = s.value(SubsonicSettings::kDownloadAlbumCovers, true).toBool(); + use_album_id_for_album_covers_ = s.value(SubsonicSettings::kUseAlbumIdForAlbumCovers, false).toBool(); auth_method_ = static_cast(s.value(SubsonicSettings::kAuthMethod, static_cast(SubsonicSettings::AuthMethod::MD5)).toInt()); s.endGroup(); diff --git a/src/subsonic/subsonicservice.h b/src/subsonic/subsonicservice.h index e419102af..725e5eaae 100644 --- a/src/subsonic/subsonicservice.h +++ b/src/subsonic/subsonicservice.h @@ -80,6 +80,7 @@ class SubsonicService : public StreamingService { bool http2() const { return http2_; } bool verify_certificate() const { return verify_certificate_; } bool download_album_covers() const { return download_album_covers_; } + bool use_album_id_for_album_covers() const { return use_album_id_for_album_covers_; } SubsonicSettings::AuthMethod auth_method() const { return auth_method_; } SharedPtr collection_backend() const { return collection_backend_; } @@ -123,6 +124,7 @@ class SubsonicService : public StreamingService { bool http2_; bool verify_certificate_; bool download_album_covers_; + bool use_album_id_for_album_covers_; SubsonicSettings::AuthMethod auth_method_; QStringList errors_; diff --git a/src/translations/strawberry_ca_ES.ts b/src/translations/strawberry_ca_ES.ts index c82c9183a..5f7f36db7 100644 --- a/src/translations/strawberry_ca_ES.ts +++ b/src/translations/strawberry_ca_ES.ts @@ -6633,6 +6633,10 @@ Esteu segur que voleu continuar? Download album covers Download album covers + + Use album ID for album covers + Utilitza l'ID de l'àlbum per a les portades dels àlbums + Server-side scrobbling Server-side scrobbling diff --git a/src/translations/strawberry_cs_CZ.ts b/src/translations/strawberry_cs_CZ.ts index 91e161a10..06fe6f010 100644 --- a/src/translations/strawberry_cs_CZ.ts +++ b/src/translations/strawberry_cs_CZ.ts @@ -6643,6 +6643,10 @@ Opravdu chcete pokračovat? Download album covers Stahovat obaly alb + + Use album ID for album covers + Použijte ID alba pro obaly alb + Server-side scrobbling Server-side scrobbling diff --git a/src/translations/strawberry_de_DE.ts b/src/translations/strawberry_de_DE.ts index e1b090dbe..9dad55c84 100644 --- a/src/translations/strawberry_de_DE.ts +++ b/src/translations/strawberry_de_DE.ts @@ -6633,6 +6633,10 @@ Möchten Sie wirklich fortfahren? Download album covers Titelbilder herunterladen + + Use album ID for album covers + Verwenden Sie die Album-ID für Albumcover + Server-side scrobbling Serverseitiges Scrobbling diff --git a/src/translations/strawberry_en_US.ts b/src/translations/strawberry_en_US.ts index 0c1c046cc..0e82c6881 100644 --- a/src/translations/strawberry_en_US.ts +++ b/src/translations/strawberry_en_US.ts @@ -6629,6 +6629,10 @@ Are you sure you want to continue? Download album covers + + Use album ID for album covers + + Server-side scrobbling diff --git a/src/translations/strawberry_es_AR.ts b/src/translations/strawberry_es_AR.ts index c1d6c47c2..a96acd866 100644 --- a/src/translations/strawberry_es_AR.ts +++ b/src/translations/strawberry_es_AR.ts @@ -6632,6 +6632,10 @@ Are you sure you want to continue? Download album covers Descargar las cubiertas de los álbumes + + Use album ID for album covers + Usá el ID del álbum para las cubiertas de los álbumes + Server-side scrobbling Seguimiento de reproducción en el servidor diff --git a/src/translations/strawberry_es_ES.ts b/src/translations/strawberry_es_ES.ts index c5fc1dbe0..b608a7694 100644 --- a/src/translations/strawberry_es_ES.ts +++ b/src/translations/strawberry_es_ES.ts @@ -6632,6 +6632,10 @@ Are you sure you want to continue? Download album covers Descargar las portadas de los álbumes + + Use album ID for album covers + Usá el ID del álbum para las portadas de los álbumes + Server-side scrobbling Seguimiento de reproducción en el servidor diff --git a/src/translations/strawberry_es_MX.ts b/src/translations/strawberry_es_MX.ts index c1cb5e42e..cd5e15156 100644 --- a/src/translations/strawberry_es_MX.ts +++ b/src/translations/strawberry_es_MX.ts @@ -6632,6 +6632,10 @@ Are you sure you want to continue? Download album covers Descargar las portadas de los álbumes + + Use album ID for album covers + Usá el ID del álbum para las portadas de los álbumes + Server-side scrobbling Seguimiento de reproducción en el servidor diff --git a/src/translations/strawberry_et_EE.ts b/src/translations/strawberry_et_EE.ts index 9739b813a..b67caeb8d 100644 --- a/src/translations/strawberry_et_EE.ts +++ b/src/translations/strawberry_et_EE.ts @@ -6633,6 +6633,10 @@ Kas soovid jätkata? Download album covers Laadi alla albumi kaanepilte + + Use album ID for album covers + Kasuta albumi ID-d albumi kaante jaoks + Server-side scrobbling Serveripoolne kraasimine diff --git a/src/translations/strawberry_fi_FI.ts b/src/translations/strawberry_fi_FI.ts index c02bf0b20..e01667b48 100644 --- a/src/translations/strawberry_fi_FI.ts +++ b/src/translations/strawberry_fi_FI.ts @@ -6633,6 +6633,10 @@ Haluatko varmasti jatkaa? Download album covers Lataa albumien kansikuvat + + Use album ID for album covers + Käytä albumin tunnusta albumin kansille + Server-side scrobbling Server-side scrobbling diff --git a/src/translations/strawberry_fr_FR.ts b/src/translations/strawberry_fr_FR.ts index 2dfec61a2..28ab872f0 100644 --- a/src/translations/strawberry_fr_FR.ts +++ b/src/translations/strawberry_fr_FR.ts @@ -6633,6 +6633,10 @@ Are you sure you want to continue? Download album covers Télécharger des pochettes d'albums + + Use album ID for album covers + Utilisez l'ID de l'album pour les couvertures d'album + Server-side scrobbling Scrobbling côté serveur diff --git a/src/translations/strawberry_hu_HU.ts b/src/translations/strawberry_hu_HU.ts index 857be1909..4ca0db24a 100644 --- a/src/translations/strawberry_hu_HU.ts +++ b/src/translations/strawberry_hu_HU.ts @@ -6634,6 +6634,10 @@ másodpercnél hosszabbak, illetve legalább a felükig vagy 4 percig vannak lej Download album covers Albumborítók letöltése + + Use album ID for album covers + Használja az album azonosítóját az album borítókhoz + Server-side scrobbling Kiszolgálóoldali scrobble funkció diff --git a/src/translations/strawberry_id_ID.ts b/src/translations/strawberry_id_ID.ts index 8260aced2..100866f01 100644 --- a/src/translations/strawberry_id_ID.ts +++ b/src/translations/strawberry_id_ID.ts @@ -6628,6 +6628,10 @@ Apakah Anda yakin ingin melanjutkan? Download album covers Unduh sampul album + + Use album ID for album covers + Gunakan ID album untuk sampul album + Server-side scrobbling Server-side scrobbling diff --git a/src/translations/strawberry_is_IS.ts b/src/translations/strawberry_is_IS.ts index 53c2e7ae7..2e385567d 100644 --- a/src/translations/strawberry_is_IS.ts +++ b/src/translations/strawberry_is_IS.ts @@ -6633,6 +6633,10 @@ Ertu viss um að þú viljir halda áfram? Download album covers Sækja plötuumslög + + Use album ID for album covers + Notaðu albumi ID fyrir album fyrirsagnir. + Server-side scrobbling Skráning á hlustunarvenjum (scrobbling) á netþjóni diff --git a/src/translations/strawberry_it_IT.ts b/src/translations/strawberry_it_IT.ts index a85860039..d6e0b70e1 100644 --- a/src/translations/strawberry_it_IT.ts +++ b/src/translations/strawberry_it_IT.ts @@ -6645,6 +6645,10 @@ Per ulteriori informazioni vedi '%1' . Download album covers Scarica copertine album + + Use album ID for album covers + Usa l'ID dell'album per le copertine degli album + Server-side scrobbling Scrobbling lato server diff --git a/src/translations/strawberry_ja_JP.ts b/src/translations/strawberry_ja_JP.ts index 923ef1e67..9cb78b1c2 100644 --- a/src/translations/strawberry_ja_JP.ts +++ b/src/translations/strawberry_ja_JP.ts @@ -6628,6 +6628,10 @@ Are you sure you want to continue? Download album covers アルバムカバーをダウンロード + + Use album ID for album covers + アルバムのIDをアルバムカバーに使用する + Server-side scrobbling サーバーサイドの scrobbling diff --git a/src/translations/strawberry_ko_KR.ts b/src/translations/strawberry_ko_KR.ts index b87a60d36..e968d9754 100644 --- a/src/translations/strawberry_ko_KR.ts +++ b/src/translations/strawberry_ko_KR.ts @@ -6628,6 +6628,10 @@ Are you sure you want to continue? Download album covers 앨범아트 다운로드 중 + + Use album ID for album covers + 앨범 ID를 앨범 커버에 사용하세요 + Server-side scrobbling 서버 사이드 스크로블링 diff --git a/src/translations/strawberry_nb_NO.ts b/src/translations/strawberry_nb_NO.ts index 1a1c1360a..f4c93a74e 100644 --- a/src/translations/strawberry_nb_NO.ts +++ b/src/translations/strawberry_nb_NO.ts @@ -6633,6 +6633,10 @@ Er du sikker? Download album covers Last ned plateomslag + + Use album ID for album covers + Bruk album-ID for albumomslag + Server-side scrobbling Server-siding skrobbling diff --git a/src/translations/strawberry_nl_NL.ts b/src/translations/strawberry_nl_NL.ts index e8b6c4c34..44230357f 100644 --- a/src/translations/strawberry_nl_NL.ts +++ b/src/translations/strawberry_nl_NL.ts @@ -6633,6 +6633,10 @@ Weet je zeker dat je verder wilt gaan? Download album covers Albumhoezen downloaden + + Use album ID for album covers + Gebruik album-ID voor albumhoezen + Server-side scrobbling Server-side scrobbling diff --git a/src/translations/strawberry_pl_PL.ts b/src/translations/strawberry_pl_PL.ts index 25dbd7a9b..e1431e5f8 100644 --- a/src/translations/strawberry_pl_PL.ts +++ b/src/translations/strawberry_pl_PL.ts @@ -6645,6 +6645,10 @@ Na pewno chcesz usunąć? Download album covers Pobieraj okładki albumów + + Use album ID for album covers + Użyj identyfikatora albumu do okładek albumów + Server-side scrobbling Scrobblowanie po stronie serwera. diff --git a/src/translations/strawberry_pt_BR.ts b/src/translations/strawberry_pt_BR.ts index 743493c39..7a3601e1c 100644 --- a/src/translations/strawberry_pt_BR.ts +++ b/src/translations/strawberry_pt_BR.ts @@ -6633,6 +6633,10 @@ Deseja continuar? Download album covers Download album covers + + Use album ID for album covers + Usar o ID do álbum para as capas dos álbuns + Server-side scrobbling Server-side scrobbling diff --git a/src/translations/strawberry_ru_RU.ts b/src/translations/strawberry_ru_RU.ts index 4883a5cdb..bc0ca9a8f 100644 --- a/src/translations/strawberry_ru_RU.ts +++ b/src/translations/strawberry_ru_RU.ts @@ -6643,6 +6643,10 @@ Are you sure you want to continue? Download album covers Скачивать обложки альбомов + + Use album ID for album covers + Используйте ID альбома для обложек альбомов + Server-side scrobbling Скробблинг на стороне сервера diff --git a/src/translations/strawberry_sv_SE.ts b/src/translations/strawberry_sv_SE.ts index 9d592bae0..5e1f494b7 100644 --- a/src/translations/strawberry_sv_SE.ts +++ b/src/translations/strawberry_sv_SE.ts @@ -6633,6 +6633,10 @@ Are you sure you want to continue? Download album covers Hämta albumomslag + + Use album ID for album covers + Använd album-ID för albumomslag + Server-side scrobbling Skrobbling på serversidan diff --git a/src/translations/strawberry_tr_CY.ts b/src/translations/strawberry_tr_CY.ts index 93771d841..206266d62 100644 --- a/src/translations/strawberry_tr_CY.ts +++ b/src/translations/strawberry_tr_CY.ts @@ -6633,6 +6633,10 @@ Are you sure you want to continue? Download album covers Download album covers + + Use album ID for album covers + Albüm kapakları için albüm ID'sini kullanın + Server-side scrobbling Server-side scrobbling diff --git a/src/translations/strawberry_tr_TR.ts b/src/translations/strawberry_tr_TR.ts index 7a8baf19d..13fa67f56 100644 --- a/src/translations/strawberry_tr_TR.ts +++ b/src/translations/strawberry_tr_TR.ts @@ -6633,6 +6633,10 @@ Devam etmek istediğinizden emin misiniz? Download album covers Download album covers + + Use album ID for album covers + Albüm kapakları için albüm ID'sini kullanın + Server-side scrobbling Server-side scrobbling diff --git a/src/translations/strawberry_uk_UA.ts b/src/translations/strawberry_uk_UA.ts index bba3854ee..56315ae26 100644 --- a/src/translations/strawberry_uk_UA.ts +++ b/src/translations/strawberry_uk_UA.ts @@ -6643,6 +6643,10 @@ Are you sure you want to continue? Download album covers Завантажити обкладинки альбомів + + Use album ID for album covers + Використовуйте ID альбому для обкладинок альбомів + Server-side scrobbling Скроблінг на боці сервера diff --git a/src/translations/strawberry_zh_CN.ts b/src/translations/strawberry_zh_CN.ts index 72fcab96a..2a241a375 100644 --- a/src/translations/strawberry_zh_CN.ts +++ b/src/translations/strawberry_zh_CN.ts @@ -6628,6 +6628,10 @@ Are you sure you want to continue? Download album covers 下载专辑封面 + + Use album ID for album covers + 使用专辑ID来获取专辑封面 + Server-side scrobbling Server-side scrobbling diff --git a/src/translations/strawberry_zh_TW.ts b/src/translations/strawberry_zh_TW.ts index a05a35bca..f8a759ae2 100644 --- a/src/translations/strawberry_zh_TW.ts +++ b/src/translations/strawberry_zh_TW.ts @@ -6628,6 +6628,10 @@ Are you sure you want to continue? Download album covers Download album covers + + Use album ID for album covers + 使用專輯ID來獲取專輯封面 + Server-side scrobbling Server-side scrobbling