CherryMusic
A music streaming server written in python:
Stream your own music collection to all your devices!
- ✓ free & open-source (GPL)
- ✓ easy setup, download and go
- ✓ blazingly fast search
- ✓ share playlists with your friends
Download now »
Version 0.25.0 is out! Stability! Yaay!
Free & Open Source
CherryMusic is completely free, you can get the source code
from github and modify it to your will. It's released under
a GPL license.
Easy Setup
After downloading CherryMusic, you must merely tell it where
to look for your music. That's all. CherryMusic takes care of
all the database bullshit and so on.
HTML5
You can listen to your music on all HTML5 compliant devices, that includes
your pretty smart phone (Android or iPhone) as well as just about
any modern browser.
Share
You can create accounts for your friends and share playlists.
Just like ol'times, give away a cassette tape.
Search your music
CherryMusic has a built-in database, that will index your music.
Find your favorite song in an instant!
Album Art
CherryMusic can automatically fetch the album cover art for all
your music. But don't worry, we don't change anything in your collection.
CherryMusic is a standalone music server written in Python and based on CherryPy and jPlayer.
It is intended to be an alternative to Last.fm, Spotify, Grooveshark... you name it.
Download
No-Headaches-grab-it-while-it's-hot-release:
Download CherryMusic 0.25.2
Getting started:
You can now configure CherryMusic in the browser on first start!
$ python cherrymusic --setup --port 8080
Just launch firefox (or any browser for that matter):
$ firefox localhost:8080
Easy, wasn't it?
Distribution packages:
Distribution specific setup guides:
old versions:
Use the source, Luke
-
We're on github. Checkout or download the cherrymusic sources, e.g.:
$ git clone git://github.com/devsnd/cherrymusic.git
-
To use cherrymusic you need CherryPy. There are two options:
-
If you don't want to install it: CherryMusic can keep a local copy of the module for you, so you don't have to care about it.
-
Install it. Use your favorite package manager,
or download it and do a manual install.
cherrymusic will offer to do this for you if it cannot find an installed CherryPy to use.
-
Now simply run the main script using python.
$ python cherrymusic --setup --port 8080
-
Open your browser and play some music!
$ firefox localhost:8080
Screenshots
Everybody loves screenshots.
But of course they don't tell too much. Just try it out!
The last image is an example of how it could look like on your mobile.
Requirements
optional dependencies:
optional dependencies (python 2 only):
FAQ
-
Does CherryMusic alter my collection in any way?
Nope. For CherryMusic your collection is and stays read-only.
All the indices and additional meta-data are stored in
a folder in your home folder., specifically in the
-
I've started CherryMusic, but the search doesn't give any results!
Well, that is not a question. Anyway, please make sure CherryMusic has already indexed your music. You can either
start it with the --update switch, or open the admin panel and click on
"Update Music Library"
-
Can I use SSL/HTTPS?
Yes, you can. (see the man page/configuration file on how to set it up)
Note: If you're using python 2.x, please make sure to have pyOpenSSL installed
-
Where's my config file?
On linux:
Normally it's in ~/.config/cherrymusic/cherrymusic.conf
If not, check where your $XDG_CONFIG_HOME points to.
On windows:
You can find your config file in %APPDATA%\cherrymusic\cherrymusic.conf,
e.g. C:\Users\1337hax0r\Application Data\cherrymusic
On OSX:
It is in ~/Application Support/cherrymusic/cherrymusic.conf
-
Where are the databases and images saved?
On linux:
Normally it's in ~/.local/share/cherrymusic
Otherwise see: $XDG_DATA_HOME
On windows:
You can find your user data in %APPDATA%\cherrymusic,
e.g. C:\Users\1337hax0r\Application Data\cherrymusic
On OSX:
It is in ~/Application Support/cherrymusic
-
Is this CherryMusic yet another MPD?
No, not at all. MPD is a music server, that is able to play music and
which can be remote controlled by the clients. CherryMusic
is a mp3-Streaming server, that means that the clients will get to
play to the music. This also means that you will be able to listen to your
music everywhere, as long as you have internet.
-
Are there Packages of this software for my Linux distro?
Yes. There is one for Arch Linux:
cherrymusic in the AUR
And there is an ebuild for gentoo:
Gentoo ebuild
But it should be straight forward to create a package for your distro,
since the python build system (distutils) is meant for that.
-
Does it work on Windows?
Yes. Or rather, probably yes. There's one known problem and a workaround for
that (see the bottom of the page). We're trying to test it on all platforms
but we don't have the time to check everything. Let us know if you experience
any problems. I'd bet a chicken it runs just fine.
-
What about OSX, does it work there?
Yes. We try to test it once in a while on OSX and each time we do so everything
worked. Please tell us if you experience any problems.
Changelog
- FIX: Error on first startup when not using the browser setup
- FIX: serving files with non-ASCII names (CherryPy monkey-patch)
- FEATURE: database versioning support
- FEATURE: busy indicator only occupies busy parts of the interface
- IMPROVEMENT: warn user about database updates before perfoming them
- FEATURE: CLI configuration override: --conf KEY=VALUE
- FEATURE: --port switch for overriding server port on start-up
- FEATURE: autoplay on adding first track to playlist (optional)
- FIX: minor corrections for various messages and help files
- FIX: correctly adding tracks to playlist after clearing it before
- FIX: preventing python 3 module stagger to be imported in python 2
- FIX: automatically indexing music on first start after setup
- FIX: playlist deletion button only visible for admins and owners
- FIX: track transcoding is determined on the fly (playlist portablity)
- IMPROVEMENT: switched to nosetest for automatic testing
- CHANGE: removed open search plugin
- FIX: logout works also with previous request containing post-data
- FEATURE: reworked UI using bootstrap (pretty & shiny!)
- FEATURE: new --setup switch enables first configuration in browser
- FEATURE: album art resizing (requires opt-depend ImageMagick)
- FEATURE: man pages!
- FEATURE: backward compatibility down to python 2.6
- FEATURE: users can change their password in the option menu
- IMPROVEMENT: search speed *and* quality greatly improved
- IMPROVEMENT: rewrite of transcoding module (works more reliably now)
- IMPROVEMENT: using HTML5 & Flash at the same time to reduce need to transcode
- IMPROVEMENT: playlist visibility can be changed in playlist browser
- IMPROVEMENT: users can change their passwords in the option menu
- IMPROVEMENT: flash block detection for opera
- IMPROVEMENT: better IPv6 support
- CHANGE: honoring XDG Base Directory Specification,
- CHANGE: M3U & PLS download buttons hidden by default, can be reactivated in options
- CHANGE: removed unidecode from package, is now opt-depend
- FIX: Album art fetching doesn't stall interface anymore
- FIX: user online time display is now correct independent of the client time
- FIX: Loading or creating a playlist no longer interrupts playback
- FIX: Workaround for older cherrypy version on python 3.3
- FIX: users can no longer modify other user's public playlists
- FIX: invalidating session of deleted users
- FIX: local autologin works again
- FEATURE: New 2 Column Layout (Search and Playlists side by side)
- FEATURE: Manage multiple playlists in tabs
- FEATURE: OpenSearch for adding cherrymusic to browser search bar
- FEATURE: user changeable colors for the interface
- FEATURE: responsive design for mobiles (switch between playlist and search view)
- FEATURE: display remaining time for playlists
- FEATURE: added --dropfiledb switch for reinitialization of file db
- FEATURE: local cover art is loaded automatically
- FEATURE: remotely fetched cover art is now cached in ~/.cherrymusic/albumart
- FEATURE: customizable keyboard shortcuts
- FEATURE: advanced search syntax: prefixes "!f" and "!d" only files or directories respectively
- CHANGE: --update only performs an update anb does not start the server anymore
- CHANGE: renaming of config options:
- FIXED: execution from another work dir lead to not finding local resources
- FIXED: fixed jerky control buttons in webkit browsers
- FIXED: API accessible when not authenticated
- FIXED: SSL not working due to wrong IP parsing
- FIXED: symlinks being resolved not correctly
- FIXED: flashblock taken into account, users can activate player on demand
- FIXED: playlist duration longer than one hour not properly displayed
- FIXED: admin tab not visible anymore for non-admin users
- FIXED: being able to create new admin users from the GUI
- FIXED current track not being highlighted after changing anything in playlist
- UPDATE: updated jQuery to version 1.8.3
- DEPRECATED: Themes aren't used anymore
- FEATURE: drag'n'drop sortable playlist
- FEATURE: partial updates. cherrymusic --update /path/to/changed/directory
- FEATURE: python 3.1 downward compatibility for debian users
- FEATURE: cherrymusic tries to automatically fetch album covers
- FEATURE: new layout for mobile devices
- FEATURE: --update switch now runs in background, immediate server start
- FEATURE: compactly listed folder paths are now autocompleted if listed
- FEATURE: Added dependency installer, so that cherrymusic can be run on
- FEATURE: see online users in the admin panel
- FEATURE: delete users
- IMPROVEMENT: shuffle uses algorithm to play possibly unplayed tracks first
- IMPROVEMENT: Configuration interface overhaul. new or deprecated
- IMPROVEMENT: search speed
- FIXED: removed configdb, proved to be unnecessary
- FIXED: jPlayer doesn't play mp3s when no codecs installed on server
- EXPERIMENTAL: cherrymusic can be started as a daemon using cherrymusicd
- UPDATE: jPlayer updated to version 2.2.0
- IMPROVEMENT: updates run smoother, better progress report (server startup doesn't trigger update anymore)
- IMPROVEMENT: playlists remembered in session retain track order
- FEATURE: updates are triggered using the --update switch
- FEATURE: --newconfig switch creates a new config file (config.new) in the home dir
- FEATURE: show playtime of tracks and of playlist (requires ffmpeg)
- FEATURE: unfinished search terms also yield results
- IMPROVEMENT: search result weight algorithm takes partial matches into account
- FEATURE: auto-login on localhost
- EXPERIMENTAL: live transcoding of flac, ogg, mp3
- FIX: cherrypy not shutting down cleanly
- FIX: being able to create duplicate playlist names
- FEATURE: Made playlists deletable
- FEATURE: Added "update database" button in admin panel
- FEATURE: Added "remove played tracks" button
- FIX: browser showing compact entries multiple times
- FIX: bug that prevents listening to music when no codec is installed on host
- FEATURE: exporting playlists as PLS or M3U (take this, edna!)
- + MANY MORE...
- FEATURE: https encryption support
- FEATURE: option to listen only on localhost
- FIX: config and databases now reside in the user's home directory
- FEATURE: savable playlists
- FIX: added GPL license
- FEATURE: salted user passwords
- FEATURE: admin user can be created inside web-interface on first start
- FEATURE: playlists are periodically saved in the session, so they're
- FEATURE: theming support
- FEATURE: configurable server port
- FEATURE: admin panel for creating new users
- FEATURE: welcome screen for CLI and web-interface
Issues
You've found a bug in CherryMusic? That's awesome. Tell us about it! You can open an issue in the
issue tracker of github and we'll take care of it.
Known Issues
Flash block
An active flash blocker can interfere with the web frontend.
If you have trouble with things like track selection or playback, try whitelisting
the server in your browser's flash blocker / plugin manager.
On Windows:
FileNotFoundError: [WinError 2] The system cannot find the file specified:
'C:\...\cherrymusic\sessions\session-622d41384b5f877a840ba5dfe38408dc4853e8f4.lock'
This error can be circumvented by setting the
keep_session_in_ram = True
in the configuration file (%APPDATA%\cherrymusic\cherrymusic.conf,
e.g. C:\Users\1337hax0r\Application Data\cherrymusic\cherrymusic.conf)
Known Bugs
All known bugs are filed as github issues.
If you've found a bug, please report it on github. We want to make CherryMusic as cool as possible and need your help!
CherryMusic was created by Tom Wallroth (tomwallroth [aŧ] gmail [døt] com)
and is currently developed together with Tilman Börner.
thanks to