Merge pull request #1494 from clujin/fix_empty_array_reduce

#1436: Fix bug empty array reduce in audio poster selection
This commit is contained in:
Borewit
2018-10-07 20:27:33 +02:00
committed by GitHub

View File

@@ -5,6 +5,8 @@ const path = require('path')
const mediaExtensions = require('./media-extensions')
const msgNoSuitablePoster = 'Cannot generate a poster from any files in the torrent'
function torrentPoster (torrent, cb) {
// First, try to use a poster image if available
const posterFile = torrent.files.filter(function (file) {
@@ -23,7 +25,7 @@ function torrentPoster (torrent, cb) {
if (bestScore.size === 0) {
// Admit defeat, no video, audio or image had a significant presence
return cb(new Error('Cannot generate a poster from any files in the torrent'))
return cb(new Error(msgNoSuitablePoster))
}
// Based on which media type is dominant we select the corresponding poster function
@@ -110,6 +112,8 @@ function scoreAudioCoverFile (imgFile) {
function torrentPosterFromAudio (torrent, cb) {
const imageFiles = filterOnExtension(torrent, mediaExtensions.image)
if (imageFiles.length === 0) return cb(new Error(msgNoSuitablePoster))
const bestCover = imageFiles.map(file => {
return {
file: file,
@@ -129,8 +133,6 @@ function torrentPosterFromAudio (torrent, cb) {
return b
})
if (!bestCover) return cb(new Error('Generated poster contains no data'))
const extname = path.extname(bestCover.file.name)
bestCover.file.getBuffer((err, buf) => cb(err, buf, extname))
}
@@ -172,7 +174,7 @@ function torrentPosterFromVideo (torrent, cb) {
server.destroy()
if (buf.length === 0) return cb(new Error('Generated poster contains no data'))
if (buf.length === 0) return cb(new Error(msgNoSuitablePoster))
cb(null, buf, '.jpg')
}