Advertisement
Guest User

Untitled

a guest
Dec 8th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const fs = require('fs');
  2. const async = require('async');
  3. const mongoose = require('mongoose');
  4. const config = require('../config/config');
  5. const keywordsProcessor = require('../helpers/keywords-processor');
  6. const _ = require('underscore');
  7.  
  8. // mongoose.connect(config.db);
  9.  
  10. // const parsedTops = JSON.parse(fs.readFileSync('./data-old.json', 'utf-8'));
  11.  
  12. let test_ph_item = {
  13.   keyword: '1',
  14.   searchVolume: '50',
  15.   cpc: '1.23',
  16.   competition: '0.71',
  17.   results: '1000'
  18. };
  19.  
  20. let test_ph_item2 = {
  21.   keyword: '3',
  22.   searchVolume: '50',
  23.   cpc: '1.23',
  24.   competition: '0.71',
  25.   results: '1000'
  26. };
  27.  
  28. let test_parsedKeywords = [
  29.  
  30.   { name: 'top1',
  31.     position: 1,
  32.     topic: 'Electronics',
  33.     category: 'Printers',
  34.     phrase: [test_ph_item],
  35.     related: []
  36.   },
  37.   { name: 'top2',
  38.     position: 2,
  39.     topic: 'Health & Household',
  40.     category: 'Medical Supplies & Equipment',
  41.     phrase:
  42.      [
  43.       test_ph_item,
  44.       test_ph_item,
  45.       ,
  46.       {
  47.           keyword: 'Uniq kw',
  48.           searchVolume: '55',
  49.           cpc: '1.11',
  50.           competition: '0.11',
  51.           results: '1111'
  52.        }
  53.       ],
  54.     related: [],
  55.   },
  56. ];
  57.  
  58. const phrasesToString = phrases => phrases.map(p => p.keyword);
  59.  
  60. const filterTops = (parsedTops) => {
  61.   let filteredTops = parsedTops.reduceRight((rResult, rTop, rIdx) => {
  62.     const rPhrases = phrasesToString(rTop.phrase);
  63.     console.log(rPhrases);
  64.     const phrase = parsedTops.reduce((lResult, lTop, lIdx) => {
  65.       if (rIdx <= lIdx) {
  66.         return rIdx < lIdx ? lResult : _.uniq(lResult);
  67.       }
  68.       const lPhrases = phrasesToString(lTop.phrase);
  69.       let uniquePhrases = _.difference(lResult, lPhrases);
  70.  
  71.       // console.log(uniquePhrases);
  72.       return uniquePhrases;
  73.     }, rPhrases);
  74.  
  75.     let aggregatedPhrases = [];
  76.     if (rPhrases.length > 0 && rTop.phrase.length > 0){
  77.       aggregatedPhrases = phrase.reduce((result, keyword, idx) => {
  78.         // result.push(_.where(rTop.phrase, {keyword: keyword})[0]);
  79.         // console.log(_.where(rTop.phrase, {keyword: keyword}), keyword);
  80.         return result;
  81.       }, []);
  82.     }
  83.  
  84.     const top = Object.assign({}, rTop, { phrase: aggregatedPhrases });
  85.     rResult.push(top);
  86.     return rResult;
  87.   }, []);
  88.  
  89.   return filteredTops.reverse();
  90. }
  91.  
  92.  
  93. var test = filterTops(test_parsedKeywords);
  94. // console.log('before');
  95. // console.log(test_parsedKeywords);
  96. // console.log('after');
  97. // console.log(test[1]);
  98.  
  99. // keywordsProcessor.filterTops(test_parsedKeywords);
  100.  
  101.       // let aggregatedPhrases = [];
  102.       // if (rPhrases.length > 0 && rTop.phrase.length > 0){
  103.         // aggregatedPhrases = rPhrases.reduce((result, keyword, idx) => {
  104.       //     result.push(_.where(rTop.phrase, {keyword: rPhrases[idx]})[0]);
  105.       //     return result;
  106.       //   }, []);
  107.       // }
  108.  
  109.  
  110.   // check if not top name in other top.phrase
  111.   // filteredTops = filteredTops.reduce((result, top, idx) => {
  112.   //   const phrase = top.phrase.filter(keyword => {
  113.   //     return keyword.keyword !== top.name;
  114.   //   });
  115.  
  116.   //   const resultTop = Object.assign({}, top, { phrase });
  117.   //   result.push(resultTop);
  118.  
  119.   //   return result;
  120.   // } , []);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement