#1332: Improve cover image score algorithm:

- If filename score is equal, pick highest resolution
- Search for keyword occurrence in file name
This commit is contained in:
Borewit
2018-03-04 16:24:07 +01:00
parent b89a74e6e9
commit cf2a3b8948

View File

@@ -74,15 +74,23 @@ function filterOnExtension (torrent, extensions) {
}
function scoreCoverFile (file) {
const name = path.basename(file.name, path.extname(file.name)).toLowerCase()
switch (name) {
case 'cover': return 100
case 'folder': return 95
case 'front': return 85
case 'front-cover': return 90
case 'back': return 40
default: return 0
const fileName = path.basename(file.name, path.extname(file.name)).toLowerCase()
const relevanceScore = {
cover: 100,
folder: 95,
front: 90,
back: 20
}
for (let keyword in relevanceScore) {
if (fileName === keyword) {
return relevanceScore[keyword]
}
if (fileName.indexOf(keyword) !== -1) {
return 0.8 * relevanceScore[keyword]
}
}
return 0
}
function torrentPosterFromAudio (torrent, cb) {
@@ -94,7 +102,9 @@ function torrentPosterFromAudio (torrent, cb) {
score: scoreCoverFile(file)
}
}).sort((a, b) => {
return b.score - a.score
const delta = b.score - a.score
// If score is equal, pick the largest file, aiming for highest resolution
return delta === 0 ? b.file.length - a.file.length : delta
})
if (bestCover.length < 1) return cb(new Error('Generated poster contains no data'))