diff --git a/src/modules/processing/match.js b/src/modules/processing/match.js index cc9543c..a6432e4 100644 --- a/src/modules/processing/match.js +++ b/src/modules/processing/match.js @@ -114,6 +114,7 @@ export default async function(host, patternMatch, url, lang, obj) { url, author: patternMatch.author, song: patternMatch.song, + format: obj.aFormat, shortLink: patternMatch.shortLink || false, accessKey: patternMatch.accessKey || false }); diff --git a/src/modules/processing/services/soundcloud.js b/src/modules/processing/services/soundcloud.js index 6a20acc..2288b5f 100644 --- a/src/modules/processing/services/soundcloud.js +++ b/src/modules/processing/services/soundcloud.js @@ -63,11 +63,12 @@ export default async function(obj) { if (!json["media"]["transcodings"]) return { error: 'ErrorEmptyDownload' }; let bestAudio = "opus", - selectedStream = json.media.transcodings.find(v => v.preset === "opus_0_0"); + selectedStream = json.media.transcodings.find(v => v.preset === "opus_0_0"), + mp3Media = json.media.transcodings.find(v => v.preset === "mp3_0_0"); - // fall back to mp3 if no opus is available - if (selectedStream.length === 0) { - selectedStream = json.media.transcodings.find(v => v.preset === "mp3_0_0"); + // use mp3 if present if user prefers it or if opus isn't available + if (mp3Media && (obj.format === "mp3" || !selectedStream)) { + selectedStream = mp3Media; bestAudio = "mp3" }