Skip to content

Commit ae6686c

Browse files
committed
Initial commit, hope everything just works!
0 parents  commit ae6686c

File tree

11 files changed

+594
-0
lines changed

11 files changed

+594
-0
lines changed

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
cached_art.json
2+
options.json
3+
config.json
4+
/node_modules/*
5+
package-lock.json

README.md

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
# 🎧 RoonCordJS - Show off your tunes!
2+
#### Want to be able to show your friends what you're listening to through the most sophisticated library management software in the world? Here's the answer to that call.
3+
4+
## ✅ What it does:
5+
6+
- Connects to Roon Core neatly as an extension. One click in Settings->Extensions and you've enabled RoonCord!
7+
8+
- Pulls artist, track, album and cover art from Roon's API for the active zone.
9+
10+
- Provides album art for RPC via one of <b>three</b> methods:
11+
12+
- <b>Imgur:</b> If you signed up [for an OAuth 2 application,](https://api.imgur.com/oauth2/addclient) you can easily add your client ID and start uploading album art
13+
14+
- <b>Self-hosting:</b> If you want to run your own ingest using the cloud or local infrastructure, I've got a sample project with optional Bearer token auth ready to go! It also runs off of NodeJS, with fully self-contained Express.js REST/file serving endpoints.
15+
16+
- <b>MusicBrainz:</b> If you don't want to do any of that nonsense, just let MusicBrainz match your cover art! Not always guaranteed to be accurate though, especially with more niche tracks or self-tagged libraries.
17+
18+
- <b>None of those:</b> That's right, if you don't care and don't mind that others just stare at the Roon logo, we've got you covered there too.
19+
20+
- Caches album art upload URLs to prevent multiple uploads for tracks in the same album.
21+
22+
- Self-validates configurations should you choose to modify them for your own taste.
23+
24+
- Shows a progress bar indicating how far you've made it through a track (sort of reliable, more on that later)
25+
26+
## ❌ What it does NOT do:
27+
28+
- Get track information (including sample rates, devices, and MUSE chains)
29+
30+
- Potentially I may have a workaround for this but will require me using MemoryJS to tap Roon (and RAATServer) for the relevant values. This is going to take a LOT of experimenting.
31+
32+
- Modify your library in any way
33+
34+
- Maybe a Lyrics searcher/embedder as a separate utility? Who knows.
35+
36+
- Let others listen to your music alongside you
37+
38+
- Keep dreaming.
39+
40+
- Break any Terms of Service provided by Discord or Roon Labs.
41+
42+
## 📜 Requirements:
43+
44+
- NodeJS 20 LTS (latest release preferred)
45+
- npm (should come with NodeJS)
46+
- A Roon Core to communicate with
47+
- A Discord account and desktop app
48+
49+
## ▶️ How to run:
50+
51+
1. Clone the repo:
52+
53+
`git clone https://github.com/prolix-oc/RoonCordJS`
54+
55+
2. Install all dependencies:
56+
57+
`npm install`
58+
59+
3. Run it!
60+
- On Windows, double click or run in Command Prompt/Terminal:
61+
62+
`launch.bat`
63+
64+
- On Linux, first
65+
66+
`chmod +x ./launch.sh`, then run
67+
68+
`./launch.sh`
69+
70+
- Or if you prefer the manual, platform-agnostic way:
71+
72+
`node index`
73+
74+
On first run, it'll download an original copy of the `options.json` file that's configured for MusicBrainz art only. You can explore this file and add your own info!
75+
76+
## 📸 Screenshots
77+
78+
![First Screenshot of RPC](/screenshots/screen2.png)
79+
![Second Screenshot of RPC](/screenshots/screen3.png)
80+
81+
![Third Screenshot of RPC](/screenshots/screen1.png)
82+
83+
## ❗ Got an issue?
84+
85+
Feel free to report it in the [repository issues](https://github.com/prolix-oc/RoonCordJS/issues), and I'll see what went wrong for you!
86+
87+
## ⚠️ Known Issues:
88+
89+
- Progress bar seems to get confused when you pause. I've attempted to mitigate this by changing the timestamp when it's paused, but this will need more iteration.
90+
91+
- Sometimes, the RPC won't show data immediately and will require a zone change to update. This could be a simple fix!
92+
93+
- The track, album, artist and zone info layout is not editable at the moment. I'm looking to change this soon, and make it very templateable.

0 commit comments

Comments
 (0)