Files
radio-scraper/playlist-search.js
2021-03-01 13:34:02 -07:00

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")))
}