136 lines
3.7 KiB
JavaScript
136 lines
3.7 KiB
JavaScript
|
import ytdl from 'ytdl-core'
|
||
|
import ytsr from 'ytsr'
|
||
|
import ytpl from 'ytpl'
|
||
|
|
||
|
const state = {
|
||
|
main: 0,
|
||
|
isYtSearchRunning: false
|
||
|
}
|
||
|
|
||
|
const getters = {
|
||
|
getMain ({ state }) {
|
||
|
return state.main
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const actions = {
|
||
|
ytSearch ({ commit, dispatch }, payload) {
|
||
|
console.log('Performing search please wait...')
|
||
|
return new Promise((resolve, reject) => {
|
||
|
if (state.isYtSearchRunning) {
|
||
|
console.log('search is running. please try again')
|
||
|
resolve(false)
|
||
|
}
|
||
|
|
||
|
commit('toggleIsYtSearchRunning')
|
||
|
|
||
|
dispatch('ytSearchGetFilters', payload).then((filter) => {
|
||
|
if (typeof (payload.options.nextpageRef) === 'undefined' && filter !== payload.query) {
|
||
|
payload.options.nextpageRef = filter
|
||
|
}
|
||
|
|
||
|
ytsr(payload.query, payload.options, (err, result) => {
|
||
|
commit('toggleIsYtSearchRunning')
|
||
|
if (err) {
|
||
|
console.log(err)
|
||
|
reject(err)
|
||
|
} else {
|
||
|
console.log(result)
|
||
|
console.log('done')
|
||
|
resolve(result)
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
},
|
||
|
|
||
|
ytSearchGetFilters ({ rootState }, payload) {
|
||
|
return new Promise((resolve) => {
|
||
|
let filter = payload.query
|
||
|
let searchSettings = payload.searchSettings
|
||
|
|
||
|
if (typeof (searchSettings) === 'undefined') {
|
||
|
searchSettings = rootState.utils.searchSettings
|
||
|
}
|
||
|
|
||
|
console.log(searchSettings)
|
||
|
|
||
|
// This is extremely ugly, though this is the recommended way to accomplish this
|
||
|
// in the GitHub documentation
|
||
|
console.log(`Current ref: ${filter}`)
|
||
|
ytsr.getFilters(filter).then((filters) => {
|
||
|
if (searchSettings.type !== 'all') {
|
||
|
filter = filters.get('Type').find(o => o.name.toLowerCase().includes(rootState.utils.searchSettings.type)).ref
|
||
|
}
|
||
|
|
||
|
console.log(`Current ref: ${filter}`)
|
||
|
ytsr.getFilters(filter).then((filters) => {
|
||
|
if (searchSettings.time !== '') {
|
||
|
filter = filters.get('Upload date').find(o => o.name.toLowerCase().includes(rootState.utils.searchSettings.time)).ref
|
||
|
}
|
||
|
|
||
|
console.log(`Current ref: ${filter}`)
|
||
|
ytsr.getFilters(filter).then((filters) => {
|
||
|
if (searchSettings.duration !== '') {
|
||
|
filter = filters.get('Duration').find(o => o.name.toLowerCase().includes(rootState.utils.searchSettings.duration)).ref
|
||
|
}
|
||
|
|
||
|
console.log(`Current ref: ${filter}`)
|
||
|
ytsr.getFilters(filter).then((filters) => {
|
||
|
if (searchSettings.sortBy !== 'relevance') {
|
||
|
const sortBy = rootState.utils.searchSettings.sortBy.replace('_', ' ')
|
||
|
filter = filters.get('Sort by').find(o => o.name.toLowerCase().includes(sortBy)).ref
|
||
|
}
|
||
|
|
||
|
console.log(`Final ref: ${filter}`)
|
||
|
resolve(filter)
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
},
|
||
|
|
||
|
/* eslint-disable-next-line */
|
||
|
ytGetPlaylistInfo ({}, playlistId) {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
console.log(playlistId)
|
||
|
console.log('Getting playlist info please wait...')
|
||
|
ytpl(playlistId, (err, result) => {
|
||
|
if (err) {
|
||
|
reject(err)
|
||
|
} else {
|
||
|
resolve(result)
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
},
|
||
|
|
||
|
/* eslint-disable-next-line */
|
||
|
ytGetVideoInformation ({}, videoId) {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
console.log('Getting video info please wait...')
|
||
|
ytdl.getInfo(videoId, (err, result) => {
|
||
|
if (err) {
|
||
|
reject(err)
|
||
|
} else {
|
||
|
resolve(result)
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const mutations = {
|
||
|
toggleIsYtSearchRunning (state) {
|
||
|
state.isYtSearchRunning = !state.isYtSearchRunning
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export default {
|
||
|
state,
|
||
|
getters,
|
||
|
actions,
|
||
|
mutations
|
||
|
}
|