Mixarr – a music discovery companion for Lidarr/Plex
from aquantumofdonuts@lemmy.world to selfhosted@lemmy.world on 04 Jan 12:58
https://lemmy.world/post/41138312

Hey everyone,

I’m new here! I wanted to share a music search and discovery tool for Lidarr. It plugs into Spotify, TIDAL, Deezer, Last.fm, MusicBrainz, Plex/Tautulli, Jellyfin, and even some AI recommendations.

GitHub: github.com/aquantumofdonuts/mixarr/…/v1.1.1

Website: aquantumofdonuts.github.io/mixarr/

What it does:

Why I built it:

I wanted one tool that I could point at my Lidarr library and get a steady stream of relevant artist recommendations.

Basically, make music discovery feel as automated and “infrastructure-y” as the rest of the *arr ecosystem.

Current status:

If you try it, I’d love to hear any feedback! Thanks!

#selfhosted

threaded - newest

ThePantser@sh.itjust.works on 04 Jan 13:31 next collapse

GitHub link is funky, need to remove the ()

aquantumofdonuts@lemmy.world on 04 Jan 14:17 collapse

Thank you. Link is fixed.

Kirk@startrek.website on 04 Jan 13:31 next collapse

I think your URL to the github is a hyperlink back to this post…

[deleted] on 04 Jan 13:40 next collapse

.

jabberwockiX@piefed.social on 04 Jan 13:36 next collapse

This sounds great. I will have to check it out when I’m back home. I have been missing a music discovery tool as I am trying to avoid using any of the corporate overlord algorithm machines.

aquantumofdonuts@lemmy.world on 04 Jan 13:50 collapse

Awesome! I hope you like it. I’ve successfully converted my household from Spotify to Plexamp using this. Setup a few subscriptions, let the new artists and recommendations roll in, and you have a constant stream of new music.

Routhinator@startrek.website on 04 Jan 14:27 next collapse

Was super interested right up until the AI recommendations bit.

aquantumofdonuts@lemmy.world on 04 Jan 14:42 next collapse

I completely understand. Just one minor feature though, and it’s entirely optional. The real meat is in the “subscriptions”, which rely on more steadfast services like Last.fm and Spotify.

JensSpahnpasta@feddit.org on 04 Jan 15:33 next collapse

You might not like it, but AI can totally give you a recommendation of similar bands.

jpaskaruk@growers.social on 04 Jan 16:50 next collapse

@JensSpahnpasta @Routhinator I've been playing with just such a thing this morning - I just started the ~80hr initial (CPU) analysis of my flac collection. Once complete, it purports to be able to do quite a lot stuff that sounds both useful and credible, based on what I know of this technology.

Entirely local processing, no planetkiller concerns. It does have the option to use the nasties, and yes, tempting to pay a few bucks to some bondvillain and have it done in a few minutes, but I'm sticking with good ol' patience to get the job done on the same CPU I leave running 24/7 anyways.

(I might do some experimenting with Kubernetes later, cause my understanding is that I could make all our household machines into workers, and we have another couple in the house...)

JensSpahnpasta@feddit.org on 04 Jan 18:53 next collapse

That looks interesting. But I have one question: You chose to analyze the sound itself and not just reuse some genre data from Musicbrainz or Last.fm. How is that working in practice?

jpaskaruk@growers.social on 06 Jan 16:08 collapse

@JensSpahnpasta Sorry meant to reply the other day - also, I'm kinda fascinated how well my Mastodon instance is communicating with this Lemmy thread.

I'm not the dev of AudiomuseAI, just an interested tire kicker.

But like I said, based on what I know about Machine Learning, this could potentially be better at this specific set of human problems (creating playlists, finding similar new artists to maintain the presence of novelty, etc) than trying to draw upon the crowdsourced metadata (meatdata?) of a species of incredibly opinionated apes.

Like for wo examples, we can only assume that the weights will not care about considerations like authenticity as defined by your typical music fan, nor how "commercial" the track is, which has more than once bit me in the ass.

Like for instance, a friend of mine a few years ago played me this record that was perfect mid-70s Heavy Rock of exactly the sort that I like. And another time I heard this other tune on the radio, similarly full of that 70s Overdrive that I love, and was all "holy shit who's that?"

The bands in question were The Osmonds (yes, those Osmonds) and Abba. I would never have looked in their back catalogues for good music that I missed. This thing will do that, in theory, as long as the weights get trained on a given track.

Still to be solved, seems to me, is a repository where people can share their trained weights for a given song; we could save a lot of time that way.

Currently 40% finished initial scanning after 48 hours, by the way. My collection is slightly bigger than 1tb of mostly Flac files.

JensSpahnpasta@feddit.org on 06 Jan 16:48 collapse

Wow, that’s interesting. I think I might also need to set this up

irmadlad@lemmy.world on 04 Jan 22:06 next collapse

Going to have to check that out. Thanks for the share.

aquantumofdonuts@lemmy.world on 06 Jan 07:05 collapse

How does this compare to Plex’s sonic analysis? Sounds pretty similar?

jpaskaruk@growers.social on 06 Jan 13:20 collapse

@aquantumofdonuts I used Plex until Jellyfin reached Minimum Viable Product stage and never went back, and when I used it I did not pay, so I will never have any idea about that 😜

irmadlad@lemmy.world on 04 Jan 22:05 collapse

I can tell there are at least 5 people who didn’t like your suggestion. LMAO. But indeed, AI can do this and do it well. I put a few songs in and tell it to recommend similar Indie musicians. Works like a charm.

ShouldIHaveFun@sh.itjust.works on 04 Jan 17:20 collapse

I’m OK with it as long as it’s not an LLM recommendation

aquantumofdonuts@lemmy.world on 04 Jan 19:26 collapse

Nope, LLM is not a requirement at all and is disabled by default.

TuxEnthusiast@sopuli.xyz on 04 Jan 15:53 next collapse

Is it possible to set this up with navidrome instead of lidarr?

roofuskit@lemmy.world on 04 Jan 15:57 collapse

Navidrome can scrobble to Listenbrainz which this supports.

excursion22@piefed.ca on 04 Jan 16:11 next collapse

Looks cool. Any chance you’ll add Qobuz to the integration list in the future?

Gexilla@lemmy.zip on 04 Jan 16:20 next collapse

I have yet to try OP’s tool, but I already have Qobuz connected to Last.fm and subsequently ListenBrainz if that is any use?

aquantumofdonuts@lemmy.world on 04 Jan 19:24 collapse

Yes, that’s a perfect setup. You can point Mixarr at ListenBrainz or Last.fm and get recommendations, playlists, etc. based on your Qobuz scribbling.

aquantumofdonuts@lemmy.world on 04 Jan 19:25 collapse

Thanks! I will look into it. But as noted elsewhere, Qobuz is already indirectly supported via Last.fm or ListenBrainz scrobbling.

irmadlad@lemmy.world on 04 Jan 19:29 next collapse

Man, that would absolutely rock if it integrated with Navidrome.

Navidrome can scrobble to Listenbrainz which this supports.

Buck@jlai.lu on 04 Jan 20:28 next collapse

Well I can’t judge yet, but I’ve installed it, and I’ll try it out tomorrow!

bruhduh@lemmy.world on 04 Jan 20:32 next collapse

Does it work with SoundCloud? I wanted to self host my library

aquantumofdonuts@lemmy.world on 05 Jan 01:52 collapse

Not currently, sorry. But I will look into adding that integration in the future

zr0@lemmy.dbzer0.com on 04 Jan 20:55 next collapse

Omg you are a saint. I was missing a tool like this. Will check it out ASAP.

aquantumofdonuts@lemmy.world on 05 Jan 01:27 collapse

Awesome, thank you. Hope you like it.

bootstrap@piefed.social on 04 Jan 22:15 next collapse

First off thank you so much this is exactly what I’ve been waiting for.

I looked at the compose file and it doesnt seem to have the base image in there, just the DB and web setup.

