This repository has been archived by the owner on Nov 30, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 34
/
gatsby-node.js
89 lines (83 loc) · 2.17 KB
/
gatsby-node.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
const fs = require('fs')
const RSS = require('rss')
const path = require('path')
exports.createPages = async ({ actions: { createPage }, graphql, pathPrefix }) => {
await makeDatasets(createPage, graphql, pathPrefix)
}
async function makeDatasets(createPage, graphql, pathPrefix) {
const results = await graphql(`
query {
allMarkdownRemark(
sort: {
order: DESC,
fields: frontmatter___added
}
) {
nodes {
frontmatter {
title
creators {
name
email
}
added
published
dates {
start
end
}
repository
subjects
tweets
url
}
html
parent {
... on File {
id
name
}
}
}
}
}
`)
const datasets = []
for (let dataset of results.data.allMarkdownRemark.nodes) {
console.log(dataset.parent.name)
const context = {
...dataset.frontmatter,
slug: dataset.parent.name,
description: dataset.html
}
createPage({
path: `/datasets/${context.slug}/`,
component: require.resolve(`./src/templates/dataset.js`),
context: context
})
datasets.push(context)
}
fs.writeFileSync(`static/data/datasets.json`, JSON.stringify(datasets, null, 2))
writeRss(datasets)
}
function writeRss(datasets) {
const feed = new RSS({
title: `Documenting the Now Tweet Catalog`,
description: `A clearinhouse for Twitter datasets`,
feed_url: `https://catalog.docnow.io/feed.xml`,
site_url: `https://catalog.docnow.io`,
image_url: `https://catalog.docnow.io/images/docnow.png`,
})
datasets.forEach(dataset => {
const url = `https://catalog.docnow.io/datasets/${dataset.slug}/`
const description = `${dataset.description}<p>This dataset is published at ${dataset.url}</p>`
feed.item({
title: dataset.title,
date: dataset.addedDate,
description: description,
url: url,
})
})
// write out the podcast url
fs.writeFileSync('./static/feed.xml', feed.xml())
}