diff --git a/docsite/docs/configuration/clients/_env_configs/_discord.md b/docsite/docs/configuration/clients/_env_configs/_discord.md new file mode 100644 index 00000000..c9d9aec5 --- /dev/null +++ b/docsite/docs/configuration/clients/_env_configs/_discord.md @@ -0,0 +1,12 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------------------- | ------- | --------------------- | -------------------- | +| **`DISCORD_ID`** | string | | A globally unique ID | +| `DISCORD_NAME` | string | Value of `DISCORD_ID` | A vanity name | +| `DISCORD_ENABLE` | boolean | | | +| `DISCORD_TOKEN` | string | | | +| `DISCORD_ARTWORK` | union | | | +| `DISCORD_APPLICATION_ID` | string | | | +| `DISCORD_IPC_LOCATIONS` | union | | | +| `DISCORD_ARTWORK_DEFAULT_URL` | string | | | +| `DISCORD_STATUS_OVERRIDE_ALLOW` | union | | | +| `DISCORD_LISTENING_ACTIVITY_ALLOW` | union | | | \ No newline at end of file diff --git a/docsite/docs/configuration/clients/_env_configs/_koito.md b/docsite/docs/configuration/clients/_env_configs/_koito.md new file mode 100644 index 00000000..d88a5fed --- /dev/null +++ b/docsite/docs/configuration/clients/_env_configs/_koito.md @@ -0,0 +1,8 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | ------------------- | --------------------------------------- | +| **`KOITO_ID`** | string | | A globally unique ID | +| `KOITO_NAME` | string | Value of `KOITO_ID` | A vanity name | +| `KOITO_ENABLE` | boolean | | | +| **`KOITO_URL`** | string | | URL for the Koito server | +| **`KOITO_TOKEN`** | string | | User token for the user to scrobble for | +| **`KOITO_USER`** | string | | Username of the user to scrobble for | \ No newline at end of file diff --git a/docsite/docs/configuration/clients/_env_configs/_lastfm.md b/docsite/docs/configuration/clients/_env_configs/_lastfm.md new file mode 100644 index 00000000..d85806c8 --- /dev/null +++ b/docsite/docs/configuration/clients/_env_configs/_lastfm.md @@ -0,0 +1,9 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | ------------------------------------- | ------------------------------------------------------- | +| **`LASTFM_ID`** | string | | A globally unique ID | +| `LASTFM_NAME` | string | Value of `LASTFM_ID` | A vanity name | +| `LASTFM_ENABLE` | boolean | | | +| **`LASTFM_API_KEY`** | string | | API Key generated from Last.fm/Libre.fm account | +| **`LASTFM_SECRET`** | string | | Secret generated from Last.fm/Libre.fm account | +| `LASTFM_REDIRECT_URI` | string | http://localhost:9078/lastfm/callback | Optional URI to use for callback. | +| `LASTFM_SESSION` | string | | Optional session id returned from a completed auth flow | \ No newline at end of file diff --git a/docsite/docs/configuration/clients/_env_configs/_librefm.md b/docsite/docs/configuration/clients/_env_configs/_librefm.md new file mode 100644 index 00000000..7a3f0e9a --- /dev/null +++ b/docsite/docs/configuration/clients/_env_configs/_librefm.md @@ -0,0 +1,10 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | -------------------------------------- | -------------------------------------------------------------- | +| **`LIBREFM_ID`** | string | | A globally unique ID | +| `LIBREFM_NAME` | string | Value of `LIBREFM_ID` | A vanity name | +| `LIBREFM_ENABLE` | boolean | | | +| `LIBREFM_API_KEY` | string | | Optional Secret for Libre.fm account | +| `LIBREFM_SECRET` | string | | Optional Secret for Libre.fm account | +| `LIBREFM_REDIRECT_URI` | string | http://localhost:9078/librefm/callback | Optional URI to use for callback. | +| `LIBREFM_SESSION` | string | | Optional session id returned from a completed auth flow | +| `LIBREFM_URLBASE` | string | https://libre.fm/2.0/ | (Optional) The host and path prefix for your Libre.fm instance | \ No newline at end of file diff --git a/docsite/docs/configuration/clients/_env_configs/_listenbrainz.md b/docsite/docs/configuration/clients/_env_configs/_listenbrainz.md new file mode 100644 index 00000000..7b61d4a5 --- /dev/null +++ b/docsite/docs/configuration/clients/_env_configs/_listenbrainz.md @@ -0,0 +1,8 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | ----------------------------- | --------------------------------------------------------- | +| **`LZ_ID`** | string | | A globally unique ID | +| `LZ_NAME` | string | Value of `LZ_ID` | A vanity name | +| `LZ_ENABLE` | boolean | | | +| `LZ_URL` | string | https://api.listenbrainz.org/ | URL for the ListenBrainz server, if not using the default | +| **`LZ_TOKEN`** | string | | User token for the user to scrobble for | +| **`LZ_USER`** | string | | Username of the user to scrobble for | \ No newline at end of file diff --git a/docsite/docs/configuration/clients/_env_configs/_maloja.md b/docsite/docs/configuration/clients/_env_configs/_maloja.md index 33d0628a..85d358d8 100644 --- a/docsite/docs/configuration/clients/_env_configs/_maloja.md +++ b/docsite/docs/configuration/clients/_env_configs/_maloja.md @@ -1,7 +1,7 @@ -| Environmental Variable | Type | Default | Description | -| ---------------------- | ------- | -------------------- | ----------------------------- | -| _**`MALOJA_ID`**_ | string | | A globally unique ID | -| `MALOJA_NAME` | string | Value of `MALOJA_ID` | A vanity name | -| `MALOJA_ENABLE` | boolean | | | -| _**`MALOJA_URL`**_ | string | | Base URL of your installation | -| `MALOJA_API_KEY` | string | fsdfsd | | \ No newline at end of file +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | -------------------- | ------------------------- | +| **`MALOJA_ID`** | string | | A globally unique ID | +| `MALOJA_NAME` | string | Value of `MALOJA_ID` | A vanity name | +| `MALOJA_ENABLE` | boolean | | | +| **`MALOJA_URL`** | string | | URL for maloja server | +| **`MALOJA_API_KEY`** | string | | API Key for Maloja server | \ No newline at end of file diff --git a/docsite/docs/configuration/clients/_env_configs/_rocksky.md b/docsite/docs/configuration/clients/_env_configs/_rocksky.md new file mode 100644 index 00000000..1b46b56b --- /dev/null +++ b/docsite/docs/configuration/clients/_env_configs/_rocksky.md @@ -0,0 +1,8 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| **`ROCKSKY_ID`** | string | | A globally unique ID | +| `ROCKSKY_NAME` | string | Value of `ROCKSKY_ID` | A vanity name | +| `ROCKSKY_ENABLE` | boolean | | | +| `ROCKSKY_KEY` | string | | API Key generated from [API Applications](https://docs.rocksky.app/migrating-from-listenbrainz-to-rocksky-1040189m0) in Rocksky for your account | +| `ROCKSKY_TOKEN` | string | | Access Token generated from https://rocksky.app/access-tokens in Rocksky for your account | +| **`ROCKSKY_HANDLE`** | string | | The **fully-qualified** handle for your ATPRoto/Bluesky account, like: | \ No newline at end of file diff --git a/docsite/docs/configuration/clients/_env_configs/_tealfm.md b/docsite/docs/configuration/clients/_env_configs/_tealfm.md new file mode 100644 index 00000000..51ea4df5 --- /dev/null +++ b/docsite/docs/configuration/clients/_env_configs/_tealfm.md @@ -0,0 +1,7 @@ +| Environmental Variable | Type | Default | Description | +| ----------------------- | ------- | -------------------- | -------------------------------- | +| **`TEALFM_ID`** | string | | A globally unique ID | +| `TEALFM_NAME` | string | Value of `TEALFM_ID` | A vanity name | +| `TEALFM_ENABLE` | boolean | | | +| **`TEALFM_IDENTIFIER`** | string | | Identify the account to login as | +| `TEALFM_APP_PW` | string | | | \ No newline at end of file diff --git a/docsite/docs/configuration/clients/rocksky.mdx b/docsite/docs/configuration/clients/rocksky.mdx index 0e1c977f..82d7ae09 100644 --- a/docsite/docs/configuration/clients/rocksky.mdx +++ b/docsite/docs/configuration/clients/rocksky.mdx @@ -6,6 +6,7 @@ toc_max_heading_level: 5 import Bluesky from "@site/src/components/snippets/_bluesky.mdx"; import JsonConfig from '!!raw-loader!@site/../config/rocksky.json.example'; +import ENVConfig from "@site/docs/configuration/clients/_env_configs/_rocksky.md" :::tip[Other Uses] @@ -76,10 +77,5 @@ Keys are now **deprecated** and functionality for them will be removed in a futu - | Environmental Variable | Required? | Default | Description | - | :--------------------- | --------- | ------- | ----------------------------------------------------------------------------------- | - | `ROCKSKY_ID` | Yes | | A unique ID used in MS | - | `ROCKSKY_HANDLE` | Yes | | Your **full** ATProto handle. For Bluesky account this is like `myUser.bsky.social` | - | `ROCKSKY_TOKEN` | Yes | | Access Token obtained from Rocksky | - | `ROCKSKY_NAME` | No | | A vanity name different than ID | + \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_applemusic.md b/docsite/docs/configuration/sources/_env_configs/_applemusic.md new file mode 100644 index 00000000..ebfe871d --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_applemusic.md @@ -0,0 +1,13 @@ +| Environmental Variable | Type | Default | Description | +| ------------------------------------------ | ------- | ------------------------ | -------------------------------------------------------------------- | +| **`APPLEMUSIC_ID`** | string | | A globally unique ID | +| `APPLEMUSIC_NAME` | string | Value of `APPLEMUSIC_ID` | A vanity name | +| `APPLEMUSIC_ENABLE` | boolean | | | +| `APPLEMUSIC_KEY_ID` | string | | | +| `APPLEMUSIC_TEAM_ID` | string | | | +| `APPLEMUSIC_KEY_P8` | string | | | +| **`APPLEMUSIC_MEDIA_USER_TOKEN`** | string | | | +| `APPLEMUSIC_TOKEN` | string | | | +| `APPLEMUSIC_ORIGIN_HEADER` | string | | Origin header to include in every Apple Music API request. | +| `APPLEMUSIC_RECOVER_UNCHANGED_TOP_HISTORY` | boolean | true | Fixes a quirk where Apple Music's history API hides duplicate plays. | +| `APPLEMUSIC_NORMALIZE_ALBUM` | boolean | true | Removes extraneous suffixes from album data | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_azuracast.md b/docsite/docs/configuration/sources/_env_configs/_azuracast.md new file mode 100644 index 00000000..87af3eef --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_azuracast.md @@ -0,0 +1,10 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | --------- | ------------------- | ------------------------------------------------- | +| **`AZURA_ID`** | string | | A globally unique ID | +| `AZURA_NAME` | string | Value of `AZURA_ID` | A vanity name | +| `AZURA_ENABLE` | boolean | | | +| **`AZURA_STATION`** | string | | The specific station to monitor | +| **`AZURA_URL`** | string | | Base URL of the Azuracast instance | +| `AZURA_KEY` | string | | API Key used to access data about private streams | +| `AZURA_LISTENERS_NUM` | transform | | | +| `AZURA_LIVE` | boolean | | | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_chromecast.md b/docsite/docs/configuration/sources/_env_configs/_chromecast.md new file mode 100644 index 00000000..c0e93f11 --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_chromecast.md @@ -0,0 +1,9 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | --------- | ---------------- | ------------------------------------------------------------------------------------ | +| **`CC_ID`** | string | | A globally unique ID | +| `CC_NAME` | string | Value of `CC_ID` | A vanity name | +| `CC_ENABLE` | boolean | | | +| `CC_BLACKLIST_DEVICES` | transform | | DO NOT scrobble from any cast devices that START WITH these values, case-insensitive | +| `CC_WHITELIST_DEVICES` | transform | | ONLY scrobble from any cast device that START WITH these values, case-insensitive | +| `CC_BLACKLIST_APPS` | transform | | DO NOT scrobble from any application that START WITH these values, case-insensitive | +| `CC_WHITELIST_APPS` | transform | | ONLY scrobble from any application that START WITH these values, case-insensitive | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_deezer.md b/docsite/docs/configuration/sources/_env_configs/_deezer.md new file mode 100644 index 00000000..02369081 --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_deezer.md @@ -0,0 +1,8 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | -------------------------------------------------------------------- | -------------------------------------------------- | +| **`DEEZER_ID`** | string | | A globally unique ID | +| `DEEZER_NAME` | string | Value of `DEEZER_ID` | A vanity name | +| `DEEZER_ENABLE` | boolean | | | +| **`DEEZER_ARL`** | string | | ARL retrieved from Deezer response header | +| `DEEZER_ACCOUNT_ID` | string | | The ID (USER_ID) of the linked account to monitor. | +| `DEEZER_USER_AGENT` | string | Mozilla/5.0 (X11; Linux i686; rv:135.0) Gecko/20100101 Firefox/135.0 | User agent | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_endpointlfm.md b/docsite/docs/configuration/sources/_env_configs/_endpointlfm.md new file mode 100644 index 00000000..177a4b46 --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_endpointlfm.md @@ -0,0 +1,6 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | ----------------- | ------------------------------------------------------------------------ | +| **`LFM_ID`** | string | | A globally unique ID | +| `LFM_NAME` | string | Value of `LFM_ID` | A vanity name | +| `LFM_ENABLE` | boolean | | | +| `LFM_SLUG` | union | | The URL ending that should be used to identify scrobbles for this source | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_endpointlz.md b/docsite/docs/configuration/sources/_env_configs/_endpointlz.md new file mode 100644 index 00000000..7658b826 --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_endpointlz.md @@ -0,0 +1,8 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| **`LZE_ID`** | string | | A globally unique ID | +| `LZE_NAME` | string | Value of `LZE_ID` | A vanity name | +| `LZE_ENABLE` | boolean | | | +| `LZE_SLUG` | string | | The URL ending that should be used to identify scrobbles for this source | +| `LZE_TOKEN` | string | | If an LZ submission request contains this token in the Authorization Header it will be used to match the submission with this Source | +| `LZE_USERNAME` | string | | The listenbrainz "username" to associate with this Source | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_icecast.md b/docsite/docs/configuration/sources/_env_configs/_icecast.md new file mode 100644 index 00000000..a7e3c0c0 --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_icecast.md @@ -0,0 +1,7 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | --------------------- | ---------------------- | +| **`ICECAST_ID`** | string | | A globally unique ID | +| `ICECAST_NAME` | string | Value of `ICECAST_ID` | A vanity name | +| `ICECAST_ENABLE` | boolean | | | +| **`ICECAST_URL`** | string | | The Icecast stream URL | +| `ICECAST_AUTO_MONITOR` | boolean | | | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_jellyfin.md b/docsite/docs/configuration/sources/_env_configs/_jellyfin.md new file mode 100644 index 00000000..f9e77c5e --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_jellyfin.md @@ -0,0 +1,17 @@ +| Environmental Variable | Type | Default | Description | +| -------------------------------- | ------- | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| **`JELLYFIN_ID`** | string | | A globally unique ID | +| `JELLYFIN_NAME` | string | Value of `JELLYFIN_ID` | A vanity name | +| `JELLYFIN_ENABLE` | boolean | | | +| **`JELLYFIN_USER`** | string | | The username of the user to authenticate for or track scrobbles for | +| `JELLYFIN_PASSWORD` | string | | Password of the username to authenticate for | +| `JELLYFIN_APIKEY` | string | | API Key to authenticate with. | +| **`JELLYFIN_URL`** | string | | HOST:PORT of the Jellyfin server to connect to | +| `JELLYFIN_USERS_ALLOW` | union | | Only scrobble for specific users (case-insensitive) | +| `JELLYFIN_USERS_BLOCK` | union | | Do not scrobble for these users (case-insensitive) | +| `JELLYFIN_DEVICES_ALLOW` | union | | Only scrobble if device or application name contains strings from this list (case-insensitive) | +| `JELLYFIN_DEVICES_BLOCK` | union | | Do not scrobble if device or application name contains strings from this list (case-insensitive) | +| `JELLYFIN_LIBRARIES_ALLOW` | union | | Only scrobble if library name contains string from this list (case-insensitive) | +| `JELLYFIN_LIBRARIES_BLOCK` | union | | Do not scrobble if library name contains strings from this list (case-insensitive) | +| `JELLYFIN_FRONTEND_URL_OVERRIDE` | string | | HOST:PORT of the Jellyfin server that your browser will be able to access from the frontend (and thus load images and links from) | +| `JELLYFIN_MEDIATYPES_ALLOW` | union | | Allow these media types to be scrobbled. | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_jriver.md b/docsite/docs/configuration/sources/_env_configs/_jriver.md new file mode 100644 index 00000000..8346b08c --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_jriver.md @@ -0,0 +1,8 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | ------------------------------- | -------------------------------------------------------- | +| **`JRIVER_ID`** | string | | A globally unique ID | +| `JRIVER_NAME` | string | Value of `JRIVER_ID` | A vanity name | +| `JRIVER_ENABLE` | boolean | | | +| **`JRIVER_URL`** | string | http://localhost:52199/MCWS/v1/ | URL of the JRiver HTTP server to connect to | +| `JRIVER_USER` | string | | If you have enabled authentication, the username you set | +| `JRIVER_PASSWORD` | string | | If you have enabled authentication, the password you set | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_kodi.md b/docsite/docs/configuration/sources/_env_configs/_kodi.md new file mode 100644 index 00000000..4c62638d --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_kodi.md @@ -0,0 +1,8 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | ----------------------------- | ------------------------------------------------- | +| **`KODI_ID`** | string | | A globally unique ID | +| `KODI_NAME` | string | Value of `KODI_ID` | A vanity name | +| `KODI_ENABLE` | boolean | | | +| **`KODI_URL`** | string | http://localhost:8080/jsonrpc | URL of the Kodi HTTP server to connect to | +| **`KODI_USER`** | string | | The username set for Remote Control via Web Sever | +| **`KODI_PASSWORD`** | string | | The password set for Remote Control via Web Sever | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_koito.md b/docsite/docs/configuration/sources/_env_configs/_koito.md new file mode 100644 index 00000000..1d66908c --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_koito.md @@ -0,0 +1,8 @@ +| Environmental Variable | Type | Default | Description | +| ------------------------ | ------- | -------------------------- | --------------------------------------- | +| **`SOURCE_KOITO_ID`** | string | | A globally unique ID | +| `SOURCE_KOITO_NAME` | string | Value of `SOURCE_KOITO_ID` | A vanity name | +| `SOURCE_KOITO_ENABLE` | boolean | | | +| **`SOURCE_KOITO_URL`** | string | | URL for the Koito server | +| **`SOURCE_KOITO_TOKEN`** | string | | User token for the user to scrobble for | +| **`SOURCE_KOITO_USER`** | string | | Username of the user to scrobble for | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_lastfm.md b/docsite/docs/configuration/sources/_env_configs/_lastfm.md new file mode 100644 index 00000000..ed171d2f --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_lastfm.md @@ -0,0 +1,9 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------------- | ------- | ------------------------------------- | ------------------------------------------------------- | +| **`SOURCE_LASTFM_ID`** | string | | A globally unique ID | +| `SOURCE_LASTFM_NAME` | string | Value of `SOURCE_LASTFM_ID` | A vanity name | +| `SOURCE_LASTFM_ENABLE` | boolean | | | +| **`SOURCE_LASTFM_API_KEY`** | string | | API Key generated from Last.fm/Libre.fm account | +| **`SOURCE_LASTFM_SECRET`** | string | | Secret generated from Last.fm/Libre.fm account | +| `SOURCE_LASTFM_REDIRECT_URI` | string | http://localhost:9078/lastfm/callback | Optional URI to use for callback. | +| `SOURCE_LASTFM_SESSION` | string | | Optional session id returned from a completed auth flow | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_librefm.md b/docsite/docs/configuration/sources/_env_configs/_librefm.md new file mode 100644 index 00000000..cd3c5744 --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_librefm.md @@ -0,0 +1,10 @@ +| Environmental Variable | Type | Default | Description | +| ----------------------------- | ------- | -------------------------------------- | -------------------------------------------------------------- | +| **`SOURCE_LIBREFM_ID`** | string | | A globally unique ID | +| `SOURCE_LIBREFM_NAME` | string | Value of `SOURCE_LIBREFM_ID` | A vanity name | +| `SOURCE_LIBREFM_ENABLE` | boolean | | | +| `SOURCE_LIBREFM_API_KEY` | string | | Optional Secret for Libre.fm account | +| `SOURCE_LIBREFM_SECRET` | string | | Optional Secret for Libre.fm account | +| `SOURCE_LIBREFM_REDIRECT_URI` | string | http://localhost:9078/librefm/callback | Optional URI to use for callback. | +| `SOURCE_LIBREFM_SESSION` | string | | Optional session id returned from a completed auth flow | +| `SOURCE_LIBREFM_URLBASE` | string | https://libre.fm/2.0/ | (Optional) The host and path prefix for your Libre.fm instance | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_listenbrainz.md b/docsite/docs/configuration/sources/_env_configs/_listenbrainz.md new file mode 100644 index 00000000..64f161bc --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_listenbrainz.md @@ -0,0 +1,8 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | ----------------------------- | --------------------------------------------------------- | +| **`SOURCE_LZ_ID`** | string | | A globally unique ID | +| `SOURCE_LZ_NAME` | string | Value of `SOURCE_LZ_ID` | A vanity name | +| `SOURCE_LZ_ENABLE` | boolean | | | +| `SOURCE_LZ_URL` | string | https://api.listenbrainz.org/ | URL for the ListenBrainz server, if not using the default | +| **`SOURCE_LZ_TOKEN`** | string | | User token for the user to scrobble for | +| **`SOURCE_LZ_USER`** | string | | Username of the user to scrobble for | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_maloja.md b/docsite/docs/configuration/sources/_env_configs/_maloja.md new file mode 100644 index 00000000..86594513 --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_maloja.md @@ -0,0 +1,7 @@ +| Environmental Variable | Type | Default | Description | +| --------------------------- | ------- | --------------------------- | ------------------------- | +| **`SOURCE_MALOJA_ID`** | string | | A globally unique ID | +| `SOURCE_MALOJA_NAME` | string | Value of `SOURCE_MALOJA_ID` | A vanity name | +| `SOURCE_MALOJA_ENABLE` | boolean | | | +| **`SOURCE_MALOJA_URL`** | string | | URL for maloja server | +| **`SOURCE_MALOJA_API_KEY`** | string | | API Key for Maloja server | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_mopidy.md b/docsite/docs/configuration/sources/_env_configs/_mopidy.md new file mode 100644 index 00000000..97e74009 --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_mopidy.md @@ -0,0 +1,9 @@ +| Environmental Variable | Type | Default | Description | +| ----------------------- | --------- | ------------------------------ | ------------------------------------------------------------------------------------------ | +| **`MOPIDY_ID`** | string | | A globally unique ID | +| `MOPIDY_NAME` | string | Value of `MOPIDY_ID` | A vanity name | +| `MOPIDY_ENABLE` | boolean | | | +| `MOPIDY_URL` | string | ws://localhost:6680/mopidy/ws/ | URL of the Mopidy HTTP server to connect to | +| `MOPIDY_URI_DENYLIST` | transform | | Do not scrobble tracks whose URI STARTS WITH any of these strings, case-insensitive | +| `MOPIDY_URI_ALLOWLIST` | transform | | Only scrobble tracks whose URI STARTS WITH any of these strings, case-insensitive | +| `MOPIDY_ALBUM_DENYLIST` | transform | Soundcloud | Remove album data that matches any case-insensitive string from this list when scrobbling, | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_mpd.md b/docsite/docs/configuration/sources/_env_configs/_mpd.md new file mode 100644 index 00000000..4273b795 --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_mpd.md @@ -0,0 +1,7 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | ----------------- | -------------------------------------------------------------------------------------------------------- | +| **`MPD_ID`** | string | | A globally unique ID | +| `MPD_NAME` | string | Value of `MPD_ID` | A vanity name | +| `MPD_ENABLE` | boolean | | | +| `MPD_URL` | string | localhost:6600 | URL:PORT of the MPD server to connect to | +| `MPD_PASSWORD` | string | | Password for the server, if set https://mpd.readthedocs.io/en/stable/user.html#permissions-and-passwords | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_mpris.md b/docsite/docs/configuration/sources/_env_configs/_mpris.md new file mode 100644 index 00000000..2b467d84 --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_mpris.md @@ -0,0 +1,7 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | ------------------- | ------------------------------------------------------------------------------- | +| **`MPRIS_ID`** | string | | A globally unique ID | +| `MPRIS_NAME` | string | Value of `MPRIS_ID` | A vanity name | +| `MPRIS_ENABLE` | boolean | | | +| `MPRIS_BLACKLIST` | union | | DO NOT scrobble from any players that START WITH these values, case-insensitive | +| `MPRIS_WHITELIST` | union | | ONLY from any players that START WITH these values, case-insensitive | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_musiccast.md b/docsite/docs/configuration/sources/_env_configs/_musiccast.md new file mode 100644 index 00000000..aad4dbfb --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_musiccast.md @@ -0,0 +1,6 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | ------------------- | ------------------------------------------------------------ | +| **`MCAST_ID`** | string | | A globally unique ID | +| `MCAST_NAME` | string | Value of `MCAST_ID` | A vanity name | +| `MCAST_ENABLE` | boolean | | | +| **`MCAST_URL`** | string | | The host or URL of the YamahaExtendedControl endpoint to use | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_musikcube.md b/docsite/docs/configuration/sources/_env_configs/_musikcube.md new file mode 100644 index 00000000..36facc1f --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_musikcube.md @@ -0,0 +1,7 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | ------------------- | -------------------------------------------------------------------------------------------- | +| **`MC_ID`** | string | | A globally unique ID | +| `MC_NAME` | string | Value of `MC_ID` | A vanity name | +| `MC_ENABLE` | boolean | | | +| `MC_URL` | string | ws://localhost:7905 | URL of the Musikcube Websocket (Metadata) server to connect to | +| **`MC_PASSWORD`** | string | | Password set in Musikcube https://github.com/clangen/musikcube/wiki/remote-api-documentation | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_plex.md b/docsite/docs/configuration/sources/_env_configs/_plex.md new file mode 100644 index 00000000..1b70457f --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_plex.md @@ -0,0 +1,13 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | ------------------ | ------------------------------------------------------------------------------------------------ | +| **`PLEX_ID`** | string | | A globally unique ID | +| `PLEX_NAME` | string | Value of `PLEX_ID` | A vanity name | +| `PLEX_ENABLE` | boolean | | | +| **`PLEX_URL`** | string | | http(s)://HOST:PORT of the Plex server to connect to | +| `PLEX_TOKEN` | string | | | +| `PLEX_USERS_ALLOW` | union | | Only scrobble for specific users (case-insensitive) | +| `PLEX_USERS_BLOCK` | union | | Do not scrobble for these users (case-insensitive) | +| `PLEX_DEVICES_ALLOW` | union | | Only scrobble if device or application name contains strings from this list (case-insensitive) | +| `PLEX_DEVICES_BLOCK` | union | | Do not scrobble if device or application name contains strings from this list (case-insensitive) | +| `PLEX_LIBRARIES_ALLOW` | union | | Only scrobble if library name contains string from this list (case-insensitive) | +| `PLEX_LIBRARIES_BLOCK` | union | | Do not scrobble if library name contains strings from this list (case-insensitive) | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_rocksky.md b/docsite/docs/configuration/sources/_env_configs/_rocksky.md new file mode 100644 index 00000000..b6c7a6e6 --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_rocksky.md @@ -0,0 +1,7 @@ +| Environmental Variable | Type | Default | Description | +| --------------------------- | ------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| **`SOURCE_ROCKSKY_ID`** | string | | A globally unique ID | +| `SOURCE_ROCKSKY_NAME` | string | Value of `SOURCE_ROCKSKY_ID` | A vanity name | +| `SOURCE_ROCKSKY_ENABLE` | boolean | | | +| `SOURCE_ROCKSKY_KEY` | string | | API Key generated from [API Applications](https://docs.rocksky.app/migrating-from-listenbrainz-to-rocksky-1040189m0) in Rocksky for your account | +| **`SOURCE_ROCKSKY_HANDLE`** | string | | The **fully-qualified** handle for your ATPRoto/Bluesky account, like: | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_sonos.md b/docsite/docs/configuration/sources/_env_configs/_sonos.md new file mode 100644 index 00000000..7fa1f56c --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_sonos.md @@ -0,0 +1,10 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------- | +| **`SONOS_ID`** | string | | A globally unique ID | +| `SONOS_NAME` | string | Value of `SONOS_ID` | A vanity name | +| `SONOS_ENABLE` | boolean | | | +| **`SONOS_HOST`** | string | | IP address of any connected Sonos speaker or device | +| `SONOS_DEVICES_ALLOW` | union | | Only scrobble if device name contains strings from this list (case-insensitive) | +| `SONOS_DEVICES_BLOCK` | union | | Do not scrobble if device name contains strings from this list (case-insensitive) | +| `SONOS_GROUPS_ALLOW` | union | | Only scrobble if the name of a group the playing device belongs to contains strings from this list (case-insensitive) | +| `SONOS_GROUPS_BLOCK` | union | | Do not scrobble if the name of a group the playing device belongs to contains strings from this list (case-insensitive) | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_spotify.md b/docsite/docs/configuration/sources/_env_configs/_spotify.md new file mode 100644 index 00000000..e547ed8b --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_spotify.md @@ -0,0 +1,8 @@ +| Environmental Variable | Type | Default | Description | +| --------------------------- | ------- | ------------------------------ | -------------------------------------------------------------------- | +| **`SPOTIFY_ID`** | string | | A globally unique ID | +| `SPOTIFY_NAME` | string | Value of `SPOTIFY_ID` | A vanity name | +| `SPOTIFY_ENABLE` | boolean | | | +| **`SPOTIFY_CLIENT_ID`** | string | | spotify client id | +| **`SPOTIFY_CLIENT_SECRET`** | string | | spotify client secret | +| `SPOTIFY_REDIRECT_URI` | string | http://localhost:9078/callback | spotify redirect URI -- required only if not the default shown here. | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_subsonic.md b/docsite/docs/configuration/sources/_env_configs/_subsonic.md new file mode 100644 index 00000000..3d40e633 --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_subsonic.md @@ -0,0 +1,8 @@ +| Environmental Variable | Type | Default | Description | +| ----------------------- | ------- | ---------------------- | ------------------------------------------------- | +| **`SUBSONIC_ID`** | string | | A globally unique ID | +| `SUBSONIC_NAME` | string | Value of `SUBSONIC_ID` | A vanity name | +| `SUBSONIC_ENABLE` | boolean | | | +| **`SUBSONIC_USER`** | string | | Username to login to the server with | +| **`SUBSONIC_PASSWORD`** | string | | Password for the user to login to the server with | +| **`SUBSONIC_URL`** | string | | URL of the subsonic media server to query | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_tealfm.md b/docsite/docs/configuration/sources/_env_configs/_tealfm.md new file mode 100644 index 00000000..80406cb0 --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_tealfm.md @@ -0,0 +1,7 @@ +| Environmental Variable | Type | Default | Description | +| ------------------------------ | ------- | --------------------------- | -------------------------------- | +| **`SOURCE_TEALFM_ID`** | string | | A globally unique ID | +| `SOURCE_TEALFM_NAME` | string | Value of `SOURCE_TEALFM_ID` | A vanity name | +| `SOURCE_TEALFM_ENABLE` | boolean | | | +| **`SOURCE_TEALFM_IDENTIFIER`** | string | | Identify the account to login as | +| `SOURCE_TEALFM_APP_PW` | string | | | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_vlc.md b/docsite/docs/configuration/sources/_env_configs/_vlc.md new file mode 100644 index 00000000..01124b45 --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_vlc.md @@ -0,0 +1,7 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | ----------------- | ---------------------------------------- | +| **`VLC_ID`** | string | | A globally unique ID | +| `VLC_NAME` | string | Value of `VLC_ID` | A vanity name | +| `VLC_ENABLE` | boolean | | | +| `VLC_URL` | string | localhost:8080 | URL:PORT of the VLC server to connect to | +| **`VLC_PASSWORD`** | string | | Password for the server | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_webscrobbler.md b/docsite/docs/configuration/sources/_env_configs/_webscrobbler.md new file mode 100644 index 00000000..3d36300c --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_webscrobbler.md @@ -0,0 +1,7 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | --------- | ---------------- | ----------------------------------------------------------- | +| **`WS_ID`** | string | | A globally unique ID | +| `WS_NAME` | string | Value of `WS_ID` | A vanity name | +| `WS_ENABLE` | boolean | | | +| `WS_BLACKLIST` | transform | | Block scrobbling from specific WebScrobbler Connectors | +| `WS_WHITELIST` | transform | | Only allow scrobbling from specific WebScrobbler Connectors | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_ymbridge.md b/docsite/docs/configuration/sources/_env_configs/_ymbridge.md new file mode 100644 index 00000000..2c73caec --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_ymbridge.md @@ -0,0 +1,7 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | ---------------------- | --------------------------------------------------------------------------- | +| **`YMBRIDGE_ID`** | string | | A globally unique ID | +| `YMBRIDGE_NAME` | string | Value of `YMBRIDGE_ID` | A vanity name | +| `YMBRIDGE_ENABLE` | boolean | | | +| **`YMBRIDGE_URL`** | string | | URL of the local Python bridge, for example http://yandex-music-bridge:9980 | +| `YMBRIDGE_API_KEY` | string | | Optional API key sent as X-API-Key to the bridge | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_ytmusic.md b/docsite/docs/configuration/sources/_env_configs/_ytmusic.md new file mode 100644 index 00000000..f6a336a4 --- /dev/null +++ b/docsite/docs/configuration/sources/_env_configs/_ytmusic.md @@ -0,0 +1,9 @@ +| Environmental Variable | Type | Default | Description | +| ---------------------- | ------- | ----------------- | ------------------------------------------------------------------------------------ | +| **`YTM_ID`** | string | | A globally unique ID | +| `YTM_NAME` | string | Value of `YTM_ID` | A vanity name | +| `YTM_ENABLE` | boolean | | | +| `YTM_REDIRECT_URI` | string | | Google Cloud Console project OAuth Client Authorized redirect URI | +| `YTM_CLIENT_ID` | string | | Google Cloud Console project OAuth Client ID | +| `YTM_CLIENT_SECRET` | string | | Google Cloud Console project OAuth Client Secret | +| `YTM_COOKIE` | string | | The cookie retrieved from the Request Headers of music.youtube.com after logging in. | \ No newline at end of file diff --git a/src/backend/common/infrastructure/config/source/azuracast.ts b/src/backend/common/infrastructure/config/source/azuracast.ts index 0bff578f..964bcfa4 100644 --- a/src/backend/common/infrastructure/config/source/azuracast.ts +++ b/src/backend/common/infrastructure/config/source/azuracast.ts @@ -141,7 +141,7 @@ const envDataSchema = z.object({ AZURA_STATION: azuracastDataSchema.shape.station, AZURA_URL: azuracastDataSchema.shape.url, AZURA_KEY: azuracastDataSchema.shape.apiKey, - AZURA_LISTENERS_NUM: z.string().optional().transform((val) => !isNaN(Number.parseInt(val)) ? Number.parseInt(val) : parseBoolStrict(val)), + AZURA_LISTENERS_NUM: z.string().optional().transform((val) => val === undefined ? undefined : (!isNaN(Number.parseInt(val)) ? Number.parseInt(val) : parseBoolStrict(val))), AZURA_LIVE: z.stringbool().optional() }); diff --git a/src/backend/utils/SchemaDocsStaticUtils.ts b/src/backend/utils/SchemaDocsStaticUtils.ts index bc4c490d..44ffd3d0 100644 --- a/src/backend/utils/SchemaDocsStaticUtils.ts +++ b/src/backend/utils/SchemaDocsStaticUtils.ts @@ -5,21 +5,13 @@ import { clientConfigSchemaMap } from '../common/infrastructure/config/client/cl import { sourceConfigSchemaMap } from '../common/infrastructure/config/source/sources.ts'; import { projectRootDir } from "../common/infrastructure/Atomic.ts"; import { aioConfigSchema } from "../common/infrastructure/config/aioConfig.ts"; -import { envSchemas } from "../common/infrastructure/config/client/maloja.ts"; import { generateCommonComponentEnvConfigSchema } from "../common/infrastructure/config/common.ts"; -import { zodObjectToTableColumns } from "./ZodUtils.ts"; +import { zodObjectToTableColumns, type TableColumn } from "./ZodUtils.ts"; import {markdownTable} from 'markdown-table' mkdirSync(resolve(projectRootDir, 'docsite/static/schemas'), {recursive: true}); -const common = generateCommonComponentEnvConfigSchema('MALOJA'); -const schema = z.object({ - ...common.shape, - ...envSchemas.env.shape -}); -const col = zodObjectToTableColumns(schema, 'out'); - -const mdCols: string[][] = col.map((x) => { +const mdCols = (cols: TableColumn[]): string[][] => cols.map((x) => { const name = `\`${x.title}\``; return [ x.required ? `**${name}**` : name, @@ -27,13 +19,7 @@ const mdCols: string[][] = col.map((x) => { (x.default ?? '').toString(), x.description ?? '' ] -}); -const tableContent = markdownTable([ - ['Environmental Variable', 'Type', 'Default', 'Description'], - ...mdCols -]); - -writeFileSync(resolve(projectRootDir, `docsite/static/schemas/maloja-env-test.md`), tableContent); +}) const generateSchema = (schema: z.ZodType, reused: z.core.ToJSONSchemaParams['reused'] = 'inline') => z.toJSONSchema(schema, { io: "input", @@ -70,11 +56,29 @@ const generateSchema = (schema: z.ZodType, reused: z.core.ToJSONSchemaParams['re const clientEntries = Object.entries(clientConfigSchemaMap); for(const [k,v] of clientEntries) { writeFileSync(resolve(projectRootDir, `docsite/static/schemas/${k}-client.json`), JSON.stringify(generateSchema(z.array(v[0])))); + + const envSchema = v[2]; + const common = generateCommonComponentEnvConfigSchema(envSchema.prefix.toUpperCase()); + const col = zodObjectToTableColumns(z.object({...common.shape,...v[2].env.shape}), 'out'); + const tableContent = markdownTable([ + ['Environmental Variable', 'Type', 'Default', 'Description'], + ...mdCols(col) + ]); + writeFileSync(resolve(projectRootDir, `docsite/docs/configuration/clients/_env_configs/_${k}.md`), tableContent); } const sourcesEntries = Object.entries(sourceConfigSchemaMap); for(const [k,v] of sourcesEntries) { writeFileSync(resolve(projectRootDir, `docsite/static/schemas/${k}-source.json`), JSON.stringify(generateSchema(z.array(v[0])))); + + const envSchema = v[2]; + const common = generateCommonComponentEnvConfigSchema(envSchema.prefix.toUpperCase()); + const col = zodObjectToTableColumns(z.object({...common.shape,...v[2].env.shape}), 'out'); + const tableContent = markdownTable([ + ['Environmental Variable', 'Type', 'Default', 'Description'], + ...mdCols(col) + ]); + writeFileSync(resolve(projectRootDir, `docsite/docs/configuration/sources/_env_configs/_${k}.md`), tableContent); } writeFileSync(resolve(projectRootDir, 'docsite/static/schemas/aio.json'), JSON.stringify(generateSchema(aioConfigSchema, 'ref')));