I’m not super experienced with docker but would love to deploy this through my dockstarter setup - am I missing something here, is there a way to get it up and running through compose now?

immobile7801@piefed.social on 05 Jan 01:17 next collapse

You currently have to build the docker images. Instructions are in the repo

aquantumofdonuts@lemmy.world on 05 Jan 07:59 next collapse

Docker image released here: github.com/aquantumofdonuts/mixarr/…/v1.1.0

Buck@jlai.lu on 05 Jan 07:59 collapse

I spin it up yesterday and you don’t need to compile anything, it’s quite straightforward.

aquantumofdonuts@lemmy.world on 05 Jan 01:26 next collapse

It should work with just docker compose up using the default docker-compose.yml. web and API containers comprise the app, and caddy serves the frontend. Give it a try, let me know if you get stuck!

aquantumofdonuts@lemmy.world on 05 Jan 07:29 collapse

I released a Docker image. You can get it here: github.com/aquantumofdonuts/mixarr/…/v1.1.0

Let me know if you have any issues!

priapus@piefed.social on 04 Jan 22:25 next collapse

Do you know if it will work with SQLite? I’d like to try it but I hate spinning up more postgres instances

aquantumofdonuts@lemmy.world on 05 Jan 01:24 collapse

Hi, it might but I haven’t explored that. I’ll look into it. Would you want to roll your own SQLite, or just have that containerized instead of postgres?

priapus@piefed.social on 05 Jan 21:32 collapse

SQLite doesnt require you to have any service running, the DB is just stored in a file which the program accesses through an SQLite library. I think its the best option for selfhosted software, as its very lightweight and more than performant enough for 99% of these use cases.

curled@lemmy.dbzer0.com on 06 Jan 01:24 collapse

Performance isn’t the only advantage to a full postgres deployment. I have a central database for all of my self hosted apps which makes it really easy to back it all up.

I’ve had a lot of problems in the past from software crashes that left sqlite files in a corrupt state, backups where the sqlite file wasn’t properly closed leaving it in a weird unlockable state, transactions not completing when swap is used, etc. Besides that sqlite really doesn’t play nice with NFS, which is the basis for quite a few cloud storage providers.

“Best option” really depends on what self hosting looks like in your specific setup.

priapus@piefed.social on 06 Jan 20:32 collapse

Yeah, I wasn’t trying to say SQLite is universally better. I shouldn’t have said best option, I really meant best default. I don’t think the majority of users are running a central db, most will just spin-up docker compose files for each service and end up with multiple SQL versions running.

I’ve had a lot of problems in the past from software crashes that left sqlite files in a corrupt state

I have had this issue, but it was always easily recoverable. I haven’t had the same issues with backups, although a lot of the software I use that’s running SQLite has a builtin backup feature, then I just backup that directory to a cloud service.

Besides that SQLite really doesn’t play nice with NFS, which is the basis for quite a few cloud storage providers.
Also a good point, I just don’t think the majority of users are using NFS for their DBs.

When an app is using an ORM already, I think they might as well make sure it supports both SQLite and a hosted DB like Postgres

Thrashin_Victim@lemmy.world on 04 Jan 22:52 next collapse

How does this compare to lidify

aquantumofdonuts@lemmy.world on 05 Jan 01:23 collapse

The Discover feature is pretty much identical to what Lidify does. The distinguishing feature is the Subscriptions though. Like automated Lidify.

immobile7801@piefed.social on 05 Jan 01:32 next collapse

Just spun it a up earlier today, looks great! I’m wondering if maybe I’m misunderstanding how listenbrainz subs work. The explore subscription doesn’t pull in my users “weekly exploration” playlist, it’s totally unrelated songs it’s pulling. Although it does appear to pull in accurate listenbrainz artist recommendations

aquantumofdonuts@lemmy.world on 05 Jan 01:46 next collapse

Interesting, that could be a bug. I’ll check it out. Thanks!

aquantumofdonuts@lemmy.world on 05 Jan 01:53 collapse

