{pageTitle('Admin · Integrations')}

Integrations

{#if config.data?.enabled} Lidarr · connected {:else} Lidarr · unset {/if}

Lidarr

Search Lidarr from /discover and route approved requests to it.

{#if testResult} {#if testResult.ok}

Connected — Lidarr {testResult.version}

{:else}

Connection failed — {testResult.error}

{/if} {/if} {#if saveError}

Save failed — {saveError}

{/if}

MusicBrainz overrides

unset

Not yet configured.

Cover art providers

External sources for album covers and artist images. Providers are tried in registration order; first hit wins.

{#if coverProvidersQ.data} {#each coverProvidersQ.data.providers as provider (provider.id)}

{provider.display_name}

{#each provider.supports as cap} {cap.replace('_', ' ')} {/each}
{#if coverLocalState[provider.id]}
{#if provider.requires_api_key}
{#if provider.api_key_set} ✓ Set {/if}
{/if}
{#if provider.testable} {/if} {#if coverTestResults[provider.id]} {#if coverTestResults[provider.id].ok}

OK{coverTestResults[provider.id].duration_ms ? ` (${coverTestResults[provider.id].duration_ms}ms)` : ''}

{:else}

Failed — {coverTestResults[provider.id].error}

{/if} {/if}
{/if} {#if provider.id === 'theaudiodb'}

Public test key works out of the box. A free personal key gives separate quota accounting — apply at theaudiodb.com/api_apply.php.

{/if}
{/each} {:else if coverProvidersQ.isPending}

Loading…

{:else}

No providers registered.

{/if}

Tag enrichment sources

Folksonomy style/mood tags fetched per track and folded into each listener's taste profile alongside the raw file genre — so "Rock" gains "post-punk / shoegaze / melancholic". All enabled sources are merged. Enabling or disabling a source re-opens previously-processed tracks for a fresh pass.

{#if tagProvidersQ.data} {#each tagProvidersQ.data.providers as provider (provider.id)}

{provider.display_name}

{#each provider.supports as cap} {cap.replace('_', ' ')} {/each}
{#if tagLocalState[provider.id]}
{#if provider.requires_api_key}
{#if provider.api_key_set} ✓ Set {/if}
{/if}
{#if provider.testable} {/if} {#if tagTestResults[provider.id]} {#if tagTestResults[provider.id].ok}

OK{tagTestResults[provider.id].duration_ms ? ` (${tagTestResults[provider.id].duration_ms}ms)` : ''}

{:else}

Failed — {tagTestResults[provider.id].error}

{/if} {/if}
{/if} {#if provider.id === 'musicbrainz'}

Keyless and on by default — the always-available baseline. Matches tags by recording MBID, so coverage tracks how well your library is MusicBrainz-tagged.

{:else if provider.id === 'lastfm'}

Name-based (artist + title), so it covers tracks without an MBID. Requires a free API key — get one at last.fm/api.

{/if}
{/each} {:else if tagProvidersQ.isPending}

Loading…

{:else}

No providers registered.

{/if}

Email (SMTP)

Configure outgoing email for password resets. The "Send test email" button verifies your config end-to-end.

TLS

This clears the saved configuration. Type DISCONNECT to remove the Lidarr connection.

{#if disconnectError}

Disconnect failed — {disconnectError}

{/if}