package localimport ("io/fs""sync""github.com/navidrome/navidrome/model/metadata")// Extractor is an interface that defines the methods that a tag/metadata extractor must implementtype Extractor interface {Parse(files ...string) (map[string]metadata.Info, error)Version() string}type extractorConstructor func(fs.FS, string) Extractorvar (extractors = map[string]extractorConstructor{}lock sync.RWMutex)// RegisterExtractor registers a new extractor, so it can be used by the local storage. The one to be used is// defined with the configuration option Scanner.Extractor.func RegisterExtractor(id string, f extractorConstructor) {lock.Lock()defer lock.Unlock()extractors[id] = f}