Sorry, which subscription specifically were you using? I’ll try to reproduce the behavior you’re seeing. Might be an easy fix.

immobile7801@piefed.social on 05 Jan 02:03 collapse

Listenbrainz Explore
<img alt="image" src="https://media.piefed.social/posts/U2/ii/U2iizxjAOBu07Rm.png">
I just noticed there is an explore tab on listenbrainz, is that what this is supposed to pull from? I was thinking it was supposed to pull from the weekly exploration playlist listenbrainz creates.

aquantumofdonuts@lemmy.world on 05 Jan 07:53 collapse

Ok, got it. Yes, this was a funky UI bug. There is now a ListenBrainz preset for Weekly Exploration, which pulls from the user’s playlist, and the “type” dropdown is disabled once you select a preset.

Please give it a try, let me know if that fixes the issue you were having. I updated the repo, you can pull and rebuild containers to get the changes.

Thanks!

immobile7801@piefed.social on 05 Jan 18:53 collapse

working as expected now. Thanks!
would you prefer feature requests on the github repo or here?

aquantumofdonuts@lemmy.world on 05 Jan 20:39 collapse

Great to hear! Feel free to post feature requests in either location, but github will tend to be preferred. Thank you!

Fmstrat@lemmy.world on 05 Jan 02:27 next collapse

Nice. Couple of things:

  • The link in your post is broken 😉
  • Consider doing with Jellyfin anything you’ve done with Plex. Plex is on it’s way out, especially with Fediverse users.
aquantumofdonuts@lemmy.world on 05 Jan 04:17 collapse

I think the link is fixed now?

I will definitely take the Jellyfin suggestion to heart. Mixarr is Plex-centric because that’s what I use, but I see that Jellyfin has a large share as well. Thanks for the suggestion!

Edit: Added Jellyfin support. Four new subscription types in the “My Library” subscription preset group. You can pull and rebuild docker (or pull the latest image) to get the changes.

Fmstrat@lemmy.world on 05 Jan 13:40 next collapse

Yup, link is golden now.

OR3X@lemmy.world on 05 Jan 16:44 next collapse

Might also consider looking into Navidrome support. Not sure if it’s even possible but in my experience Jellyfin’s music experience is kinda crappy.

Oddbin@sh.itjust.works on 06 Jan 17:51 collapse

Bloody hell. From request to implementation in less than 10 hours?! Amazing.

SeventySeven@sh.itjust.works on 05 Jan 15:27 next collapse

This is such good news to see this on my frontpage today, I’ll definitelybe giving this one a try later. Mad respect and appreciation for the amount of time this must have taken for you to make this. Thank you so much!

aquantumofdonuts@lemmy.world on 05 Jan 22:52 collapse

I appreciate the positive feedback, hope you find it useful

Buck@jlai.lu on 05 Jan 18:45 next collapse

I haven’t figured out how to use the we hook feature to connect to Pushover… maybe it can’t?

Unrefined@anarchist.nexus on 05 Jan 22:09 next collapse

Been playing around with it over the last few days and I love it. I don’t use Spotify, but it does a great job at looking at my Plex library and recommending similar artists.

Great job, and thanks!!

aquantumofdonuts@lemmy.world on 05 Jan 22:51 collapse

Thank you so much! Glad you are enjoying it.

NarrativeBear@lemmy.world on 05 Jan 22:35 next collapse

I am trying to put this behind Haproxy but not having much luck, I keep getting “client sent an HTTP request to an HTTPS server”.

Anyone have a clue how to resolve this?

I understand this image has its own caddy reverse proxy, not sure how to bypass that at the moment.

aquantumofdonuts@lemmy.world on 05 Jan 22:51 collapse

Hi, I think you can resolve this by forwarding your reverse proxy to mixarr-ip:3010. That bypasses Caddy altogether. Give that a try, and let me know how it goes.

NarrativeBear@lemmy.world on 06 Jan 00:37 collapse

I am running in docker, I got 443 pointed at 3443.

