Added last.fm support to scrobble data, fixes #138

This commit is contained in:
emeric
2026-06-09 22:56:59 +02:00
parent 709a1509b6
commit f8aa2ed17d
33 changed files with 1548 additions and 45 deletions
+16
View File
@@ -343,8 +343,24 @@
<message id="Lms.Settings.audio">Audio</message>
<message id="Lms.Settings.audio-settings-are-local">These audio settings are local to your browser</message>
<message id="Lms.Settings.backend.internal">Internal</message>
<message id="Lms.Settings.backend.lastfm">Last.fm</message>
<message id="Lms.Settings.services.lastfm-api-key">Last.fm API key</message>
<message id="Lms.Settings.services.lastfm-api-secret">Last.fm API secret</message>
<message id="Lms.Settings.backend.listenbrainz">ListenBrainz</message>
<message id="Lms.Settings.backend.listenbrainz-token">ListenBrainz API token</message>
<message id="Lms.Settings.services.lastfm-card-title">Last.fm account</message>
<message id="Lms.Settings.services.lastfm-linked">Linked</message>
<message id="Lms.Settings.services.lastfm-link">Link account</message>
<message id="Lms.Settings.services.lastfm-unlink">Unlink account</message>
<message id="Lms.Settings.services.lastfm-link-modal-title">Link Last.fm account</message>
<message id="Lms.Settings.services.lastfm-link-modal-help">Enter your Last.fm API key and shared secret (get them at <a href="https://www.last.fm/api/account/create" target="_blank">last.fm/api/account/create</a>), then click Authorize.</message>
<message id="Lms.Settings.services.lastfm-authorize">Authorize on Last.fm</message>
<message id="Lms.Settings.services.lastfm-done">Done, I've authorized</message>
<message id="Lms.Settings.services.lastfm-auth-url">Didn't open? Click here to authorize on Last.fm</message>
<message id="Lms.Settings.services.lastfm-unlink-confirm-title">Unlink Last.fm account</message>
<message id="Lms.Settings.services.lastfm-unlink-confirm-body">Are you sure you want to unlink your Last.fm account? Scrobbling will stop until you link again.</message>
<message id="Lms.Settings.services.lastfm-missing-credentials">Please enter your Last.fm API key and secret.</message>
<message id="Lms.Settings.services.lastfm-auth-error">Last.fm authentication failed. Check your API key and secret.</message>
<message id="Lms.Settings.change-password">Change password</message>
<message id="Lms.Settings.date-asc">Release Date (Ascending)</message>
<message id="Lms.Settings.date-desc">Release Date (Descending)</message>
+16
View File
@@ -345,6 +345,22 @@
<message id="Lms.Settings.backend.internal">Interno</message>
<message id="Lms.Settings.backend.listenbrainz">ListenBrainz</message>
<message id="Lms.Settings.backend.listenbrainz-token">Token de la API de ListenBrainz</message>
<message id="Lms.Settings.backend.lastfm">Last.fm</message>
<message id="Lms.Settings.services.lastfm-api-key">Clave API de Last.fm</message>
<message id="Lms.Settings.services.lastfm-api-secret">Secreto de API de Last.fm</message>
<message id="Lms.Settings.services.lastfm-card-title">Cuenta de Last.fm</message>
<message id="Lms.Settings.services.lastfm-linked">Vinculado</message>
<message id="Lms.Settings.services.lastfm-link">Vincular cuenta</message>
<message id="Lms.Settings.services.lastfm-unlink">Desvincular cuenta</message>
<message id="Lms.Settings.services.lastfm-link-modal-title">Vincular cuenta de Last.fm</message>
<message id="Lms.Settings.services.lastfm-link-modal-help">Introduce tu clave API y secreto compartido de Last.fm (obténlos en <a href="https://www.last.fm/api/account/create" target="_blank">last.fm/api/account/create</a>), luego haz clic en Autorizar.</message>
<message id="Lms.Settings.services.lastfm-authorize">Autorizar en Last.fm</message>
<message id="Lms.Settings.services.lastfm-done">Hecho, he autorizado</message>
<message id="Lms.Settings.services.lastfm-auth-url">¿No se abrió? Haz clic aquí para autorizar en Last.fm</message>
<message id="Lms.Settings.services.lastfm-unlink-confirm-title">Desvincular cuenta de Last.fm</message>
<message id="Lms.Settings.services.lastfm-unlink-confirm-body">¿Estás seguro de que deseas desvincular tu cuenta de Last.fm? El scrobbling se detendrá hasta que vuelvas a vincularla.</message>
<message id="Lms.Settings.services.lastfm-missing-credentials">Por favor, introduce tu clave API y secreto de Last.fm.</message>
<message id="Lms.Settings.services.lastfm-auth-error">Error de autenticación de Last.fm. Comprueba tu clave API y secreto.</message>
<message id="Lms.Settings.change-password">Cambiar contraseña</message>
<message id="Lms.Settings.date-asc">Fecha de publicación (Ascendiente)</message>
<message id="Lms.Settings.date-desc">Fecha de publicación (Descendiente)</message>
+22 -6
View File
@@ -345,6 +345,22 @@
<message id="Lms.Settings.backend.internal">Interne</message>
<message id="Lms.Settings.backend.listenbrainz">ListenBrainz</message>
<message id="Lms.Settings.backend.listenbrainz-token">Jeton d'API ListenBrainz</message>
<message id="Lms.Settings.backend.lastfm">Last.fm</message>
<message id="Lms.Settings.services.lastfm-api-key">Clef API Last.fm</message>
<message id="Lms.Settings.services.lastfm-api-secret">Secret API Last.fm</message>
<message id="Lms.Settings.services.lastfm-card-title">Compte Last.fm</message>
<message id="Lms.Settings.services.lastfm-linked">Lié</message>
<message id="Lms.Settings.services.lastfm-link">Lier le compte</message>
<message id="Lms.Settings.services.lastfm-unlink">Délier le compte</message>
<message id="Lms.Settings.services.lastfm-link-modal-title">Lier le compte Last.fm</message>
<message id="Lms.Settings.services.lastfm-link-modal-help">Entrez votre clef API et votre secret partagé Last.fm (obtenez-les sur <a href="https://www.last.fm/api/account/create" target="_blank">last.fm/api/account/create</a>), puis cliquez sur Autoriser.</message>
<message id="Lms.Settings.services.lastfm-authorize">Autoriser sur Last.fm</message>
<message id="Lms.Settings.services.lastfm-done">Terminé, j'ai autorisé</message>
<message id="Lms.Settings.services.lastfm-auth-url">Pas ouvert ? Cliquez ici pour autoriser sur Last.fm</message>
<message id="Lms.Settings.services.lastfm-unlink-confirm-title">Délier le compte Last.fm</message>
<message id="Lms.Settings.services.lastfm-unlink-confirm-body">Êtes-vous sûr de vouloir délier votre compte Last.fm ? Le scrobbling s'arrêtera jusqu'à ce que vous le reliiez.</message>
<message id="Lms.Settings.services.lastfm-missing-credentials">Veuillez entrer votre clef API et votre secret Last.fm.</message>
<message id="Lms.Settings.services.lastfm-auth-error">Échec de l'authentification Last.fm. Vérifiez votre clef API et votre secret.</message>
<message id="Lms.Settings.change-password">Changement de mot de passe</message>
<message id="Lms.Settings.date-asc">Date de sortie (Croissant)</message>
<message id="Lms.Settings.date-desc">Date de sortie (Décroissant)</message>
@@ -366,13 +382,13 @@
<message id="Lms.Settings.password-bad">Mauvais mot de passe</message>
<message id="Lms.Settings.password-must-fill-old-password">L'ancien mot de passe doit être renseigné</message>
<message id="Lms.Settings.generate-token">Regénérer</message>
<message id="Lms.Settings.subsonic-token-copied">Clé API copiée dans le presse-papiers !</message>
<message id="Lms.Settings.subsonic-token-copied">Clef API copiée dans le presse-papiers !</message>
<message id="Lms.Settings.subsonic-token-del-confirm">Supprimer</message>
<message id="Lms.Settings.subsonic-token-del-confirm-body">Supprimer la clé déconnectera tous les clients qui l'utilisent actuellement.</message>
<message id="Lms.Settings.subsonic-token-del-confirm-title">Supprimer la clé API ?</message>
<message id="Lms.Settings.subsonic-token-del-confirm-body">Supprimer la clef déconnectera tous les clients qui l'utilisent actuellement.</message>
<message id="Lms.Settings.subsonic-token-del-confirm-title">Supprimer la clef API ?</message>
<message id="Lms.Settings.subsonic-token-regen-confirm">Regénérer</message>
<message id="Lms.Settings.subsonic-token-regen-confirm-body">Générer une nouvelle clé invalidera tous les clients utilisant actuellement la clé existante.</message>
<message id="Lms.Settings.subsonic-token-regen-confirm-title">Regénérer la clé API ?</message>
<message id="Lms.Settings.subsonic-token-regen-confirm-body">Générer une nouvelle clef invalidera tous les clients utilisant actuellement la clef existante.</message>
<message id="Lms.Settings.subsonic-token-regen-confirm-title">Regénérer la clef API ?</message>
<message id="Lms.Settings.replaygain-mode">Mode ReplayGain</message>
<message id="Lms.Settings.replaygain-mode.none">Pas de ReplayGain</message>
<message id="Lms.Settings.replaygain-mode.auto">Automatique</message>
@@ -390,7 +406,7 @@
<message id="Lms.Settings.subsonic-artist-list-mode.track-artists">Tous les artistes de piste</message>
<message id="Lms.Settings.subsonic-api">API Subsonic</message>
<message id="Lms.Settings.subsonic-token">Clef pour l'API OpenSubsonic</message>
<message id="Lms.Settings.subsonic-token-usage">Utilisez cette clé d'API comme mot de passe pour les clients qui ne prennent pas en charge l'extension 'API Key Authentication'</message>
<message id="Lms.Settings.subsonic-token-usage">Utilisez cette clef d'API comme mot de passe pour les clients qui ne prennent pas en charge l'extension 'API Key Authentication'</message>
<message id="Lms.Settings.transcoding">Transcodage</message>
<message id="Lms.Settings.transcoding-mode">Appliquer le transcodage</message>
<message id="Lms.Settings.transcoding-mode.always">Toujours</message>
+16
View File
@@ -345,6 +345,22 @@
<message id="Lms.Settings.backend.internal">Interno</message>
<message id="Lms.Settings.backend.listenbrainz">ListenBrainz</message>
<message id="Lms.Settings.backend.listenbrainz-token">Token API ListenBrainz</message>
<message id="Lms.Settings.backend.lastfm">Last.fm</message>
<message id="Lms.Settings.services.lastfm-api-key">Chiave API Last.fm</message>
<message id="Lms.Settings.services.lastfm-api-secret">Segreto API Last.fm</message>
<message id="Lms.Settings.services.lastfm-card-title">Account Last.fm</message>
<message id="Lms.Settings.services.lastfm-linked">Collegato</message>
<message id="Lms.Settings.services.lastfm-link">Collega account</message>
<message id="Lms.Settings.services.lastfm-unlink">Scollega account</message>
<message id="Lms.Settings.services.lastfm-link-modal-title">Collega account Last.fm</message>
<message id="Lms.Settings.services.lastfm-link-modal-help">Inserisci la chiave API e il segreto condiviso di Last.fm (ottenili su <a href="https://www.last.fm/api/account/create" target="_blank">last.fm/api/account/create</a>), poi clicca su Autorizza.</message>
<message id="Lms.Settings.services.lastfm-authorize">Autorizza su Last.fm</message>
<message id="Lms.Settings.services.lastfm-done">Fatto, ho autorizzato</message>
<message id="Lms.Settings.services.lastfm-auth-url">Non si è aperto? Clicca qui per autorizzare su Last.fm</message>
<message id="Lms.Settings.services.lastfm-unlink-confirm-title">Scollega account Last.fm</message>
<message id="Lms.Settings.services.lastfm-unlink-confirm-body">Sei sicuro di voler scollegare il tuo account Last.fm? Lo scrobbling si interromperà finché non lo ricolleghi.</message>
<message id="Lms.Settings.services.lastfm-missing-credentials">Inserisci la chiave API e il segreto Last.fm.</message>
<message id="Lms.Settings.services.lastfm-auth-error">Autenticazione Last.fm fallita. Controlla la chiave API e il segreto.</message>
<message id="Lms.Settings.change-password">Cambia password</message>
<message id="Lms.Settings.date-asc">Data di uscita (Crescente)</message>
<message id="Lms.Settings.date-desc">Data di uscita (Decrescente)</message>
+16
View File
@@ -371,6 +371,22 @@
<message id="Lms.Settings.backend.internal">Wewnętrzny</message>
<message id="Lms.Settings.backend.listenbrainz">ListenBrainz</message>
<message id="Lms.Settings.backend.listenbrainz-token">ListenBrainz API token</message>
<message id="Lms.Settings.backend.lastfm">Last.fm</message>
<message id="Lms.Settings.services.lastfm-api-key">Klucz API Last.fm</message>
<message id="Lms.Settings.services.lastfm-api-secret">Sekret API Last.fm</message>
<message id="Lms.Settings.services.lastfm-card-title">Konto Last.fm</message>
<message id="Lms.Settings.services.lastfm-linked">Połączono</message>
<message id="Lms.Settings.services.lastfm-link">Połącz konto</message>
<message id="Lms.Settings.services.lastfm-unlink">Odłącz konto</message>
<message id="Lms.Settings.services.lastfm-link-modal-title">Połącz konto Last.fm</message>
<message id="Lms.Settings.services.lastfm-link-modal-help">Wprowadź klucz API i współdzielony sekret Last.fm (uzyskaj je na <a href="https://www.last.fm/api/account/create" target="_blank">last.fm/api/account/create</a>), następnie kliknij Autoryzuj.</message>
<message id="Lms.Settings.services.lastfm-authorize">Autoryzuj na Last.fm</message>
<message id="Lms.Settings.services.lastfm-done">Gotowe, autoryzowałem</message>
<message id="Lms.Settings.services.lastfm-auth-url">Nie otworzyło się? Kliknij tutaj, aby autoryzować na Last.fm</message>
<message id="Lms.Settings.services.lastfm-unlink-confirm-title">Odłącz konto Last.fm</message>
<message id="Lms.Settings.services.lastfm-unlink-confirm-body">Czy na pewno chcesz odłączyć swoje konto Last.fm? Scrobbling zostanie zatrzymany do czasu ponownego połączenia.</message>
<message id="Lms.Settings.services.lastfm-missing-credentials">Wprowadź klucz API i sekret Last.fm.</message>
<message id="Lms.Settings.services.lastfm-auth-error">Uwierzytelnianie Last.fm nie powiodło się. Sprawdź klucz API i sekret.</message>
<message id="Lms.Settings.change-password">Zmień hasło</message>
<message id="Lms.Settings.date-asc">Data wydania (Rosnąco)</message>
<message id="Lms.Settings.date-desc">Data wydania (Malejąco)</message>
+16
View File
@@ -316,6 +316,22 @@
<message id="Lms.Settings.backend.internal">内部</message>
<message id="Lms.Settings.backend.listenbrainz">ListenBrainz</message>
<message id="Lms.Settings.backend.listenbrainz-token">ListenBrainz API 令牌</message>
<message id="Lms.Settings.backend.lastfm">Last.fm</message>
<message id="Lms.Settings.services.lastfm-api-key">Last.fm API 密钥</message>
<message id="Lms.Settings.services.lastfm-api-secret">Last.fm API 共享密钥</message>
<message id="Lms.Settings.services.lastfm-card-title">Last.fm 账户</message>
<message id="Lms.Settings.services.lastfm-linked">已关联</message>
<message id="Lms.Settings.services.lastfm-link">关联账户</message>
<message id="Lms.Settings.services.lastfm-unlink">取消关联账户</message>
<message id="Lms.Settings.services.lastfm-link-modal-title">关联 Last.fm 账户</message>
<message id="Lms.Settings.services.lastfm-link-modal-help">输入您的 Last.fm API 密钥和共享密钥(从 <a href="https://www.last.fm/api/account/create" target="_blank">last.fm/api/account/create</a> 获取),然后点击授权。</message>
<message id="Lms.Settings.services.lastfm-authorize">在 Last.fm 上授权</message>
<message id="Lms.Settings.services.lastfm-done">完成,我已授权</message>
<message id="Lms.Settings.services.lastfm-auth-url">未打开?点击此处在 Last.fm 上授权</message>
<message id="Lms.Settings.services.lastfm-unlink-confirm-title">取消关联 Last.fm 账户</message>
<message id="Lms.Settings.services.lastfm-unlink-confirm-body">您确定要取消关联 Last.fm 账户吗?在重新关联之前,scrobbling 将停止。</message>
<message id="Lms.Settings.services.lastfm-missing-credentials">请输入您的 Last.fm API 密钥和共享密钥。</message>
<message id="Lms.Settings.services.lastfm-auth-error">Last.fm 认证失败。请检查您的 API 密钥和共享密钥。</message>
<message id="Lms.Settings.change-password">更改密码</message>
<message id="Lms.Settings.date-asc">发行日期(升序)</message>
<message id="Lms.Settings.date-desc">发行日期(降序)</message>
+60
View File
@@ -39,4 +39,64 @@
${save-btn class="btn btn-primary me-1"}${discard-btn class="btn btn-secondary"}
</message>
<message id="Lms.Settings.services.lastfm.template.card">
<div class="card mt-3">
<div class="card-header d-flex align-items-center gap-2">
${tr:Lms.Settings.services.lastfm-card-title}
${card-header-badge}
</div>
<div class="card-body d-flex align-items-center gap-2">
${card-content}
</div>
</div>
</message>
<message id="Lms.Settings.services.lastfm.template.link-modal">
<div class="modal fade" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">${tr:Lms.Settings.services.lastfm-link-modal-title}</h5>
</div>
<div class="modal-body">
<p>${tr:Lms.Settings.services.lastfm-link-modal-help}</p>
<div class="mb-3">
<label class="form-label">${tr:Lms.Settings.services.lastfm-api-key}</label>
${api-key class="form-control"}
</div>
<div class="mb-3">
<label class="form-label">${tr:Lms.Settings.services.lastfm-api-secret}</label>
<div class="input-group">
${api-secret class="form-control"}
${api-secret-visibility-btn class="btn btn-outline-secondary"}
</div>
</div>
${auth-anchor-container}
</div>
<div class="modal-footer">
${authorize-btn class="btn btn-primary me-1"}${done-btn class="btn btn-success me-1"}${cancel-btn class="btn btn-secondary"}
</div>
</div>
</div>
</div>
</message>
<message id="Lms.Settings.services.lastfm.template.unlink-confirm">
<div class="modal fade" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">${tr:Lms.Settings.services.lastfm-unlink-confirm-title}</h5>
</div>
<div class="modal-body">
${tr:Lms.Settings.services.lastfm-unlink-confirm-body}
</div>
<div class="modal-footer">
${confirm-btn class="btn btn-danger me-1"}${cancel-btn class="btn btn-secondary"}
</div>
</div>
</div>
</div>
</message>
</messages>