Skip to content

Instantly share code, notes, and snippets.

@endel
Created October 9, 2019 20:55
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save endel/dc36757bd9301e5373a8bf99c287ee29 to your computer and use it in GitHub Desktop.
Save endel/dc36757bd9301e5373a8bf99c287ee29 to your computer and use it in GitHub Desktop.
Parse Patreon Members.csv file to output active patron's names (NodeJS)
const csv = require('csv-parser')
const fs = require('fs')
const patrons = [];
const GENEROUS_PLEDGE = 30;
const GENEROUS_LIFETIME = 200;
fs.createReadStream(process.argv[2])
.pipe(csv())
.on('data', (data) => patrons.push(data))
.on('end', () => {
const activePatrons = patrons
.filter(patron => patron['Patron Status'] === "Active patron")
.map(patron => {
patron['Pledge $'] = parseInt(patron['Pledge $'].substr(1));
patron['Lifetime $'] = parseInt(patron['Lifetime $'].substr(1));
return patron;
});
console.log("**Generous backers:**")
activePatrons
.filter(patron => (
patron['Pledge $'] >= GENEROUS_PLEDGE ||
patron['Lifetime $'] >= GENEROUS_LIFETIME
))
.forEach(patron => console.log(`- ${patron.Name}`))
console.log("");
console.log("**Backers:**")
activePatrons
.filter(patron => (
patron['Pledge $'] < GENEROUS_PLEDGE &&
patron['Lifetime $'] < GENEROUS_LIFETIME
))
.forEach(patron => console.log(`- ${patron.Name}`))
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment