• 0 Posts
  • 3 Comments
Joined 2 years ago
cake
Cake day: July 6th, 2023

help-circle

  • i_uuuh_what@lemmy.worldtoSelfhosted@lemmy.worldReplacing Spotify
    link
    fedilink
    English
    arrow-up
    29
    arrow-down
    1
    ·
    edit-2
    8 days ago

    Spotify replacement? Oh, hey, that’s me.

    I’m working on Tapesonic, a subsonic-compatible self-hostable streaming service. It won’t stream your local library, but it can import stuff from YouTube and Bandcamp (and probably other sites yt-dlp supports, but I didn’t bother testing) and stream those. Started making it because Lidarr can’t download basically anything and also can’t manage anything that’s not in MusicBrainz even if you download it yourself.

    As for discovery - Tapesonic can scrobble your listens to ListenBrainz and, since a couple of days ago, last.fm. Those in turn provide recommendation playlists.

    • ListenBrainz playlists are already incorporated, but Tapesonic can only match the songs you already have in your library - everything else is ignored; completely useless for actual discovery and the recommendations aren’t great anyway to be honest
    • last.fm recommendations are pretty good and I’m actively working on importing those; last.fm provides a YouTube URL for each track and Tapesonic can import YouTube URLs - you see where this is going, yeah? I expect to push a somewhat working implementation in a couple of weeks as I already have a prototype that works surprisingly well

    Caveats:

    • Tapesonic is still in it’s “prototyping phase” (what do you mean it’s been more than a year since I started it…) - everything gets changed all the time, only core features get implemented, UI sucks, all that jazz
    • breaking changes anytime - expect having to completely wipe everything and start anew at any moment
    • no multi-user support for now and I have no idea when it’ll come; you can host multiple instances I guess

    Want to give it a try?

    • docker run --rm -p 8080:8080 -e TAPESONIC_USERNAME=user -e TAPESONIC_PASSWORD=pass ghcr.io/sibwaf/tapesonic
    • http://localhost:8080/, username/password from the previous command (“user”/“pass” in this case)
    • “New tape” -> paste any Bandcamp album URL -> “Import” -> “Add all” -> “Next” a couple of times
    • Connect a subsonic client (Feishin, Sonixd, Ultrasonic for desktop, Tempo for Android) to the same address, same credentials
    • Enjoy!

    Any other configuration parameters, persistency, stuff like this - sorry, you’ll have to study the code. No docs and no support for now.


  • gonic as the streaming server, Lidarr for library management and some of the downloads, Sonixd/Tempo as desktop/mobile clients.

    Works alright for albums (downloads are a pain), probably won’t really work in your case though.

    Everything is running on a single-node k8s cluster (because infrastructure-as-code is awesome), but it’s probably overkill for most people. https://github.com/sibwaf/Infrastructure for reference if you’re interested (/selfhosted/charts - lidarr, gonic)

    Shameless self-plug: I’m working on a Subsonic-compatible server which wraps yt-dlp (i.e. allows downloading from YouTube/Bandcamp and then streams it). Seems like it should work for your case of handling single tracks. It’s still very much in progress (very-very slow progress) and really isn’t ready for use, but if anyone is interested in following the project: https://github.com/sibwaf/Tapesonic