42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
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")))
|
|
}
|