RunKit totalAffinity

node v11.15.0
version: 3.0.0
endpointsharetweet
const R = require('ramda'); const createRedisKey = seriesId => { return `recommendations:content:${seriesId}` } const sortByAffinity = R.sortWith([ R.descend(R.prop('affinity_score')) ]) const totalAffinity = [{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Better Things","reco_ld_id":"100604","affinity_score":244.6578},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Blindspot","reco_ld_id":"100600","affinity_score":264.3174},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Castle Rock","reco_ld_id":"101337","affinity_score":243.5804},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Covert Affairs","reco_ld_id":"101362","affinity_score":320.4231},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Crossing Jordan","reco_ld_id":"101394","affinity_score":284.9111},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Dark Heart","reco_ld_id":"101402","affinity_score":333.631},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Eyewitness","reco_ld_id":"101366","affinity_score":308.1622},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Gone","reco_ld_id":"100892","affinity_score":386.4365},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"In the Dark","reco_ld_id":"101490","affinity_score":345.1474},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Law & Order: UK","reco_ld_id":"100667","affinity_score":295.7481},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Life","reco_ld_id":"100210","affinity_score":384.7287},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Loch Ness","reco_ld_id":"100636","affinity_score":258.0526},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Madam Secretary","reco_ld_id":"101137","affinity_score":286.5151},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Mr. Mercedes","reco_ld_id":"100945","affinity_score":260.6015},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"NCIS","reco_ld_id":"100395","affinity_score":275.0873},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Newton's Law","reco_ld_id":"101341","affinity_score":383.7784},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Outlander","reco_ld_id":"100266","affinity_score":201.1298},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Prime Suspect: Tennison","reco_ld_id":"101235","affinity_score":270.3208},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Suits","reco_ld_id":"100212","affinity_score":155.1328},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Ten Days in the Valley","reco_ld_id":"100675","affinity_score":298.228},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"The Act","reco_ld_id":"101488","affinity_score":261.8226},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"The Enemy Within","reco_ld_id":"101437","affinity_score":360.1247},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"The Good Doctor","reco_ld_id":"100787","affinity_score":214.399},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"The Handmaid's Tale","reco_ld_id":"100616","affinity_score":139.3519},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"The Night Shift","reco_ld_id":"100785","affinity_score":479.2516},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"The Son","reco_ld_id":"100618","affinity_score":245.1673},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"The Truth About the Harry Quebert Affair","reco_ld_id":"101389","affinity_score":305.789},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Tin Star","reco_ld_id":"101336","affinity_score":267.0823},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Trust Me","reco_ld_id":"101436","affinity_score":357.9005},{"content_name":"9-1-1","series_ld_id":"101404","Recommend":"Unforgettable","reco_ld_id":"100262","affinity_score":352.5144},{"content_name":"Abby's","series_ld_id":"101493","Recommend":"9-1-1","reco_ld_id":"101404","affinity_score":161.9907},{"content_name":"Abby's","series_ld_id":"101493","Recommend":"About a Boy","reco_ld_id":"100684","affinity_score":218.6297},{"content_name":"Abby's","series_ld_id":"101493","Recommend":"American Woman","reco_ld_id":"101287","affinity_score":167.6329},{"content_name":"Abby's","series_ld_id":"101493","Recommend":"Better Things","reco_ld_id":"100604","affinity_score":203.0125},{"content_name":"Abby's","series_ld_id":"101493","Recommend":"Brooklyn Nine-Nine","reco_ld_id":"100428","affinity_score":154.2844},{"content_name":"Abby's","series_ld_id":"101493","Recommend":"Casual","reco_ld_id":"100936","affinity_score":190.6063},{"content_name":"Abby's","series_ld_id":"101493","Recommend":"Community","reco_ld_id":"100103","affinity_score":172.9222},{"content_name":"Abby's","series_ld_id":"101493","Recommend":"Covert Affairs","reco_ld_id":"101362","affinity_score":177.1392},{"content_name":"Abby's","series_ld_id":"101493","Recommend":"Future Man","reco_ld_id":"100685","affinity_score":171.2946},{"content_name":"Abby's","series_ld_id":"101493","Recommend":"Girlfriends' Guide To Divorce","reco_ld_id":"100651","affinity_score":161.2833},{"content_name":"Abby's","series_ld_id":"101493","Recommend":"Gone","reco_ld_id":"100892","affinity_score":152.9482},{"content_name":"Abby's","series_ld_id":"101493","Recommend":"Good Girls Revolt","reco_ld_id":"101401","affinity_score":194.4388}] // Create one array per series const recommendationsLists = totalAffinity.reduce((operations, current) => { const { series_ld_id: seriesId } = current operations[seriesId] = operations[seriesId] ? operations[seriesId].concat(current) : [current] return operations }, []) // Return only recommended contentItem ids, sorted by highest affinity const sortedRecommendationIds = recommendationsLists.map(series => { return sortByAffinity(series).reduce((total, current) => { total.push(current.reco_ld_id) return total }, []) }) const redisOperations = sortedRecommendationIds.reduce((operations, recommendations, seriesId) => { const key = createRedisKey(seriesId) operations.push(['set', key, JSON.stringify(recommendations)]); return operations }, []) console.log('operations', redisOperations)
Created from: https://npm.runkit.com/ramda-adjunct
Loading…

no comments

    sign in to comment