Created
December 11, 2017 04:02
-
-
Save tmcw/3e268886be83f25cd9728cc6f3bc4184 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const fs = require('fs'); | |
const d3 = require('d3-dsv'); | |
const path = require('path'); | |
const yaml = require('js-yaml'); | |
const toMarkdown = require('to-markdown'); | |
d3.csvParse( | |
fs.readFileSync('./goodreads_library_export.csv', 'utf8') | |
).filter(row => { | |
return row['Exclusive Shelf'] !== 'to-read'; | |
}).forEach(row => { | |
if (row['Date Read'] === '') { | |
row['Date Read'] = row['Date Added']; | |
} | |
row.published = row['Original Publication Year'] || row['Year Published']; | |
row.goodreads_id = row['Book Id']; | |
Object.keys(row).forEach(k => { | |
if (row[k] === '' || row[k] === undefined) delete row[k]; | |
}); | |
if (row['My Rating'] === '0') { | |
delete row['My Rating'] === '0'; | |
} else { | |
row['Rating'] = row['My Rating']; | |
delete row['My Rating']; | |
} | |
delete row['Book Id']; | |
const description = row['My Review']; | |
delete row['Number of Pages']; | |
delete row['Average Rating']; | |
delete row['Owned Copies']; | |
delete row['Condition']; | |
delete row['Author l-f']; | |
delete row['Author l-f']; | |
delete row['Original Publication Year']; | |
delete row['Year Published']; | |
delete row['My Review']; | |
delete row['Exclusive Shelf']; | |
delete row['Binding']; | |
delete row['Date Added']; | |
delete row['Read Count']; | |
row['ISBN'] = row['ISBN'].replace(/[="]/g, ''); | |
row['ISBN13'] = row['ISBN13'].replace(/[="]/g, ''); | |
const r = {}; | |
r.categories = ['book']; | |
r.layout = 'book'; | |
for (let key in row) { | |
r[key.replace(' ', '_').toLowerCase()] = row[key]; | |
} | |
const timeFinished = new Date(r.date_read); | |
let fileName = `${timeFinished.getFullYear()}-${(timeFinished.getMonth() + 1).toString().padStart(2, '0')}-${timeFinished.getDate().toString().padStart(2, '0')}-${r.title | |
.trim() | |
.replace(/[\s]+/g, '-') | |
.replace(/[^A-Z0-9-]/gi, '') | |
.toLowerCase() | |
.split('-') | |
.slice(0, 5) | |
.join('-')}.md`; | |
fs.writeFileSync(path.join('../_posts/books/', fileName), `--- | |
${yaml.safeDump(r)}--- | |
${toMarkdown(description || '')} | |
`); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment