···23232424</details>
25252626-:::warning[Public Data]
2626+<DetailsAdmo type="warning" summary="Your Data Is Public">
27272828The default Bluesky PDS is **public**, meaning your scrobbles are also public (read-only). This isn't any different than using Last.fm or Listenbrainz, in terms of privacy.
29293030-:::
3030+</DetailsAdmo>
31313232-:::warning[No Scrobbling Guarantee]
3232+<DetailsAdmo type="warning" summary="No Scrobbling Guarantee">
33333434Rocksky **does not guarantee** that every scrobble you send will be persisted. Rocksky's design goal is to store scrobbles with **metdata-complete, 3rd party verifiable track information** so that it can be a metadata-rich discovery platform, rather than an exhaustive scrobble data source-of-truth.
3535···37373838If you need your scrobbles to be 100% captured then you should scrobble to an *additional* [Scrobble Client](/configuration/clients).
39394040-:::
4040+</DetailsAdmo>
41414242## Setup
4343
+4-4
docsite/docs/configuration/clients/tealfm.mdx
···26262727</details>
28282929-:::warning
2929+<DetailsAdmo type="warning" summary="Your Data Is Public">
30303131The default Bluesky PDS is **public**, meaning your scrobbles are also public (read-only). This isn't any different than using Last.fm or Listenbrainz, in terms of privacy.
32323333-:::
3333+</DetailsAdmo>
34343535-:::note
3535+<DetailsAdmo type="note" summary="teal.fm Is Still In Development">
36363737[teal.fm is still in developement](https://notes.teal.fm/3lzlwe6puis2l) and does not have a public website, yet.
3838···4242* use [teal-slice.wisp.place](https://tealfm-slice.wisp.place/) for a preview of teal.fm
4343* use [atproto.at](https://atproto.at) to view the raw data (convenience URLs are generated in multi-scrobbler for you to do this)
44444545-:::
4545+</DetailsAdmo>
46464747## Setup
4848
+1-7
docsite/docs/configuration/sources/azuracast.mdx
···88import TabItem from '@theme/TabItem';
99import CodeBlock from '@theme/CodeBlock';
1010import AzuracastConfig from '!!raw-loader!@site/../config/azuracast.json.example';
1111-import ShouldScrobble from "@site/src/components/snippets/_should-scrobble.mdx"
1111+import ShouldScrobble from "@site/src/components/snippets/_should-scrobble-details.mdx"
12121313:::tip[Scrobbling Threshold]
1414···3636'wss://mydomain.com/custom/azura/ws' => wss://mydomain.com/custom/azura/ws
3737```
38383939-#### Scrobble Behavior
4040-4141-:::info
4242-4339<ShouldScrobble filename="azuracast"/>
4444-4545-:::
46404741Multi-scrobbler will set the default **scrobbling behavior** based on if either of these settings is configured:
4842
+3-7
docsite/docs/configuration/sources/icecast.mdx
···88import TabItem from '@theme/TabItem';
99import CodeBlock from '@theme/CodeBlock';
1010import IcecastConfig from '!!raw-loader!@site/../config/icecast.json.example';
1111-import ShouldScrobble from "@site/src/components/snippets/_should-scrobble.mdx"
1111+import ShouldScrobble from "@site/src/components/snippets/_should-scrobble-details.mdx"
12121313Parse metadata from any Icecast Station (streams) to use for scrobbling.
1414···20202121:::
22222323-:::note[Scrobbling Behavior]
2424-2525-Multi-scrobbler cannot automatically determine if you are listening to a Station. Therefore, **automatic scrobbling for Icecast Sources is off by default.**
2626-2727-Use [Should Scrobble Behavior](/configuration/sources#should-scrobble-behavior) to initiate scrobbling or configure automatic scrobble.
2323+Multi-scrobbler cannot automatically determine if you are listening to a Station. Therefore, **automatic scrobbling for Icecast Sources is off by default.** Use **Should Scrobble Behavior** to initiate scrobbling or configure automatic scrobble.
28242929-:::
2525+<ShouldScrobble filename="icecast"/>
30263127:::tip[Scrobbling Threshold]
3228
+2-2
docsite/docs/configuration/sources/jellyfin.mdx
···19192020It is **recommended** to use API Key + username but if you are not an admin for your Jellyfin instance you can also authenticate with your Jellyfin username and **password.**
21212222-:::tip[Important Defaults]
2222+<DetailsAdmo type="tip" summary="Important Defaults">
23232424By default...
2525···3131* multi-scrobbler will **only** scrobble media Jellyfin detects as **Audio.**
3232 * To force multi-scrobbler to scrobble when media is detected as **Unknown** use `"allowUnknown": true` in file/aio configuration.
33333434-:::
3434+</DetailsAdmo>
35353636#### Configuration
3737
+3-6
docsite/docs/configuration/sources/spotify.mdx
···88import TabItem from '@theme/TabItem';
99import CodeBlock from '@theme/CodeBlock';
1010import SpotifyConfig from '!!raw-loader!@site/../config/spotify.json.example';
1111+import IconWarning from '@theme/Admonition/Icon/Warning';
11121212-<details>
1313-1414-<summary>Spotify and Automix</summary>
1515-1313+<DetailsAdmo type="note" summary="Spotify and Automix">
1614If your Spotify player has [Automix](https://community.spotify.com/t5/FAQs/What-is-Automix/ta-p/5257278) enabled and Spotify uses it for your playlist/queue then MS cannot accurately determine when a track will end. This is because the track is "mixed" in your queue with a shorter play time than its actual length and [Spotify does not report this modified play time in its API.](https://community.spotify.com/t5/Spotify-for-Developers/Wrong-duration-ms-of-track-with-Automix/m-p/5429147) This **does not affect MS's ability to scrobble** from Spotify but it will affect the accuracy of the duration MS reports was played.
1717-1818-</details>
1515+</DetailsAdmo>
19162017#### Authenticate Spotify with Multi-Scrobbler
2118
+4-4
docsite/docs/configuration/sources/subsonic.mdx
···11111212This Source can be used for any application that implements the [Subsonic API](http://www.subsonic.org/pages/api.jsp) and supports the [`getNowPlaying`](http://www.subsonic.org/pages/api.jsp#getNowPlaying) endpoint (such as [Airsonic](https://airsonic.github.io/) and [Navidrome](https://www.navidrome.org/))
13131414-:::warning[Known Issues]
1414+<DetailsAdmo type="warning" summary="Known Issues">
15151616* Multiple artists are reported as one value and cannot be separated
1717* If using [Airsonic Advanced](https://github.com/airsonic-advanced/airsonic-advanced) the password used (under **Credentials**) must be **Decodable**
18181919-:::
1919+</DetailsAdmo>
20202121-:::tip
2121+<DetailsAdmo type="tip" summary="Recommended Alternative Sources">
22222323If your serivce supports scrobbling to **Listenbrainz** (such as Navidrome), considering using a [**Listenbrainz (Endpoint)** Source](/configuration/sources/listenbrainz-endpoint) instead of this one.
24242525Service-specific scrobble implementations tend to be more accurate and provide more information (multiple artists) compared to the Subsonic API.
26262727-:::
2727+</DetailsAdmo>
28282929Use the optional `usersAllow` property with **File** or **AIO** configuration to restrict scrobbling to a list of defined users.
3030
+12
docsite/docs/configuration/sources/vlc.mdx
···42424343To extract this information use [named capture groups](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Named_capturing_group) in your expression matching the field that should be extracted: `artist` `title` and/or `album`. MS accepts multiple expressions, the first one that matches a filename will be used.
44444545+<details>
4646+4747+<summary>Example</summary>
4848+4549Example usage in [a file-based config:](/configuration?configType=file#configuration-types)
46504751```json5 title="config/vlc.json" {10-15}
···6468 }
6569]
6670```
7171+7272+</details>
67736874#### Vlc Information Reporting
69757076If you find that VLC is incorrectly reporting track information (in its interface) but multi-scrobbler is not parsing it correctly it may be due to the _name_ of the fields VLC is reporting. mutli-scrobbler uses the most common field name but does not cover all use cases. Before reporting an issue please turn on metadata logging and include output from your logs while it is turned on:
71777878+<details>
7979+8080+<summary>Metadata Logging Configuration</summary>
8181+7282```json5 title="config/vlc.json" {9-9}
7383 [
7484 {
···8393 }
8494 ]
8595```
9696+9797+</details>
86988799## Configuration
88100
···18181919Reload the extension after adding the webhook.
20202121-:::note
2121+<DetailsAdmo type="note" summary="URL Types Supported by Webscrobbler">
22222323* **On Firefox** - Only FQNs (domain.tld), `localhost`, and `127.0.0.1` are supported for API URL due to [firefox requiring https](https://github.com/web-scrobbler/web-scrobbler/issues/4183#issuecomment-1749222006)
2424* **On Chromium-based Browsers** - Any domain will work for API URL
2525* All other browsers are untested
26262727-:::
2727+</DetailsAdmo>
28282929-:::warning
2929+<DetailsAdmo type="warning" summary="Public-Facing Usage">
30303131Multi-scrobbler is **not** designed to be publicly accessible from the internet. To use Webscrobbler outside your local network you should be accessing MS through a VPN or through a reverse proxy with some kind of authentication (though this is still not recommended).
32323333-:::
3333+</DetailsAdmo>
34343535### Multiple Users
3636
···848848849849Use field-based methods if your Sources do not return IDs consistently (or at all). Add more field-based methods the more inaccurate your scrobble data may be, but be aware that more aggressive/broad searches may return less accurate results.
850850851851-:::tip[Lastfm]
851851+<DetailsAdmo type="tip" summary="Matching Scrobbles from Last.fm">
852852853853Last.fm is inconsistent when it comes to matching your scrobbles. It will accept (almost) any fields for track/title/album and aggressively attempt to match/correct these, regardless of your intentions.
854854···856856857857Therefore, you should *avoid* using `mbidRecording` and `basicOrIds` as the primary search methods (or understand the risks of using them). Instead, prefer to use field-based methods *before* falling back to id-based methods.
858858859859-:::
859859+</DetailsAdmo>
860860861861### Filter Considerations
862862
···8484* `compare` - temporarily modify Play data when it is being compared to see if it was already scrobbled
8585* `postCompare` - modify Play data before scrobbling it to downstream service and adding to already seen scrobbles
86868787-:::tip
8787+<DetailsAdmo type="tip" summary="Transformed Scrobbles Are Permanently Modified">
88888989Keep in mind that modifying Scrobble/Play data earlier in the lifecycle will affect that data at all times later in the lifecycle (except when using the **compare** hook).
90909191For example, to modify the track so it's the same anywhere it is processed in multi-scrobbler you only need to modify it in the **Source's** `preCompare` hook because all later processes will receive the data with the modified track.
92929393-:::
9393+9494+</DetailsAdmo>
94959596:::tip[TLDR]
9697