brainbaking/hooks/precommit.js

51 lines
1.7 KiB
JavaScript

const { mastodon, goodreads, webmention, youtube } = require('jam-my-stack');
const fsp = require('fs').promises;
const wmconfig = require('./_conf.js');
const rootdir = `${__dirname}/../`;
(async function() {
// 1. parse Mastodon RSS feed
// currently disabling notes, as after 3 months, I find these do not bring anything relevant to the table.
/*
console.log("1. parsing Mastodon RSS feed...")
await mastodon.parseFeed({
notesdir: `${__dirname}/content/notes`,
url: "https://chat.brainbaking.com/users/wouter/feed",
utcOffset: 60,
titleCount: 50,
ignoreReplies: true
})
*/
// 2. update goodreads JS widget
console.log("2. Updating Goodreads Widget...")
const widget = await goodreads.createWidget("https://www.goodreads.com/review/grid_widget/5451893.Wouter's%20bookshelf:%20read?cover_size=medium&hide_link=&hide_title=&num_books=12&order=d&shelf=read&sort=date_added&widget_id=1496758344")
await fsp.writeFile(`${rootdir}/static/js/goodreads.js`, widget.replace(/src=/g, "loading=\"lazy\" src="), 'utf-8')
// 3. get webmentions
console.log("4. Fetching webmentions...")
const mentions = await webmention.getWebmentions("brainbaking.com", wmconfig)
const json = JSON.stringify(mentions, null, 4)
await fsp.writeFile(`${rootdir}/data/webmentions.json`, json, 'utf-8')
console.log("4.1 Fetching pictures from wm authors...")
await webmention.getPictures(mentions, {
endpoint: wmconfig.endpoint,
directory: `${rootdir}/assets/wmpics`,
override: false,
extension: "jpg"
})
// 4. generate youtube thumbnails
console.log("5. Generating YouTube thumbnails...")
await youtube.thumbify({
postDir: `${rootdir}/content/post`,
downloadDir: `${rootdir}/static/img/yt`,
overlayImg: `${rootdir}/play.png`
})
console.log("-- all done!")
})()