I saw the 3010 setting in the docs, i just can’t figure out if 3010 is pointed at 80?

aquantumofdonuts@lemmy.world on 06 Jan 01:18 collapse

3010 is the web port, on the web container itself (direct connection the the web ui). 3443->443 and 3080->80 are the Caddy ports, which also point to the web ui (just proxied through Caddy). Hopefully that’s not too confusing.

NarrativeBear@lemmy.world on 06 Jan 01:58 collapse

Understood, though it’s still kicking my butt TBH.

Exposing port 3010:3010 seems to get me a connection refused. But I can still connect to port 3443:443. Both ports are set to TCP.

Guess I’m just exhausted, will play around with it more tomorrow. Thanks for your help.

aquantumofdonuts@lemmy.world on 06 Jan 05:47 collapse

Sure thing. Can you share your docker-compose.yml or docker cli string? Maybe I can help.

Statick@lemmy.world on 06 Jan 16:00 collapse

First, thank you for making this. Seems very useful… That being said I’m having the same issue, even after mapping port 80, it redirects to https/443 no matter what I do.

services:
  mixarr:
      container_name: mixarr
      image: ghcr.io/aquantumofdonuts/mixarr:v1.1.0
      ports:
        - 3010:80 # Edit: change 80 to 3000 in order to bypass caddy in the container
        - 3443:443
      volumes:
        - ~/mixarr-data:/data
      environment:
        - SESSION_SECRET=$(openssl rand -hex 32)
        - FRONTEND_URL=https://my-domain:3443/
        - BASE_URL=http://my-domain:3010/
      restart: unless-stopped

Edit: Just realized you have it using caddy, always, and it is set to redirect to 443. You should give people the option to run without caddy in the container. I have my own instance of caddy running, I don’t need it built in.

That being said, changing it from pointing to port 80 and instead to port 3000 allows me to access it over http but ends up having authenticaton issues when trying to change settings.

Edit 2: Oh there is a much more robust docker-compose file. I was just going based on the readme. Will give it a try a bit later.

irmadlad@lemmy.world on 05 Jan 23:46 next collapse

Connects to Lidarr

So, I don’t run the ‘arr stack’, and am not interested in downloading, but I would like recommendations on new music. I am running Navidrome which scrobbles to Listenbrainz. How would Mixarr fit into this scenario?

curled@lemmy.dbzer0.com on 06 Jan 01:12 next collapse

Why would you need this for your scenario? If you’re not downloading you can simply check the listenbrainz recommendations in the playlists that it creates for you

irmadlad@lemmy.world on 06 Jan 14:41 collapse

Because I’m a dumbass who didn’t really understand what was going on. Kindly disregard the doddering old man.

curled@lemmy.dbzer0.com on 06 Jan 19:35 collapse

Oh lol I see, it happens

aquantumofdonuts@lemmy.world on 06 Jan 08:34 collapse

I pushed an update that adds a “review only” mode, with Lidarr no longer being a required connection.

github.com/aquantumofdonuts/mixarr/…/v1.1.1

Add any Subscription and set the result handling to “add to review queue”. Then, just look in the Review Queue tab for your recommendations.

<img alt="" src="https://lemmy.world/pictrs/image/f76980f6-9acb-4358-ab01-a6d2d1d3a378.png">

irmadlad@lemmy.world on 06 Jan 14:44 collapse

Oh snap! Man, you didn’t have to do all that just for one dipshit who didn’t understand what Mixarr was. I should have done a bit more reading. I feel embarrassed. I will spin this up in an hour or two when I get my chores done. Thank you so much!

aquantumofdonuts@lemmy.world on 06 Jan 19:26 collapse

Haha no worries! It’s a useful feature. No reason to lock the subscription engine behind a Lidarr connection.

But I think I will rest for a while now lol.

arthor@lemmy.world on 06 Jan 17:14 collapse

really liking this… i’ve been using SoulSync, but its very buggy, and its mainly a soulseek driven downloader… lidarr is the way to go,

which trackers are good for music? should i just try and get a red invite?