juke-restainer
v1.0.2
Published
A simple service to search music file on a folder, NAS, etc and expose data (tag, file location, etc) over api
Downloads
2
Readme
juke-restainer
a simple api to access your ID3 tagged music library. Useful to search specific song, author or album and submit the generated url to a music renderer (Home Assistant media_player entities, Google Cast via node-red-contrib-cast, mdp, etc)
running with nodejs
go to the folder containing the project, install the dependencies, edit your config.json and launch the server.
dependencies
go to the folder containing the project and run:
npm install
configuration: folder, web and security
edit the config.json file to change port, web root and directory to scan
{
"rootDir" : "/music", //the music folder to scan
"webPath" : "http://192.168.1.100/music", //the web path to translate (you must share the resource with a web server)
"port" : 3000, //the server port you are exposing
"token" : "", //a security token you may want to add
"ext" : ["mp3","ogg"], //supported file extensions,
"watchdog": {
"enabled": false, //enable rootDir file watchdog
"usePolling": false, //see https://github.com/paulmillr/chokidar#performance
"ignoreInitial": true, //see https://github.com/paulmillr/chokidar#performance
"interval": 100, //see https://github.com/paulmillr/chokidar#performance
"binaryInterval": 300 //see https://github.com/paulmillr/chokidar#performance
}
Watchdog
When watching large amount of files you should increase max_user_watches if you encounter this error: "UnhandledPromiseRejectionWarning: Error: ENOSPC: System limit for number of file watchers reached"
In your docker host run:
echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
then check with
cat /proc/sys/fs/inotify/max_user_watches
If watching a network mount you should enable polling.
running with args
you can use a custom config.json:
node server -c /path/to/my/configfoldercontainingconfigjson/
or launch with arguments:
node server -w http://192.168.1.12/MyWebServerHostingFiles -d '/data/MyWebServerDirectory' -p 3001 -t mycustomtoken
running with docker image
in docker you have to provide a music folder and a config folder:
docker run --name juke-restainer -p 3000:3000 -v /host/Music:/music -v /hostConfigFilePath:/config maxill1/juke-restainer:latest
api
http://:3000/search/:keyword
search "keyword" in title album or artist properties
http://:3000/file/:fileName
search "fileName" in file path
http://:3000/artist/:artist
search "artist" in artist property
http://:3000/title/:song or http://:3000/song/:song
search "song" in song property
http://:3000/album/:album
search "album" in album property
http://:3000/random/:number or http://:3000/random (10 track as default)
returns a number of random songs
http://:3000/library
returns the complete json library
http://:3000/library/update
force the update of the library
http://:3000/library/rebuild
drop and rebuild the library