untitled notebook

node v4.9.1
version: master
endpointsharetweet
"use strict"; let fetch = require('node-fetch'), Xray = require('x-ray'); let xray = Xray(); function rn() { return Math.floor(Math.random()*10); } let userCache = {}; const contribURL = 'https://en.wiktionary.org/w/index.php?title=Special:Contributions/Hippietrail&offset=&limit=25&target=Hippietrail', revsURL = "http://en.wiktionary.org/w/api.php?action=query&format=json&prop=revisions&rvprop=timestamp%7Cuserid%7Cuser&rvlimit=10&titles=", userURL = "http://en.wiktionary.org/w/api.php?action=query&format=json&list=users&usprop=groups&usattachedwiki=&ususers="; xray(contribURL, '.mw-contributions-list > li', [{ t: '.mw-contributions-title', c: '.mw-uctop' }])(function(err, contribs) { let pagesSeen = []; contribs.forEach(pg => { if (pagesSeen.indexOf(pg.t) === -1 && !pg.c) { fetch(revsURL + encodeURIComponent(pg.t)).then(revs => { revs.json().then(rj => { const page = rj.query.pages[Object.keys(rj.query.pages)[0]]; // TODO should stop when it gets to me and fetch more if it // TODO gets through the list without seeing my name page.revisions.forEach(r => { let co = userCache[r.user]; if (!co) co = {}; if (!co.prommie) { co.prommie = fetch(userURL + r.user); userCache[r.user] = co; } //console.log([0+' '+rn()+' '+r.user, co.prommie]); /* co.prommie.then(u => { //console.log(1+' '+rn()+' '+r.user); //console.log(1.5+' '+rn()+' '+r.user+' '+u.bodyUsed); // TODO can't call this twice even though we can call // .then() twice! let jjj = u.json(); jjj.then(zyx => { console.log(2+' '+rn()+' '+r.user); },uu=>{console.log([99, uu])}); },uu=>{console.log([98, uu])}); */ co.prommie.then(u => { console.log(3+' '+rn()+' '+r.user); if (co.hasOwnProperty('j')) { console.log('already have coj', co.j); } else { let jjj = u.json(); //jjj.then(zyx => { console.log(4+' '+rn()+' '+r.user); },uu=>{console.log([97, uu])}); jjj.then(uj => { co.j = uj; console.log(['put coj', userCache[r.user].j]); console.log(5+' '+rn()+' '+r.user + ' : ' + (uj.query.users[0].groups.indexOf("bot") !== -1)); },uu=>{console.log([96, uu])}); } },uu=>{console.log([95, uu])}).catch(c => { console.log('catch', c); }); }); }); }).catch( e => { console.log('catching', e); }); } pagesSeen.push(pg.t); }); }),null;
Loading…

no comments

    sign in to comment