Skip to content

Commit 0dcd049

Browse files
committed
Merge branch 'refs/heads/develop'
2 parents bc517e0 + 7170b09 commit 0dcd049

File tree

105 files changed

+1312
-863
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

105 files changed

+1312
-863
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ A javascript app to scrobble music you listened to, to [Maloja](https://github.c
2828
* [Maloja](/docsite/docs/configuration/configuration.md#maloja)
2929
* [Last.fm](/docsite/docs/configuration/configuration.md#lastfm)
3030
* [ListenBrainz](/docsite/docs/configuration/configuration.md#listenbrainz)
31-
* Monitor status of Sources and Clients using [webhooks (Gotify or Ntfy)](/docsite/docs/configuration/configuration.md#webhook-configurations) or [healthcheck endpoint](/docsite/docs/configuration/configuration.md#health-endpoint)
31+
* Monitor status of Sources and Clients using [webhooks (Gotify, Ntfy, Apprise)](/docsite/docs/configuration/configuration.md#webhook-configurations) or [healthcheck endpoint](/docsite/docs/configuration/configuration.md#health-endpoint)
3232
* Supports configuring for single or multiple users (scrobbling for your friends and family!)
3333
* Web server interface for stats, basic control, and detailed logs
3434
* Graceful network and client failure handling (queued scrobbles that auto-retry)

config/config.json.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"debugMode": false,
3+
"disableWeb": false,
34
"sourceDefaults": {
45
"maxPollRetries": 1,
56
"maxRequestRetries": 1,

docsite/docs/configuration/configuration.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,15 @@ EX: Lastfm Redirect Url is `BASE_URL:PORT/lastfm/callback` -- Set `BASE_URL=http
195195

196196
Useful when running with [docker](../installation/installation.md#docker) so that you do not need to specify redirect URLs for each configuration.
197197

198+
#### Disable Web
199+
200+
If you do not need the dashboard and/or ingress sources, or have security concerns about ingress and cannot control their hosting environment, the web server and API can be disabled. Note that any **ingress-based sources will be unusable** (Plex, Jellyfin, Tautulli, etc...) if this is disabled.
201+
202+
Disable using either:
203+
204+
* ENV `DISABLE_WEB=true`
205+
* In [All-in-One File](#all-in-one-file-configuration) use the top-level property `"disableWeb": true`
206+
198207
# Source Configurations
199208

200209
## [Spotify](https://www.spotify.com)
@@ -974,6 +983,25 @@ EX
974983
}
975984
```
976985

986+
### [Apprise](https://github.com/caronc/apprise-api)
987+
988+
Refer to the [config schema for AppriseConfig](https://json-schema.app/view/%23/%23%2Fdefinitions%2FAppriseConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fmaster%2Fsrc%2Fbackend%2Fcommon%2Fschema%2Faio.json)
989+
990+
multi-scrobbler supports [stateless](https://github.com/caronc/apprise-api?tab=readme-ov-file#stateless-solution) and [persistent storage](https://github.com/caronc/apprise-api?tab=readme-ov-file#persistent-storage-solution) endpoints as well as [tags](https://github.com/caronc/apprise-api?tab=readme-ov-file#tagging)/
991+
992+
EX
993+
994+
```json5
995+
{
996+
"type": "apprise",
997+
"name": "MyAppriseFriendlyNameForLogs",
998+
"host": "http://192.168.0.100:8080",
999+
"urls": ["gotify://192.168.0.101:8070/MyToken"], // stateless endpoints
1000+
"keys": ["e90b20526808373353afad7fb98a201198c0c3e0555bea19f182df3388af7b17"], //persistent storage endpoints
1001+
"tags": ["my","optional","tags"]
1002+
}
1003+
```
1004+
9771005
## Health Endpoint
9781006

9791007
An endpoint for monitoring the health of sources/clients is available at GET `http://YourMultiScrobblerDomain/health`

docsite/src/pages/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ A javascript app to scrobble music you listened to, to [Maloja](https://github.c
3131
* [Maloja](docs/configuration#maloja)
3232
* [Last.fm](docs/configuration#lastfm)
3333
* [ListenBrainz](docs/configuration#listenbrainz)
34-
* Monitor status of Sources and Clients using [webhooks (Gotify or Ntfy)](docs/configuration#webhook-configurations) or [healthcheck endpoint](docs/configuration#health-endpoint)
34+
* Monitor status of Sources and Clients using [webhooks (Gotify, Ntfy, Apprise)](docs/configuration#webhook-configurations) or [healthcheck endpoint](docs/configuration#health-endpoint)
3535
* Supports configuring for single or multiple users (scrobbling for your friends and family!)
3636
* Web server interface for stats, basic control, and detailed logs
3737
* Graceful network and client failure handling (queued scrobbles that auto-retry)

flatpak/io.github.foxxmd.multiscrobbler.metainfo.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
</screenshot>
5050
</screenshots>
5151
<releases>
52+
<release version="0.7.1" date="2024-04-11"/>
5253
<release version="0.7.0" date="2024-03-26"/>
5354
<release version="0.6.5" date="2024-02-05"/>
5455
<release version="0.6.4" date="2024-01-29"/>

package-lock.json

Lines changed: 47 additions & 22 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "multi-scrobbler",
3-
"version": "0.7.0",
3+
"version": "0.7.1",
44
"type": "module",
55
"description": "scrobble plays from multiple sources to multiple clients",
66
"scripts": {
@@ -51,7 +51,7 @@
5151
"@fortawesome/free-solid-svg-icons": "^6.4.2",
5252
"@fortawesome/react-fontawesome": "^0.2.0",
5353
"@foxxmd/chromecast-client": "^1.0.4",
54-
"@foxxmd/logging": "^0.1.13",
54+
"@foxxmd/logging": "^0.1.14",
5555
"@foxxmd/string-sameness": "^0.4.0",
5656
"@kenyip/backoff-strategies": "^1.0.4",
5757
"@react-nano/use-event-source": "^0.13.0",
@@ -89,13 +89,11 @@
8989
"passport": "^0.6.0",
9090
"passport-deezer": "^0.2.0",
9191
"patch-package": "^8.0.0",
92-
"pony-cause": "^1.1.1",
9392
"postcss": "^8.4.33",
9493
"react": "^18.2.0",
9594
"react-dom": "^18.2.0",
9695
"react-redux": "^8.1.2",
9796
"react-router-dom": "^6.15.0",
98-
"safe-stable-stringify": "^1.1.1",
9997
"sass": "^1.70.0",
10098
"spotify-web-api-node": "^5.0.2",
10199
"superagent": "^8.0.9",
@@ -107,7 +105,6 @@
107105
"youtube-music-ts-api": "^1.7.0"
108106
},
109107
"devDependencies": {
110-
"@dbus-types/dbus": "^0.0.4",
111108
"@dbus-types/notifications": "^0.0.5",
112109
"@eslint/js": "^8.56.0",
113110
"@faker-js/faker": "^8.1.0",

src/backend/common/errors/ErrorUtils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {ResponseError} from "superagent";
1+
import { ResponseError } from "superagent";
22

33
export const isSuperAgentResponseError = (e: any): e is ResponseError => {
44
return typeof e === 'object'

src/backend/common/errors/NodeErrors.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
import { findCauseByFunc } from "../../utils/ErrorUtils.js";
12
import { isArbitraryObject } from "../infrastructure/Atomic.js";
23
import ErrnoException = NodeJS.ErrnoException;
3-
import { findCauseByFunc } from "../../utils.js";
44

55
export type NodeNetworkErrorCode = 'ENOTFOUND' | 'ETIMEDOUT' | 'EAI_AGAIN' | 'ECONNRESET' | 'ECONNREFUSED' | 'ERRADDRINUSE' | 'EADDRNOTAVAIL' | 'ECONNABORTED' | 'EHOSTUNREACH';
66
export const NETWORK_ERROR_CODES: NodeNetworkErrorCode[] = ['ENOTFOUND', 'ETIMEDOUT', 'EAI_AGAIN', 'ECONNRESET', 'ECONNREFUSED', 'ERRADDRINUSE', 'EADDRNOTAVAIL', 'ECONNABORTED', 'EHOSTUNREACH'];

src/backend/common/errors/UpstreamError.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import {ErrorWithCause} from "pony-cause";
2-
import { findCauseByFunc } from "../../utils.js";
3-
import {Response} from 'superagent';
1+
import { Response } from 'superagent';
42

5-
export class UpstreamError<T = undefined> extends ErrorWithCause<T> {
3+
import { findCauseByFunc } from "../../utils/ErrorUtils.js";
4+
5+
export class UpstreamError<T = undefined> extends Error {
66

77
showStopper: boolean = false;
88
response?: Response

0 commit comments

Comments
 (0)