crossonic

package module
v0.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 31, 2026 License: AGPL-3.0 Imports: 8 Imported by: 0

README

Crossonic Server

Crossonic-Server is a Subsonic-compatible music server with the aim to support modern features of the OpenSubsonic API and custom extensions for use with the Crossonic client application.

It works by scanning a directory containing your music files and making your music library available to Crossonic and all other (Open)Subsonic compatible clients, that can be used to browse and stream your music on all your devices similar to popular streaming services.

Installation

Follow the installation guide.

Features

  • Robust library scanning
    • Takes MusicBrainz IDs into account
    • Stores crossonic song ID in the file metadata to prevent losing favorites/scrobbles when renaming files and/or changing metadata
    • Multiple artists/genres per song
    • Release groups, labels, disc subtitles, replay gain, lyrics, bpm, …
    • Incremental scanning (only scans files that have changed)
  • Multi-user
    • Each with their own playlists, scrobbles, favorites, …
    • Add internet radio stations per user
  • Multi-library support
    • Per-user access controls
    • Select multiple libraries simultaneously in the app
  • ListenBrainz integration
    • Scrobbling
    • Two-way favorites sync
    • Configurable for each user
  • Fetch artist images and biographies from last.fm
  • On-the-fly transcoding and caching
    • Configurable format= and maxBitRate= parameters
    • raw, mp3, opus, vorbis
  • Receive scrobbles from clients (including playback duration)
  • Proper handling of different release versions
  • Compatible with your favorite (Open)Subsonic clients

Documentation

All documentation can be found on the Crossonic website.

Some useful links:

License

Copyright (c) 2024-2026 Julian Hofmann

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ServerName      = "crossonic-server"
	Version         = "dev"
	ProtocolVersion = "0.4.0"
)
View Source
var GenID func() string
View Source
var IDAlphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-~"
View Source
var IDRegex = regexp.MustCompile(fmt.Sprintf("^(tr|al|ar|pl|irs)_[%s]{12}$", strings.ReplaceAll(IDAlphabet, "-", "\\-")))
View Source
var MigrationsFS fs.FS

Functions

func GenIDAlbum

func GenIDAlbum() string

func GenIDArtist

func GenIDArtist() string

func GenIDInternetRadioStation

func GenIDInternetRadioStation() string

func GenIDPlaylist

func GenIDPlaylist() string

func GenIDSong

func GenIDSong() string

func IsIDType

func IsIDType(id string, idType IDType) bool

Types

type IDType

type IDType string
const (
	IDTypeSong                 IDType = "tr"
	IDTypeAlbum                IDType = "al"
	IDTypeArtist               IDType = "ar"
	IDTypePlaylist             IDType = "pl"
	IDTypeInternetRadioStation IDType = "irs"
)

func GetIDType

func GetIDType(id string) (IDType, bool)

Directories

Path Synopsis
cmd
admin command
server command
Package util contains small helper functions that are needed in many different contexts.
Package util contains small helper functions that are needed in many different contexts.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL