docs: Add Koito client/source docs

This commit is contained in:
FoxxMD 2025-07-09 16:17:47 +00:00
parent f103563cb7
commit 24ff8f2b0f
3 changed files with 122 additions and 6 deletions

View file

@ -19,6 +19,7 @@ import IcecastConfig from '!!raw-loader!../../../config/icecast.json.example';
import JellyfinConfig from '!!raw-loader!../../../config/jellyfin.json.example';
import JriverfinConfig from '!!raw-loader!../../../config/jriver.json.example';
import KodiConfig from '!!raw-loader!../../../config/kodi.json.example';
import KoitoConfig from '!!raw-loader!../../../config/koito.json.example';
import LastfmConfig from '!!raw-loader!../../../config/lastfm.json.example';
import LastfmEndpointConfig from '!!raw-loader!../../../config/endpointlfm.json.example';
import ListenbrainzConfig from '!!raw-loader!../../../config/listenbrainz.json.example';
@ -876,6 +877,49 @@ Most Listenbrainz clients require a token (Authentication Token) to be provided
</TabItem>
</Tabs>
### [Koito (Source)](https://koito.io/)
This Source monitors a Koito account's scrobble history and then re-scrobbles discovered tracks to configured clients. To instead _scrobble to_ Koito use the [Koito (Client)](#koito) configuration.
See the [Koito (Client)](#koito) configuration for general setup. The only difference for **Source** configuration:
* Cannot be setup with ENV config
* [File/AIO config](./?configType=file#configuration-types) must include `"configureAs": "source"`
#### Configuration
<Tabs groupId="configType" queryString>
<TabItem value="env" label="ENV">
:::note
You cannot use ENV variables shown in the [Koito Client config](#koito) -- multi-scrobbler assumes Koito ENVs are always used for the **client** configuration. You must use the [File or AIO](./?configType=file#configuration-types) config to setup Koito as a Source.
:::
</TabItem>
<TabItem value="file" label="File">
<details>
Change `configureAs` to `source`
<summary>Example</summary>
<FileExample title="CONFIG_DIR/koito.json" data={KoitoConfig}/>
</details>
or <SchemaLink lower objectName="KoitoSourceConfig"/>
</TabItem>
<TabItem value="aio" label="AIO">
<details>
Change `configureAs` to `source`
<summary>Example</summary>
<AIOExample data={KoitoConfig} name="koito"/>
</details>
or <SchemaLink lower objectName="KoitoSourceConfig"/>
</TabItem>
</Tabs>
### [Deezer](https://deezer.com/)
<Tabs groupId="deezerSource" queryString>
@ -2415,7 +2459,7 @@ or replace `localhost:9078` with your own base URL.
### [Listenbrainz](https://listenbrainz.org)
You will need to run your own Listenbrainz server, [Koito](https://koito.io) or have an account [on the official instance](https://listenbrainz.org/login/)
You will need to run your own Listenbrainz server, [Koito](https://koito.io), or have an account [on the official instance](https://listenbrainz.org/login/)
On your [profile page](https://listenbrainz.org/profile/) find your **User Token** to use in the configuration.
@ -2462,6 +2506,77 @@ Ensure that Koito is configured to allow requests from multi-scrobbler! In Koito
</TabItem>
</Tabs>
### [Koito](https://koito.io/)
Setup a [Koito server](https://koito.io/guides/installation/) if you have not already done this.
* [Create (or get) an API Key](https://koito.io/guides/scrobbler/)
* From your Koito server dashboard navigate to **Settings** (bottom-left icon) => **API Keys**
* Create a new Key (or use an existing) and Copy the key using the copy icon to the right of the key
* EX `pM195xPV98CDpk0QW47FIIOR8AKATAX5DblBF-Jq0t1MbbKL`
* Take note of your Koito username (used below as `KOITO_USER`)
* Determine your Koito URL
* This is the URL you use to access your Koito dashboard OR whatever URL is accessible from your multi-scrobbler instance.
* EX dashboard at `http://192.168.0.100:4110` => `KOITO_URL` is set to `http://192.168.0.100:4110`
:::note[Koito Base URL]
Using the URL path `/apis/listenbrainz` [Koito docs describe](https://koito.io/guides/scrobbler/) **is not required.** The Koito URL used for multi-scrobbler should only be the **base** URL. Only include a URL path if your Koito **base** url is not at `host:port`. See the table below for examples.
<details>
<summary>Base URL Examples</summary>
| `KOITO_URL` | MS Detected Base URL | Example Scrobble Api URL |
| :-------------------------------------------- | :------------------------------ | ---------------------------------------------------- |
| `http://192.168.0.100:4110` | `http://192.168.0.100:4110` | `http://192.168.0.100:4110/apis/listenbrainz/1` |
| `https://koito.mydomain.com` | `https://koito.mydomain.com` | `https://koito.mydomain.com/apis/listenbrainz/1` |
| `http://192.168.0.100:4110/apis/listenbrainz` | `http://192.168.0.100:4110` | `http://192.168.0.100:4110/apis/listenbrainz/1` |
| `http://192.168.0.100:80/koito` | `http://192.168.0.100:80/koito` | `http://192.168.0.100:80/koito/apis/listenbrainz/1` |
</details>
:::
:::tip
Ensure that Koito is configured to allow requests from multi-scrobbler! In Koito config set [`KOITO_ALLOWED_HOSTS`](https://koito.io/reference/configuration/#koito_allowed_hosts) to the IP the multi-scrobbler dashboard is accessible from.
:::
#### Configuration
<Tabs groupId="configType" queryString>
<TabItem value="env" label="ENV">
| Environmental Variable | Required? | Default | Description |
| :--------------------- | --------- | ------- | --------------------------------- |
| KOITO_TOKEN | Yes | | API Key from your Koito Account |
| KOITO_USER | Yes | | Your Koito username |
| KOITO_URL | No | | The base URL for the Koito server |
</TabItem>
<TabItem value="file" label="File">
<details>
<summary>Example</summary>
<FileExample title="CONFIG_DIR/koito.json" data={KoitoConfig} client/>
</details>
or <SchemaLink client lower objectName="KoitoClientConfig"/>
</TabItem>
<TabItem value="aio" label="AIO">
<details>
<summary>Example</summary>
<AIOExample client data={KoitoConfig} name="koito" client/>
</details>
or <SchemaLink client lower objectName="KoitoClientConfig"/>
</TabItem>
</Tabs>
## Now Playing
Multi-scrobbler can report the currently **playing** tracks it is monitoring to some Scrobble Clients via their individual **Now Playing** functionality. The behavior multi-scrobbler uses for determining Now Playing reporting: