Skip to content

Commit 07e2b3e

Browse files
Update generate-atom-feed.mjs to add a content for the summary for each blogpost.
Fix issue related to the id and link data.
1 parent f616af2 commit 07e2b3e

File tree

5 files changed

+485
-327
lines changed

5 files changed

+485
-327
lines changed

scripts/generate-atom-feed.mjs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,28 @@ if (!fs.existsSync(outputDir)) {
1414
const generateAtomFeedFromBlogDetails = (feed, blogpostsDetails, nbOfBlogPosts) => {
1515
let posts = [];
1616
for (let i = 0; i < nbOfBlogPosts; i++) {
17-
const post = blogpostsDetails[i];
17+
const blogpost = blogpostsDetails[i];
1818
posts.push({
19-
title: post.title,
20-
link: post.url,
21-
description: post.summary,
22-
date: new Date(post.date),
23-
authors: post.authors.split(','),
19+
title: blogpost.title,
20+
link: blogpost.url,
21+
summary: blogpost.summary,
22+
date: new Date(blogpost.date),
23+
authors: blogpost.authors.split(','),
2424
})
2525
};
2626

2727
posts.forEach((post) => {
2828
feed.addItem({
29+
2930
title: post.title,
30-
id: post.url,
31-
link: post.url,
32-
description: post.summary,
31+
id: post.link,
32+
link: post.link,
3333
date: new Date(post.date),
3434
author: [{ name: post.authors }],
35+
content: post.summary
36+
3537
});
36-
38+
3739
})
3840
return feed;
3941
}
@@ -55,7 +57,7 @@ const AtomFeedLast20 = new Feed({
5557

5658

5759
const updatedFeedLast20 = generateAtomFeedFromBlogDetails(AtomFeedLast20, blogpostsDetails, 20);
58-
const xml = updatedFeedLast20.atom1(); // Atom format
60+
const xml = updatedFeedLast20.atom1();
5961
fs.writeFileSync(path.join(outputDir, 'atom.xml'), xml);
6062

6163
const AtomFeedAll = new Feed({

static/atom.xml

Lines changed: 61 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<feed xmlns="http://www.w3.org/2005/Atom">
33
<id>https://quantstack.net/</id>
44
<title>Recent blog posts featured by QuantStack team</title>
5-
<updated>2025-07-29T21:14:51.498Z</updated>
5+
<updated>2025-07-30T12:52:24.744Z</updated>
66
<generator>https://github.com/jpmonette/feed</generator>
77
<author>
88
<name>QuantStack Team</name>
@@ -13,73 +13,81 @@
1313
<subtitle>Atom feed for QuantStack website blog page</subtitle>
1414
<entry>
1515
<title type="html"><![CDATA[Create your own layers in JupyterGIS]]></title>
16-
<id/>
17-
<link/>
16+
<id>https://david-brochart.medium.com/create-your-own-layers-in-jupytergis-cbb995a89b16</id>
17+
<link href="https://david-brochart.medium.com/create-your-own-layers-in-jupytergis-cbb995a89b16"/>
1818
<updated>2025-06-25T00:00:00.000Z</updated>
19+
<content type="html"><![CDATA[JupyterGIS-tiler is a JupyterGIS extension that lets you use a notebook to process your (Xarray) data and make it available as raster tiles, so that it can be visualized in JupyterGIS.]]></content>
1920
<author>
2021
<name>David Brochart</name>
2122
</author>
2223
</entry>
2324
<entry>
2425
<title type="html"><![CDATA[C++ in Jupyter — Interpreting C++ in the Web]]></title>
25-
<id/>
26-
<link/>
26+
<id>https://blog.jupyter.org/c-in-jupyter-interpreting-c-in-the-web-c9d93542f20b</id>
27+
<link href="https://blog.jupyter.org/c-in-jupyter-interpreting-c-in-the-web-c9d93542f20b"/>
2728
<updated>2025-06-19T00:00:00.000Z</updated>
29+
<content type="html"><![CDATA[Scientists and engineers utilize programming languages not only to build software systems but also to drive interactive exploratory workflows. They leverage developer tools to explore and reason through problems effectively.]]></content>
2830
<author>
2931
<name>Anutosh Bhat</name>
3032
<name> Vassil Vassilev</name>
3133
</author>
3234
</entry>
3335
<entry>
3436
<title type="html"><![CDATA[JupyterLite 0.6.0 is released! 🎉]]></title>
35-
<id/>
36-
<link/>
37+
<id>https://blog.jupyter.org/jupyterlite-0-6-0-is-released-b4bc69bfc8f4</id>
38+
<link href="https://blog.jupyter.org/jupyterlite-0-6-0-is-released-b4bc69bfc8f4"/>
3739
<updated>2025-06-12T00:00:00.000Z</updated>
40+
<content type="html"><![CDATA[The new 0.6.0 release includes a number of new features, bug fixes, and enhancements. This release also brings significant improvements to the user experience and new customization options for JupyterLite deployments.]]></content>
3841
<author>
3942
<name>Jeremy Tuloup</name>
4043
</author>
4144
</entry>
4245
<entry>
4346
<title type="html"><![CDATA[JupyterLab 4.4 and Notebook 7.4 are available!]]></title>
44-
<id/>
45-
<link/>
47+
<id>https://blog.jupyter.org/jupyterlab-4-4-and-notebook-7-4-are-available-aca2782d4f3d</id>
48+
<link href="https://blog.jupyter.org/jupyterlab-4-4-and-notebook-7-4-are-available-aca2782d4f3d"/>
4649
<updated>2025-05-21T00:00:00.000Z</updated>
50+
<content type="html"><![CDATA[JupyterLab 4.4 has been released! This new minor release of JupyterLab includes 28 new features and enhancements, 76 bug fixes, 63 maintenance tasks and 34 documentation improvements.]]></content>
4751
<author>
4852
<name>Jeremy Tuloup</name>
4953
</author>
5054
</entry>
5155
<entry>
5256
<title type="html"><![CDATA[Congratulations, Distinguished Contributors!]]></title>
53-
<id/>
54-
<link/>
57+
<id>https://blog.jupyter.org/congratulations-distinguished-contributors-2504029fc5a9</id>
58+
<link href="https://blog.jupyter.org/congratulations-distinguished-contributors-2504029fc5a9"/>
5559
<updated>2025-05-15T00:00:00.000Z</updated>
60+
<content type="html"><![CDATA[We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2024 cohort of contributors.]]></content>
5661
<author>
5762
<name>Johan Mabille</name>
5863
</author>
5964
</entry>
6065
<entry>
6166
<title type="html"><![CDATA[Making Qt collaborative using CRDTs]]></title>
62-
<id/>
63-
<link/>
67+
<id>https://david-brochart.medium.com/making-qt-collaborative-using-crdts-94c470703253</id>
68+
<link href="https://david-brochart.medium.com/making-qt-collaborative-using-crdts-94c470703253"/>
6469
<updated>2025-03-31T00:00:00.000Z</updated>
70+
<content type="html"><![CDATA[A journal on creating a collaborative application with Qt]]></content>
6571
<author>
6672
<name>David Brochart</name>
6773
</author>
6874
</entry>
6975
<entry>
7076
<title type="html"><![CDATA[R in the Browser: Announcing Our WebAssembly Distribution]]></title>
71-
<id/>
72-
<link/>
77+
<id>https://blog.jupyter.org/r-in-the-browser-announcing-our-webassembly-distribution-9450e9539ed5</id>
78+
<link href="https://blog.jupyter.org/r-in-the-browser-announcing-our-webassembly-distribution-9450e9539ed5"/>
7379
<updated>2025-02-28T00:00:00.000Z</updated>
80+
<content type="html"><![CDATA[R is now available in emscripten-forge, enabling the Xeus-R kernel in JupyterLite.]]></content>
7481
<author>
7582
<name>Isabel Paredes</name>
7683
</author>
7784
</entry>
7885
<entry>
7986
<title type="html"><![CDATA[Real-time collaboration and collaborative editing for GIS workflows with Jupyter and QGIS]]></title>
80-
<id/>
81-
<link/>
87+
<id>https://blog.jupyter.org/real-time-collaboration-and-collaborative-editing-for-gis-workflows-with-jupyter-and-qgis-d25dbe2832a6</id>
88+
<link href="https://blog.jupyter.org/real-time-collaboration-and-collaborative-editing-for-gis-workflows-with-jupyter-and-qgis-d25dbe2832a6"/>
8289
<updated>2025-02-26T00:00:00.000Z</updated>
90+
<content type="html"><![CDATA[We are excited to announce JupyterGIS, a web-based, collaborative, and extensible interface for GIS, leveraging the JupyterLab application framework and integrating seamlessly with the Jupyter notebook interface.]]></content>
8391
<author>
8492
<name>Meriem Ben Ismail</name>
8593
<name> Nicolas Brichet</name>
@@ -93,18 +101,20 @@
93101
</entry>
94102
<entry>
95103
<title type="html"><![CDATA[PyData Paris 2025 Keynotes]]></title>
96-
<id/>
97-
<link/>
104+
<id>https://medium.com/@PyDataParis/pydata-paris-2025-50ff2bf2dc39</id>
105+
<link href="https://medium.com/@PyDataParis/pydata-paris-2025-50ff2bf2dc39"/>
98106
<updated>2025-02-19T00:00:00.000Z</updated>
107+
<content type="html"><![CDATA[We are thrilled to announce the keynote speakers for the upcoming PyData Paris 2025, the leading gathering of the open-source data science and AI/ML community in France.]]></content>
99108
<author>
100109
<name>Sandrine Pataut</name>
101110
</author>
102111
</entry>
103112
<entry>
104113
<title type="html"><![CDATA[Announcing JupyterCAD 3.0]]></title>
105-
<id/>
106-
<link/>
114+
<id>https://blog.jupyter.org/announcing-jupytercad-3-0-d8f4b7b0a719</id>
115+
<link href="https://blog.jupyter.org/announcing-jupytercad-3-0-d8f4b7b0a719"/>
107116
<updated>2025-02-17T00:00:00.000Z</updated>
117+
<content type="html"><![CDATA[We are thrilled to introduce JupyterCAD 3.0, the newest version of the collaborative CAD modeler designed for JupyterLab.]]></content>
108118
<author>
109119
<name>Arjun Verma</name>
110120
<name> Trung Le</name>
@@ -113,9 +123,10 @@
113123
</entry>
114124
<entry>
115125
<title type="html"><![CDATA[Sparrow]]></title>
116-
<id/>
117-
<link/>
126+
<id>https://johan-mabille.medium.com/sparrow-1f23817f6696</id>
127+
<link href="https://johan-mabille.medium.com/sparrow-1f23817f6696"/>
118128
<updated>2025-01-31T00:00:00.000Z</updated>
129+
<content type="html"><![CDATA[We are thrilled to introduce Sparrow, a new library designed to simplify the integration of Apache Arrow’s columnar format into C++ applications.]]></content>
119130
<author>
120131
<name>Johan Mabille</name>
121132
<name> Alexis Placet</name>
@@ -125,65 +136,72 @@
125136
</entry>
126137
<entry>
127138
<title type="html"><![CDATA[JupyterLite Terminal]]></title>
128-
<id/>
129-
<link/>
139+
<id>https://blog.jupyter.org/jupyterlite-terminal-edb3f80dc1c0</id>
140+
<link href="https://blog.jupyter.org/jupyterlite-terminal-edb3f80dc1c0"/>
130141
<updated>2024-11-13T00:00:00.000Z</updated>
142+
<content type="html"><![CDATA[QuantStack are delighted to announce that we have been working on a new Terminal for JupyterLite.]]></content>
131143
<author>
132144
<name>Ian Thomas</name>
133145
</author>
134146
</entry>
135147
<entry>
136148
<title type="html"><![CDATA[Automate your releases with the Jupyter Releaser 🚀]]></title>
137-
<id/>
138-
<link/>
149+
<id>https://blog.jupyter.org/automate-your-releases-with-the-jupyter-releaser-701e7b9841e6</id>
150+
<link href="https://blog.jupyter.org/automate-your-releases-with-the-jupyter-releaser-701e7b9841e6"/>
139151
<updated>2024-10-28T00:00:00.000Z</updated>
152+
<content type="html"><![CDATA[Jupyter Releaser is an automation tool developed by the Jupyter team to streamline and standardize the release process across Jupyter projects.]]></content>
140153
<author>
141154
<name>Jeremy Tuloup</name>
142155
</author>
143156
</entry>
144157
<entry>
145158
<title type="html"><![CDATA[QuantStack Steps Up to Support Apache Arrow with New Dedicated Team]]></title>
146-
<id/>
147-
<link/>
159+
<id>https://medium.com/@QuantStack/quantstack-steps-up-to-support-apache-arrow-with-new-dedicated-team-9ddc952f20e2</id>
160+
<link href="https://medium.com/@QuantStack/quantstack-steps-up-to-support-apache-arrow-with-new-dedicated-team-9ddc952f20e2"/>
148161
<updated>2024-10-22T00:00:00.000Z</updated>
162+
<content type="html"><![CDATA[ We are thrilled to announce that QuantStack is starting a new team dedicated to the maintenance and development of Apache Arrow.]]></content>
149163
<author>
150164
<name>Sylvain Corlay</name>
151165
</author>
152166
</entry>
153167
<entry>
154168
<title type="html"><![CDATA[Interactive Mapping with ipyopenlayers]]></title>
155-
<id/>
156-
<link/>
169+
<id>https://blog.jupyter.org/interactive-mapping-with-ipyopenlayers-2b8bc93bb6c4</id>
170+
<link href="https://blog.jupyter.org/interactive-mapping-with-ipyopenlayers-2b8bc93bb6c4"/>
157171
<updated>2024-09-06T00:00:00.000Z</updated>
172+
<content type="html"><![CDATA[ In this article, we present the main features of ipyopenlayers and demonstrate how this library can transform your geospatial data into dynamic, interactive visualizations.]]></content>
158173
<author>
159174
<name>Nour Cheour</name>
160175
</author>
161176
</entry>
162177
<entry>
163178
<title type="html"><![CDATA[Announcing the 2023 cohort of Jupyter distinguished contributors]]></title>
164-
<id/>
165-
<link/>
179+
<id>https://blog.jupyter.org/announcing-the-2023-jupyter-distinguished-contributor-award-recipients-1b2cc4ba203f</id>
180+
<link href="https://blog.jupyter.org/announcing-the-2023-jupyter-distinguished-contributor-award-recipients-1b2cc4ba203f"/>
166181
<updated>2024-09-04T00:00:00.000Z</updated>
182+
<content type="html"><![CDATA[We are delighted to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2023 cohort.]]></content>
167183
<author>
168184
<name>Johan Mabille</name>
169185
<name> on behalf of the Jupyter Distinguished Contributors</name>
170186
</author>
171187
</entry>
172188
<entry>
173189
<title type="html"><![CDATA[Ipydatagrid is now part of Project Jupyter]]></title>
174-
<id/>
175-
<link/>
190+
<id>https://blog.jupyter.org/ipydatagrid-is-now-part-of-project-jupyter-3b3dfb877664</id>
191+
<link href="https://blog.jupyter.org/ipydatagrid-is-now-part-of-project-jupyter-3b3dfb877664"/>
176192
<updated>2024-08-22T00:00:00.000Z</updated>
193+
<content type="html"><![CDATA[Today, we are proud to announce that the ipydatagrid open source project has been incorporated into Project Jupyter as part of the Jupyter Widgets subproject.]]></content>
177194
<author>
178195
<name>Sylvain Corlay</name>
179196
<name> on behalf of the Jupyter Widgets Council</name>
180197
</author>
181198
</entry>
182199
<entry>
183200
<title type="html"><![CDATA[Introducing Mamba 2.0]]></title>
184-
<id/>
185-
<link/>
201+
<id>https://medium.com/@QuantStack/introducing-mamba-2-0-0e8d5c6d1d0c</id>
202+
<link href="https://medium.com/@QuantStack/introducing-mamba-2-0-0e8d5c6d1d0c"/>
186203
<updated>2024-07-16T00:00:00.000Z</updated>
204+
<content type="html"><![CDATA[We are excited to present the first release candidate of Mamba 2.0, a significant upgrade to the mamba package manager. This update brings considerable enhancements for both users and developers, following an extensive year-long development effort.]]></content>
187205
<author>
188206
<name>Antoine Prouvost</name>
189207
<name> Joël Lamotte</name>
@@ -193,18 +211,20 @@
193211
</entry>
194212
<entry>
195213
<title type="html"><![CDATA[QuantStack open-source internship program]]></title>
196-
<id/>
197-
<link/>
214+
<id>https://medium.com/@QuantStack/quantstack-open-source-internship-program-049755b6d44b</id>
215+
<link href="https://medium.com/@QuantStack/quantstack-open-source-internship-program-049755b6d44b"/>
198216
<updated>2024-07-09T00:00:00.000Z</updated>
217+
<content type="html"><![CDATA[Today, we are announcing a new internship program that aims to empower a new cohort of open-source contributors and future maintainers to make an impact within our ecosystem.]]></content>
199218
<author>
200219
<name>Sylvain Corlay</name>
201220
</author>
202221
</entry>
203222
<entry>
204223
<title type="html"><![CDATA[JupyterCAD 2.0]]></title>
205-
<id/>
206-
<link/>
224+
<id>https://medium.com/@QuantStack/jupytercad-2-0-4b9c4e18d22a</id>
225+
<link href="https://medium.com/@QuantStack/jupytercad-2-0-4b9c4e18d22a"/>
207226
<updated>2024-07-05T00:00:00.000Z</updated>
227+
<content type="html"><![CDATA[We are thrilled to introduce JupyterCAD 2.0, the newest version of the JupyterLab-based CAD modeler.]]></content>
208228
<author>
209229
<name>Trung Le</name>
210230
<name> Martin Renou</name>

0 commit comments

Comments
 (0)