Skip to content

Instantly share code, notes, and snippets.

@ELLIOTTCABLE
Last active August 29, 2015 14:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save ELLIOTTCABLE/84df4798643acafb4bb9 to your computer and use it in GitHub Desktop.
Save ELLIOTTCABLE/84df4798643acafb4bb9 to your computer and use it in GitHub Desktop.
var raven = require('raven')
, Promise = require('bluebird')
, requestAsync = require('request-promise')
var redis = Promise.promisifyAll(require('redis').createClient())
var languages = JSON.parse(require('fs').readFileSync(__dirname + '/languages.json')).languages
Promise.all(languages.map(function(language){
return redis.setAsync('lang:'+language.tag+':name', language.name)
.then(function(){
return Promise.all(language.cats.map(function(cat){
pushSubCategories(cat, language) }))
})
}))
.done(function(){ redis.quitAsync() })
function pushSubCategories(category, language, depth){ if (typeof depth != 'number') depth = 0
console.log('woo', depth)
return redis.saddAsync('lang:'+language.tag+':cats', category)
.then(function(){
console.log(language.tag+' '+depth+':', category)
return requestAsync({
url: <...>
, json: true
, transform: function(resp){ return resp.query.categorymembers }
})
.map(function(member){
if (depth < 3)
return pushSubCategories(member, language, depth+1)
})
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment