core rework

This commit is contained in:
2021-11-29 22:13:15 +01:00
parent f94e3daaab
commit f75d084ab5
5 changed files with 65 additions and 28 deletions

View File

@@ -17,19 +17,24 @@ const download = (socket, url) => {
const ytldp = spawn(`./lib/yt-dlp${isWindows ? '.exe' : ''}`,
['-o', `${settings.download_path || 'downloads/'}%(title)s.%(ext)s`, url]
)
ytldp.stdout.on('data', data => {
// reactive programming magic
from(Promise.resolve(data)) // stout as promise => Observable
.pipe(throttle(() => interval(500))) // discard events closer than 500ms
.subscribe({
next: () => {
socket.emit('progress', data.toString()) // finally, emit
logger('download', `Fetching ${data.toString()}`)
}
})
})
from(ytldp.stdout) // stout as observable
.pipe(throttle(() => interval(500))) // discard events closer than 500ms
.subscribe({
next: (stdout) => {
let _stdout = String(stdout)
socket.emit('progress', formatter(_stdout)) // finally, emit
//logger('download', `Fetching ${stdout}`)
console.log(formatter(_stdout))
},
complete: () => {
socket.emit('progress', { status: 'Done!' })
logger('download', 'Done!')
}
})
ytldp.on('exit', () => {
socket.emit('progress', 'Done!')
socket.emit('progress', { status: 'Done!' })
logger('download', 'Done!')
})
}
@@ -45,6 +50,30 @@ const abortDownload = (socket) => {
logger('download', 'Aborted')
}
const formatter = (stdout) => {
const cleanStdout = stdout
.replace(/\s\s+/g, ' ')
.split(' ')
const status = cleanStdout[0].replace(/\[|\]|\r/g, '')
switch (status) {
case 'download':
return {
status: cleanStdout[0].replace(/\[|\]|\r/g, ''),
progress: cleanStdout[1],
size: cleanStdout[3],
dlSpeed: cleanStdout[5],
}
case 'merger':
return {
status: 'merging',
progress: '100',
}
default:
return { progress: '0' }
}
}
module.exports = {
download: download,
abortDownload: abortDownload