Implemented execute command after download

This commit is contained in:
RemixDev 2021-05-31 23:25:53 +02:00
parent 5ec2e82fcb
commit 50b4785b59
2 changed files with 14 additions and 2 deletions

View file

@ -2,7 +2,7 @@ const { Track } = require('./types/Track.js')
const { StaticPicture } = require('./types/Picture.js')
const { streamTrack, generateStreamURL, DownloadCanceled } = require('./decryption.js')
const { tagID3, tagID3v1, tagFLAC } = require('./tagger.js')
const { USER_AGENT_HEADER, pipeline } = require('./utils/index.js')
const { USER_AGENT_HEADER, pipeline, shellEscape } = require('./utils/index.js')
const { DEFAULTS, OverwriteOption } = require('./settings.js')
const { generatePath, generateAlbumName, generateArtistName, generateDownloadObjectName } = require('./utils/pathtemplates.js')
const { TrackFormats } = require('deezer-js')
@ -10,6 +10,7 @@ const got = require('got')
const fs = require('fs')
const { tmpdir } = require('os')
const { queue, each, eachOf } = require('async')
const { exec } = require("child_process")
const extensions = {
[TrackFormats.FLAC]: '.flac',
@ -520,6 +521,8 @@ class Downloader {
}
// Execute command after download
if (this.settings.executeCommand !== "")
exec(this.settings.executeCommand.replaceAll("%folder%", shellEscape(this.extrasPath)).replaceAll("%filename%", shellEscape(track.filename)))
}
async afterDownloadCollection(tracks){
@ -575,6 +578,8 @@ class Downloader {
}
// Execute command after download
if (this.settings.executeCommand !== "")
exec(this.settings.executeCommand.replaceAll("%folder%", shellEscape(this.extrasPath)).replaceAll("%filename%", ''))
}
}

View file

@ -71,6 +71,12 @@ function uniqueArray(arr){
return arr
}
function shellEscape(s){
if (typeof s !== 'string') return ''
if (!(/[^\w@%+=:,./-]/g.test(s))) return s
return "'" + s.replaceAll("'", "'\"'\"'") + "'"
}
function removeDuplicateArtists(artist, artists){
artists = uniqueArray(artists)
Object.keys(artist).forEach((role) => {
@ -88,5 +94,6 @@ module.exports = {
removeDuplicateArtists,
pipeline,
canWrite,
changeCase
changeCase,
shellEscape
}