1
0
forked from notnull/apradiobot

add requests to user playlists

This commit is contained in:
notnull 2019-12-21 21:59:52 -05:00
parent 1736ed2443
commit 1418299ff0
2 changed files with 23 additions and 16 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
node_modules node_modules
old old
.env .env
playlists/*

View File

@ -13,13 +13,17 @@ const spotify = new Spotify({
const parseTrackData = tracks => { const parseTrackData = tracks => {
const { items } = tracks const { items } = tracks
printTrackNames(items) //printTrackNames(items)
const { album, artists, uri, name } = items[0] const { album, artists, uri, name } = items[0]
const artist = artists[0].name const artist = artists[0].name
const albumName = album.name const albumName = album.name
return { trackName: name, artistName: artist, albumName, uri } return { trackName: name, artistName: artist, albumName, uri }
} }
const addToPlaylist = (nick, string) => {
require('fs').appendFileSync(`playlists/${nick}`, string)
}
const searchTrack = event => { const searchTrack = event => {
let pattern = /^!search "(.+?)"( artist "(.+?)")?/ let pattern = /^!search "(.+?)"( artist "(.+?)")?/
let match = event.message.match(pattern) let match = event.message.match(pattern)
@ -30,7 +34,7 @@ const searchTrack = event => {
let query = match[1] let query = match[1]
if (match[3]) query += ` artist:${match[3]}` if (match[3]) query += ` artist:${match[3]}`
printQuery(query) //printQuery(query)
spotify.search({ type: 'track', query }).then(data => { spotify.search({ type: 'track', query }).then(data => {
if (!data || !data.tracks) return event.reply('Something went wrong.') if (!data || !data.tracks) return event.reply('Something went wrong.')
if (data.tracks.total === 0) return event.reply('No results.') if (data.tracks.total === 0) return event.reply('No results.')
@ -52,7 +56,7 @@ const requestTrack = event => {
let query = match[1] let query = match[1]
if (match[3]) query += ` artist:${match[3]}` if (match[3]) query += ` artist:${match[3]}`
printQuery(query) //printQuery(query)
spotify.search({ type: 'track', query }).then(data => { spotify.search({ type: 'track', query }).then(data => {
if (!data || !data.tracks) return event.reply('Something went wrong.') if (!data || !data.tracks) return event.reply('Something went wrong.')
if (data.tracks.total === 0) return event.reply('No results.') if (data.tracks.total === 0) return event.reply('No results.')
@ -62,22 +66,24 @@ const requestTrack = event => {
printTrackData(trackName, artistName, albumName, uri) printTrackData(trackName, artistName, albumName, uri)
const { error } = insertTrack(uri) const { error } = insertTrack(uri)
if (error) return event.reply('Something went wrong.') if (error) return event.reply('Something went wrong.')
event.reply(`Requested '${trackName}' by ${artistName}`) const request = `'${trackName}' by ${artistName}`
addToPlaylist(event.nick, `${uri} # ${request}`)
event.reply(`Requested ${request}`)
}) })
} }
const printQuery = query => { // const printQuery = query => {
console.log(chalk.red('\n*******************************************\n')) // console.log(chalk.red('\n*******************************************\n'))
console.log('Sending the following query to Spotify:') // console.log('Sending the following query to Spotify:')
console.log(query) // console.log(query)
console.log(chalk.red('\n*******************************************\n')) // console.log(chalk.red('\n*******************************************\n'))
} // }
const printTrackNames = items => { // const printTrackNames = items => {
console.log(chalk.yellow('\n*******************************************\n')) // console.log(chalk.yellow('\n*******************************************\n'))
console.log('Search returned the following tracks:') // console.log('Search returned the following tracks:')
items.map(i => console.log(`'${i.name}' by ${i.artists[0].name}`)) // items.map(i => console.log(`'${i.name}' by ${i.artists[0].name}`))
console.log(chalk.yellow('\n*******************************************\n')) // console.log(chalk.yellow('\n*******************************************\n'))
} // }
const printTrackData = (name, artist, albumName, uri) => { const printTrackData = (name, artist, albumName, uri) => {
console.log(chalk.blue('\n*******************************************\n')) console.log(chalk.blue('\n*******************************************\n'))
console.log('name:', name) console.log('name:', name)