AutoRescan plugin

One of the drawbacks with the Squeezebox (or, more accurately, the server that feeds it), is that it won't automatically pick up new music that you add to your music library. You can set the server to periodically rescan (eg overnight) but, invariably, I want to listen to the new music when I've just added it.

So, to help with that I've developed the AutoRescan plugin. It quietly monitors your music library and will add new tracks as soon as you drop them into the music folder. It will also identify tracks that have been moved, copied, renamed or deleted. You can find details of the plugin, and a download, here.

Note: this functionality is due to be moved into the core of the Squeezebox Server from version 8.0 and so this plugin will no longer be necessary. However, at the time of writing that's probably still quite a long way off.

Comments

What's AutoRescan.pm in v7.7?

I see that something is shipping at least as of v7.7:

/usr/lib/perl5/vendor_perl/Slim/Utils/AutoRescan
/usr/lib/perl5/vendor_perl/Slim/Utils/AutoRescan.pm
/usr/lib/perl5/vendor_perl/Slim/Utils/AutoRescan/Linux.pm
/usr/lib/perl5/vendor_perl/Slim/Utils/AutoRescan/OSX.pm
/usr/lib/perl5/vendor_perl/Slim/Utils/AutoRescan/Stat
/usr/lib/perl5/vendor_perl/Slim/Utils/AutoRescan/Stat.pm
/usr/lib/perl5/vendor_perl/Slim/Utils/AutoRescan/Win32.pm
/usr/lib/perl5/vendor_perl/Slim/Utils/AutoRescan/Stat/AIO.pm
/usr/lib/perl5/vendor_perl/Slim/Utils/AutoRescan/Stat/Async.pm

that seems similar, and there is an "autorescan" in the config file as well. I haven't dug into it but it seems related, also using inotify on Linux. So what to use these days - your plugin or this existing code (which seems to have no web configuration...?)

Thanks,
-Eric

Yes but no but

The short answer is that there is auto rescan code built into LMS these days, but sadly it's probably not enabled for you.

The code was based on my plugin - quite a while ago Logitech asked my permission to develop it into the server, which I of course gave them (not that they need it given the plugin's GPL licensing). However, it's not enabled for anything other than the SqueezeOS platform yet, even in the latest 7.8 beta. SqueezeOS is the embedded server that can run on the Squeezebox Touch, but you're unlikely to be using that.

The trick to tracking this down is to look at around like 1181 of slimserver.pl, this calls "Slim::Utils::OSDetect::getOS->canAutoRescan" to check if auto rescanning is supported on the host OS. The default implementation of this in Slim/Utils/OS.pm returns 0, but can be overridden in specific OS modules. This method is only implemented in to return 1 (true) in SqueezeOS.pm.

So, it's there but not activated. You could hack the server to enable it for your OS, but I've never tried that and I don't know it works.

My AutoRescan plugin should work OK with 7.7 if you're on Linux or an ActiveState perl install on Windows, though.

Stuart