ivy-ampache
is an elisp package allowing you to access your ampache library from Emacs.
It uses the XML API of ampache to get the data from the server.
It parses artists, albums, songs and the streaming url. The urls are then fed to an external player for audio playback.
It currently can use several players as backends. Please refer to the related section.
The main entrypoint function is ivy-ampache-play-album
.
This package has only been tested with the music application and Nextcloud, but it should work with a traditional ampache server.
Diclaimer: This is my first Emacs and elisp package, so there might be dragons. Furthermore, don't hesitate to provide feedback and advices to improve the code quality (as I am mainly an object-oriented programmer).
The package has been tested on GNU Linux (Ubuntu) and Windows.
Via el-get (or other package managers that handle github urls):
(el-get-bundle ivy-ampache
:url "https://github.com/aancel/ivy-ampache"
:features ivy-ampache)
- Setup the environment for the package
;; Login information
(setq ampache-user "user")
(setq ampache-password "password")
;; Url of the instance
(setq ampache-base-url "https://nextcloud.domain.com/index.php/apps/music/ampache")
(setq ampache-result-limit "100")
If you use the music application for Nextcloud, the auth parameters you have to provide are your username and an API password that you can generate in Settings > Additional settings.
As of now, there are two backend for playing music and handling playlists:
- Either via emms, by setting:
;; When using this backend on Windows, use mplayer instead of vlc
;; Using the external vlc process tends to block further accesses to the server
(setq ampache-use-emms-backend t)
- Or directly via external players
;; Do not use the emms backend
(setq ampache-use-emms-backend nil)
;; Then specify the media player path
(setq ampache-media-player "C:\\Program Files (x86)\\Clementine\\clementine.exe")
Clementine and vlc are available, other players could be supported.
- Make sure ampache-auto-login is enabled
;; Sets up auto-login to instance, otherwise use (ampache-authenticate)
(setq ampache-auto-login t)
- Enqueue albums
M-x ivy-ampache-play-album
- Authenticate with your server
M-x ampache-authenticate
- Enqueue albums
M-x ivy-ampache-play-album