feat: self-hosted book feeds

This commit is contained in:
Cory Dransfeldt 2024-05-21 12:07:01 -07:00
parent bada16aa3a
commit 3ccc07ee63
No known key found for this signature in database
7 changed files with 155 additions and 86 deletions

View file

@ -4826,33 +4826,33 @@
],
"lastTootTimestamp": 1688947991044
},
"https://openlibrary.org/search?q=9780674979857": {
"id": "https://openlibrary.org/search?q=9780674979857",
"https://coryd.dev/books/9780674979857": {
"id": "https://coryd.dev/books/9780674979857",
"title": "📖: Capital in the Twenty-First Century",
"url": "https://openlibrary.org/search?q=9780674979857",
"content_text": "📖: Capital in the Twenty-First Century https://openlibrary.org/search?q=9780674979857",
"url": "https://coryd.dev/books/9780674979857",
"content_text": "📖: Capital in the Twenty-First Century https://coryd.dev/books/9780674979857",
"date_published": "2023-07-09T00:00:00-08:00",
"toots": [
"https://social.lol/users/cory/statuses/110687439087509888"
],
"lastTootTimestamp": 1688956284948
},
"https://openlibrary.org/search?q=1952616034": {
"id": "https://openlibrary.org/search?q=1952616034",
"https://coryd.dev/books/1952616034": {
"id": "https://coryd.dev/books/1952616034",
"title": "📖: Sustainable Web Design",
"url": "https://openlibrary.org/search?q=1952616034",
"content_text": "📖: Sustainable Web Design https://openlibrary.org/search?q=1952616034",
"url": "https://coryd.dev/books/1952616034",
"content_text": "📖: Sustainable Web Design https://coryd.dev/books/1952616034",
"date_published": "2023-07-07T00:00:00-08:00",
"toots": [
"https://social.lol/users/cory/statuses/110688274038151302"
],
"lastTootTimestamp": 1688969025355
},
"https://openlibrary.org/search?q=9780316555678": {
"id": "https://openlibrary.org/search?q=9780316555678",
"https://coryd.dev/books/9780316555678": {
"id": "https://coryd.dev/books/9780316555678",
"title": "📖: Elysium Fire",
"url": "https://openlibrary.org/search?q=9780316555678",
"content_text": "📖: Elysium Fire https://openlibrary.org/search?q=9780316555678",
"url": "https://coryd.dev/books/9780316555678",
"content_text": "📖: Elysium Fire https://coryd.dev/books/9780316555678",
"date_published": "2023-07-07T00:00:00-08:00",
"toots": [
"https://social.lol/users/cory/statuses/110687800745608235"
@ -5233,11 +5233,11 @@
],
"lastTootTimestamp": 1689992196700
},
"https://openlibrary.org/search?q=0063114488": {
"id": "https://openlibrary.org/search?q=0063114488",
"https://coryd.dev/books/0063114488": {
"id": "https://coryd.dev/books/0063114488",
"title": "📖: Trust the Plan",
"url": "https://openlibrary.org/search?q=0063114488",
"content_text": "📖: Trust the Plan https://openlibrary.org/search?q=0063114488",
"url": "https://coryd.dev/books/0063114488",
"content_text": "📖: Trust the Plan https://coryd.dev/books/0063114488",
"date_published": "2023-07-23T00:00:00-08:00",
"toots": [
"https://social.lol/users/cory/statuses/110766659039233094"
@ -5288,11 +5288,11 @@
],
"lastTootTimestamp": 1690300992901
},
"https://openlibrary.org/search?q=0306925486": {
"id": "https://openlibrary.org/search?q=0306925486",
"https://coryd.dev/books/0306925486": {
"id": "https://coryd.dev/books/0306925486",
"title": "📖: Corporate Rock Sucks",
"url": "https://openlibrary.org/search?q=0306925486",
"content_text": "📖: Corporate Rock Sucks https://openlibrary.org/search?q=0306925486",
"url": "https://coryd.dev/books/0306925486",
"content_text": "📖: Corporate Rock Sucks https://coryd.dev/books/0306925486",
"date_published": "2023-07-25T00:00:00-08:00",
"toots": [
"https://social.lol/users/cory/statuses/110778869230808555"
@ -5387,11 +5387,11 @@
],
"lastTootTimestamp": 1690927373602
},
"https://openlibrary.org/search?q=9780063251281": {
"id": "https://openlibrary.org/search?q=9780063251281",
"https://coryd.dev/books/9780063251281": {
"id": "https://coryd.dev/books/9780063251281",
"title": "📖: Where Are Your Boys Tonight?",
"url": "https://openlibrary.org/search?q=9780063251281",
"content_text": "📖: Where Are Your Boys Tonight? https://openlibrary.org/search?q=9780063251281",
"url": "https://coryd.dev/books/9780063251281",
"content_text": "📖: Where Are Your Boys Tonight? https://coryd.dev/books/9780063251281",
"date_published": "2023-08-03T00:00:00-08:00",
"toots": [
"https://social.lol/users/cory/statuses/110826526137451333"
@ -12631,11 +12631,11 @@
],
"lastTootTimestamp": 1713646042992
},
"https://openlibrary.org/isbn/9780593237410": {
"https://coryd.dev/books/9780593237410": {
"id": "aHR0cHM6Ly9vcGVubGlicmFyeS5vcmcvaXNibi85NzgwNTkzMjM3NDEw",
"title": "📖: Deliver Me from Nowhere",
"url": "https://openlibrary.org/isbn/9780593237410",
"content_text": "📖: Deliver Me from Nowhere #Books #NowReading #Music #NonFiction https://openlibrary.org/isbn/9780593237410",
"url": "https://coryd.dev/books/9780593237410",
"content_text": "📖: Deliver Me from Nowhere #Books #NowReading #Music #NonFiction https://coryd.dev/books/9780593237410",
"date_published": "Sat, 20 Apr 2024 00:00:00 GMT",
"toots": [
"https://social.lol/users/cory/statuses/112305517915474979"
@ -12807,11 +12807,11 @@
],
"lastTootTimestamp": 1713845033359
},
"https://openlibrary.org/isbn/9781982180874": {
"https://coryd.dev/books/9781982180874": {
"id": "aHR0cHM6Ly9vcGVubGlicmFyeS5vcmcvaXNibi85NzgxOTgyMTgwODc0",
"title": "📖: Vulture Capitalism",
"url": "https://openlibrary.org/isbn/9781982180874",
"content_text": "📖: Vulture Capitalism #Books #NowReading #Politics #Economics https://openlibrary.org/isbn/9781982180874",
"url": "https://coryd.dev/books/9781982180874",
"content_text": "📖: Vulture Capitalism #Books #NowReading #Politics #Economics https://coryd.dev/books/9781982180874",
"date_published": "Tue, 23 Apr 2024 00:00:00 GMT",
"toots": [
"https://social.lol/users/cory/statuses/112324053076231843"
@ -13093,11 +13093,11 @@
],
"lastTootTimestamp": 1714665816483
},
"https://openlibrary.org/isbn/9781642501148": {
"https://coryd.dev/books/9781642501148": {
"id": "aHR0cHM6Ly9vcGVubGlicmFyeS5vcmcvaXNibi85NzgxNjQyNTAxMTQ4",
"title": "📖: From the Basement",
"url": "https://openlibrary.org/isbn/9781642501148",
"content_text": "📖: From the Basement #Books #NowReading #Music #NonFiction https://openlibrary.org/isbn/9781642501148",
"url": "https://coryd.dev/books/9781642501148",
"content_text": "📖: From the Basement #Books #NowReading #Music #NonFiction https://coryd.dev/books/9781642501148",
"date_published": "Fri, 03 May 2024 00:00:00 GMT",
"toots": [
"https://social.lol/users/cory/statuses/112378001364153552"
@ -13126,11 +13126,11 @@
],
"lastTootTimestamp": 1714853070688
},
"https://openlibrary.org/isbn/9781501182891": {
"https://coryd.dev/books/9781501182891": {
"id": "aHR0cHM6Ly9vcGVubGlicmFyeS5vcmcvaXNibi85NzgxNTAxMTgyODkx",
"title": "📖: Goliath (⭐️⭐️⭐️⭐️)",
"url": "https://openlibrary.org/isbn/9781501182891",
"content_text": "📖: Goliath (⭐️⭐️⭐️⭐️) #Books #NowReading https://openlibrary.org/isbn/9781501182891",
"url": "https://coryd.dev/books/9781501182891",
"content_text": "📖: Goliath (⭐️⭐️⭐️⭐️) #Books #NowReading https://coryd.dev/books/9781501182891",
"date_published": "Thu, 16 May 2024 00:00:00 GMT",
"toots": [
"https://social.lol/users/cory/statuses/112386485783145916"
@ -13346,22 +13346,22 @@
],
"lastTootTimestamp": 1715805945220
},
"https://openlibrary.org/isbn/0-575-07438-8": {
"https://coryd.dev/books/0-575-07438-8": {
"id": "aHR0cHM6Ly9vcGVubGlicmFyeS5vcmcvaXNibi8wLTU3NS0wNzQzOC04",
"title": "📖: Pushing Ice",
"url": "https://openlibrary.org/isbn/0-575-07438-8",
"content_text": "📖: Pushing Ice #Books #NowReading #SciFi https://openlibrary.org/isbn/0-575-07438-8",
"url": "https://coryd.dev/books/0-575-07438-8",
"content_text": "📖: Pushing Ice #Books #NowReading #SciFi https://coryd.dev/books/0-575-07438-8",
"date_published": "Wed, 15 May 2024 00:00:00 GMT",
"toots": [
"https://social.lol/users/cory/statuses/112448781731640908"
],
"lastTootTimestamp": 1715832240855
},
"https://openlibrary.org/isbn/0807007935": {
"https://coryd.dev/books/0807007935": {
"id": "aHR0cHM6Ly9vcGVubGlicmFyeS5vcmcvaXNibi8wODA3MDA3OTM1",
"title": "📖: Drive (⭐️⭐️⭐️⭐️)",
"url": "https://openlibrary.org/isbn/0807007935",
"content_text": "📖: Drive (⭐️⭐️⭐️⭐️) #Books #NowReading https://openlibrary.org/isbn/0807007935",
"url": "https://coryd.dev/books/0807007935",
"content_text": "📖: Drive (⭐️⭐️⭐️⭐️) #Books #NowReading https://coryd.dev/books/0807007935",
"date_published": "Sat, 18 May 2024 00:00:00 GMT",
"toots": [
"https://social.lol/users/cory/statuses/112451611288696783"
@ -13379,11 +13379,11 @@
],
"lastTootTimestamp": 1715961850286
},
"https://openlibrary.org/isbn/0316462845": {
"https://coryd.dev/books/0316462845": {
"id": "aHR0cHM6Ly9vcGVubGlicmFyeS5vcmcvaXNibi8wMzE2NDYyODQ1",
"title": "📖: Machine Vendetta (⭐️⭐️⭐️⭐️)",
"url": "https://openlibrary.org/isbn/0316462845",
"content_text": "📖: Machine Vendetta (⭐️⭐️⭐️⭐️) #Books #NowReading https://openlibrary.org/isbn/0316462845",
"url": "https://coryd.dev/books/0316462845",
"content_text": "📖: Machine Vendetta (⭐️⭐️⭐️⭐️) #Books #NowReading https://coryd.dev/books/0316462845",
"date_published": "Wed, 15 May 2024 00:00:00 GMT",
"toots": [
"https://social.lol/users/cory/statuses/112458364539141769"
@ -13434,11 +13434,11 @@
],
"lastTootTimestamp": 1716072455634
},
"https://openlibrary.org/isbn/1839762802": {
"https://coryd.dev/books/1839762802": {
"id": "aHR0cHM6Ly9vcGVubGlicmFyeS5vcmcvaXNibi8xODM5NzYyODAy",
"title": "📖: Black Meme",
"url": "https://openlibrary.org/isbn/1839762802",
"content_text": "📖: Black Meme #Books #NowReading https://openlibrary.org/isbn/1839762802",
"url": "https://coryd.dev/books/1839762802",
"content_text": "📖: Black Meme #Books #NowReading https://coryd.dev/books/1839762802",
"date_published": "Sun, 19 May 2024 00:00:00 GMT",
"toots": [
"https://social.lol/users/cory/statuses/112468881007775327"
@ -13511,11 +13511,11 @@
],
"lastTootTimestamp": 1716242609871
},
"https://openlibrary.org/isbn/9780306824098": {
"https://coryd.dev/books/9780306824098": {
"id": "aHR0cHM6Ly9vcGVubGlicmFyeS5vcmcvaXNibi85NzgwMzA2ODI0MDk4",
"title": "📖: Under the Big Black Sun (⭐️⭐️⭐️⭐️)",
"url": "https://openlibrary.org/isbn/9780306824098",
"content_text": "📖: Under the Big Black Sun (⭐️⭐️⭐️⭐️) #Books #NowReading https://openlibrary.org/isbn/9780306824098",
"url": "https://coryd.dev/books/9780306824098",
"content_text": "📖: Under the Big Black Sun (⭐️⭐️⭐️⭐️) #Books #NowReading https://coryd.dev/books/9780306824098",
"date_published": "Tue, 21 May 2024 00:00:00 GMT",
"toots": [
"https://social.lol/users/cory/statuses/112479923811123549"

46
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "coryd.dev",
"version": "16.5.7",
"version": "16.6.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "coryd.dev",
"version": "16.5.7",
"version": "16.6.0",
"license": "MIT",
"dependencies": {
"@cdransf/api-text": "^1.2.2",
@ -2743,12 +2743,12 @@
}
},
"node_modules/braces": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"dependencies": {
"fill-range": "^7.0.1"
"fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@ -3346,9 +3346,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
"version": "1.4.775",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.775.tgz",
"integrity": "sha512-JpOfl1aNAiZ88wFzjPczTLwYIoPIsij8S9/XQH9lqMpiJOf23kxea68B8wje4f68t4rOIq4Bh+vP4I65njiJBw==",
"version": "1.4.777",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.777.tgz",
"integrity": "sha512-n02NCwLJ3wexLfK/yQeqfywCblZqLcXphzmid5e8yVPdtEcida7li0A5WQKghHNG0FeOMCzeFOzEbtAh5riXFw==",
"dev": true
},
"node_modules/encodeurl": {
@ -3715,9 +3715,9 @@
}
},
"node_modules/fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
@ -4854,18 +4854,30 @@
"dev": true
},
"node_modules/micromatch": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.6.tgz",
"integrity": "sha512-Y4Ypn3oujJYxJcMacVgcs92wofTHxp9FzfDpQON4msDefoC0lb3ETvQLOdLcbhSwU1bz8HrL/1sygfBIHudrkQ==",
"dev": true,
"dependencies": {
"braces": "^3.0.2",
"picomatch": "^2.3.1"
"braces": "^3.0.3",
"picomatch": "^4.0.2"
},
"engines": {
"node": ">=8.6"
}
},
"node_modules/micromatch/node_modules/picomatch": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"dev": true,
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/mime": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",

View file

@ -1,6 +1,6 @@
{
"name": "coryd.dev",
"version": "16.5.7",
"version": "16.6.0",
"description": "The source for my personal site. Built using 11ty.",
"type": "module",
"scripts": {

View file

@ -17,12 +17,13 @@ export default async function () {
authors,
description: book['description'],
image: book['thumbnail'],
url: `https://openlibrary.org/isbn/${book['isbn']}`,
url: `https://coryd.dev/books/${book['isbn']}`,
date,
status: book['status'],
tags: book['tags'],
categories: book['categories']?.length > 1 ? book['categories'].join(', ') : book['categories']?.[0],
rating: book['rating'] !== 'unrated' ? book['rating'] : '',
isbn: book['isbn'],
type: 'book',
}
})

View file

@ -10,8 +10,6 @@
}
& img {
border: 1px solid var(--accent-color);
border-radius: var(--rounded);
transition-property: border-color;
transition-timing-function: var(--transition-ease-in-out);
transition-duration: 300ms;
@ -29,9 +27,6 @@
}
& .book-meta {
display: flex;
flex-direction: column;
gap: var(--sizing-xs);
align-items: center;
& p {
@ -40,16 +35,6 @@
max-width: 100%;
text-overflow: ellipsis;
width: fit-content;
margin-bottom: 0;
&.title {
font-size: var(--font-size-xl);
}
&.author-categories {
font-size: var(--font-size-xs);
line-height: var(--line-height-xs);
}
}
& blockquote.description {
@ -62,6 +47,53 @@
}
}
.book-entry,
.book-focus {
& img {
border: 1px solid var(--accent-color);
}
& .book-meta {
display: flex;
flex-direction: column;
gap: var(--sizing-xs);
& p {
&.title {
font-size: var(--font-size-xl);
}
&.sub-meta {
font-size: var(--font-size-xs);
line-height: var(--line-height-xs);
}
&.title,
&.sub-meta {
margin: 0;
}
}
}
}
.book-focus {
border-bottom: 0;
& .book-display {
display: flex;
flex-direction: row;
gap: var(--sizing-base);
}
p {
margin: var(--sizing-base) 0;
}
& .book-meta p {
margin: 0;
}
}
@media screen and (min-width: 768px) {
.book-entry {
flex-direction: row;

View file

@ -0,0 +1,24 @@
---
layout: default
pagination:
data: books
size: 1
alias: book
permalink: /books/{{ book.isbn }}/
---
<a class="back-link-header link-icon flex-centered" href="/books">{% tablericon "arrow-left" "Go back" %} Go back</a>
<article class="book-focus">
<div class="book-display">
<img src="https://coryd.dev/.netlify/images/?url={{ book.image }}&fm=webp&q=85&w=137&h=209&fit=cover" alt="{{ alt }}" loading="eager" decoding="async" width="137" height="209" />
<div class="book-meta">
<p class="title"><strong>{{ book.title }}</strong></p>
{% if book.rating %}<p>{{ book.rating }}</p>{% endif %}
{% if book.authors or book.categories %}
<p class="sub-meta">{% if book.authors %}By {{ book.authors }}{% endif %}{% if book.categories %}{% if book.authors %} • {% endif %}{{ book.categories }}{% endif %}</p>
{% endif %}
{% if book.status == 'finished' %}<p class="sub-meta">Finished on: {{ book.date | date: "%B %e, %Y" }}</p>{% endif %}
<p class="sub-meta"><a href="https://openlibrary.org/isbn/{{ book.isbn }}">View on Open Library</a></p>
</div>
</div>
{% if book.description %}<p><em>{{ book.description }}</em></p>{% endif %}
</article>

View file

@ -24,7 +24,7 @@ schema: books
<p class="title"><strong>{{ book.title }}</strong></p>
</a>
{% if book.authors or book.categories %}
<p class="author-categories">{% if book.authors %}By {{ book.authors }}{% endif %}{% if book.categories %}{% if book.authors %}• {% endif %}<em>{{ book.categories }}</em>{% endif %}</p>
<p class="sub-meta">{% if book.authors %}By {{ book.authors }}{% endif %}{% if book.categories %}{% if book.authors %}• {% endif %}<em>{{ book.categories }}</em>{% endif %}</p>
{% endif %}
{% if book.description %}<blockquote class="description">{{ book.description }}</blockquote>{% endif %}
</div>