Update update.js

This commit is contained in:
Aleksandr Statciuk 2022-10-28 02:42:59 +03:00
parent 81f1157027
commit 0c169d699d

View file

@ -35,7 +35,9 @@ async function main() {
db_programs = db_programs db_programs = db_programs
.map(p => { .map(p => {
if (p.titles.length) { if (p.titles.length) {
p.score = calcScore(p)
p.lang = p.titles[0].lang p.lang = p.titles[0].lang
return p return p
} }
return null return null
@ -143,34 +145,33 @@ function convertLangCode(code, from, to) {
function getChannelPrograms(programs) { function getChannelPrograms(programs) {
let sites = _.groupBy(programs, 'site') let sites = _.groupBy(programs, 'site')
let priority = 0 let topScore = 0
let selected let selected
for (let site in sites) { for (let site in sites) {
let sitePriority = calcPriority(sites[site]) let sitePrograms = sites[site]
let siteScore = _.sumBy(sitePrograms, 'score')
if (sitePriority > priority) { if (siteScore > topScore) {
selected = site selected = site
priority = sitePriority topScore = siteScore
} }
} }
return sites[selected] || [] return sites[selected] || []
} }
function calcPriority(programs) { function calcScore(program) {
return programs.reduce((total, program) => { let score = 0
let values = Object.values(program) let values = Object.values(program)
for (let value of values) { for (let value of values) {
if (Array.isArray(value) && value.length) { if (Array.isArray(value) && value.length) {
total++ score++
} else if (typeof value === 'string' && value) { } else if (typeof value === 'string' && value) {
total++ score++
} else if (value && typeof value === 'object' && Object.values(value).map(Boolean).length) { } else if (value && typeof value === 'object' && Object.values(value).map(Boolean).length) {
total++ score++
} }
} }
return total return score
}, 0)
} }