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)
go to the folder containing the project, install the dependencies, edit your config.json and launch the server.
go to the folder containing the project and run:
npm install
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
}
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.
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
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
search "keyword" in title album or artist properties
search "fileName" in file path
search "artist" in artist property
search "song" in song property
search "album" in album property
returns a number of random songs
returns the complete json library
force the update of the library
drop and rebuild the library