const Fuse = require('fuse.js') const playlist = require('../radioScraper/playlist.json') const fuseByAlbum = new Fuse(playlist, { keys: ['album'] }) const fuseByTrack = new Fuse(playlist, { keys: ['track'] }) function searchAlbums(query) { return fuseByAlbum.search(query).map(result => result.item) } function searchTracks(query) { return fuseByTrack.search(query).map(result => result.item) } function search(albumQuery, trackQuery, duration) { if (albumQuery) { const inAlbumSearch = new Fuse(searchAlbums(albumQuery), {keys: ['track']}) const trackResults = inAlbumSearch.search(trackQuery) console.log(`initial results: ${trackResults.length}`) trackResults.filter(result => result.item.duration === duration) if (trackResults.length > 0) { return trackResults[0].item } } else { const trackResults = searchTracks(trackQuery) console.log(`initial results: ${trackResults.length}`) const durationResults = trackResults.filter(result => result.duration === duration) console.log(`secondary results: ${durationResults.length}`) if (durationResults.length > 0) { return durationResults[0] } } } function trySearch() { console.log(JSON.stringify(search("The Lede", "Lanayru Mining Facility", "3:10"))) }