Initial commit: The Daily EPUB full implementation
Full implementation of a personalized daily newspaper delivered as an EPUB. Articles are pulled from a local self-hosted Miniflux instance, enriched with comments, summarized and filtered by DeepSeek AI, and then assembled into two EPUB editions: standard and optimized for the Xteink X4 e-ink reader. Both are served by the local self-hosted BookOrbit OPDS server in a separate library. Then the X4 edition is futher converted to XTC format and served over a separate OPDS server hosted by the Rust binary. Runs are tracked in a local SQLite database so runs are idempotent per date. Full documentation of the plan is in docs/plans and setup and install instructions are in the README.md file.
This commit is contained in:
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"from_the_editor": "Two of today's pieces are, underneath, the same story: what it costs to move data you no longer trust. The lead — a team hauling forty terabytes off Postgres, rollback plans and all — is the version with the invoices attached, and it earns the front page by refusing to tidy up its failures. Read it first, while the coffee is hot; it rewards attention and it is long.\n\nThe local desk supplies the counterpoint. Somebody has finally put the MBTA's slow-zone data into a shape a rider can argue with, and the charts do more persuading than a year of press releases. It is a short read and a satisfying one, and it pairs unreasonably well with the migration story: both are about institutions discovering what they actually have.\n\nThe rest of the issue is quieter than usual. That is not a complaint — a thin Friday is a good excuse to finish the long one properly rather than skimming six. If you only get through the lead today, you will not have missed much else.",
|
||||
"section_intros": {
|
||||
"Top Stories": "The day's most substantial piece: a full account of a forty-terabyte migration, with the failures left in. It is long, technical and unusually honest about what went wrong.",
|
||||
"Boston & Local": "Transit data gets the treatment it deserves. A rider-built analysis of MBTA slow zones, with charts you can check yourself and a methodology section that holds up.",
|
||||
"Niche Corner": "A section the model wrote an intro for even though nothing was placed in it today — a stray thread about tape-drive firmware and the people who still maintain it. The issue drops intros for sections that never ran."
|
||||
}
|
||||
}
|
||||
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"picks": [
|
||||
{ "id": 101, "section": "Top Stories", "position": 1, "lead_story": true },
|
||||
{ "id": 102, "section": "Tech & Engineering", "position": 1, "lead_story": false },
|
||||
{ "id": 103, "section": "Tech & Engineering", "position": 2, "lead_story": false },
|
||||
{ "id": 104, "section": "AI & Machine Learning", "position": 1, "lead_story": false },
|
||||
{ "id": 105, "section": "Boston & Local", "position": 1, "lead_story": false },
|
||||
{ "id": 106, "section": "Culture & Essays", "position": 1 },
|
||||
{ "section": "Niche Corner", "position": 2, "lead_story": false },
|
||||
"the model sometimes trails off like this"
|
||||
]
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"articles": [
|
||||
{
|
||||
"id": 101,
|
||||
"score": 8.5,
|
||||
"category": "Tech & Engineering",
|
||||
"rationale": "first-hand 40TB Postgres migration with numbers, failures and rollback plan",
|
||||
"is_paywalled_guess": false
|
||||
},
|
||||
{
|
||||
"id": 102,
|
||||
"score": 3.0,
|
||||
"category": "AI & Machine Learning",
|
||||
"rationale": "model release announcement, no independent evaluation",
|
||||
"is_paywalled_guess": false
|
||||
},
|
||||
{
|
||||
"id": 103,
|
||||
"score": 6.5,
|
||||
"category": "Boston & Local",
|
||||
"rationale": "MBTA slow-zone data analysis with original charts",
|
||||
"is_paywalled_guess": false
|
||||
},
|
||||
{
|
||||
"id": 104,
|
||||
"score": 5.0,
|
||||
"category": "Culture & Essays",
|
||||
"rationale": "promising essay on typesetting, body appears truncated",
|
||||
"is_paywalled_guess": true
|
||||
}
|
||||
]
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"articles": [
|
||||
{
|
||||
"id": 201,
|
||||
"score": 7.0,
|
||||
"category": "Science & Space",
|
||||
"rationale": "careful write-up of an amateur radio occultation measurement",
|
||||
"is_paywalled_guess": false
|
||||
},
|
||||
{
|
||||
"id": "202",
|
||||
"score": "6",
|
||||
"category": "Niche Corner",
|
||||
"rationale": "mailing-list argument about tape drives, oddly gripping",
|
||||
"is_paywalled_guess": "false"
|
||||
},
|
||||
{
|
||||
"id": 203,
|
||||
"score": 4
|
||||
},
|
||||
{
|
||||
"id": 204,
|
||||
"score": 12.5,
|
||||
"category": "Top Stories",
|
||||
"rationale": "model ignored the rubric ceiling here",
|
||||
"is_paywalled_guess": false
|
||||
},
|
||||
{
|
||||
"score": 9.0,
|
||||
"category": "Top Stories",
|
||||
"rationale": "no id at all, unusable"
|
||||
},
|
||||
"a bare string where an object belongs"
|
||||
]
|
||||
}
|
||||
Vendored
+54
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"id": 40100000,
|
||||
"created_at": "2026-08-15T09:12:00.000Z",
|
||||
"type": "story",
|
||||
"author": "poster",
|
||||
"title": "A Story About Databases",
|
||||
"url": "https://example.com/databases",
|
||||
"points": 342,
|
||||
"text": null,
|
||||
"children": [
|
||||
{
|
||||
"id": 40100001,
|
||||
"type": "comment",
|
||||
"author": "alice",
|
||||
"text": "The <i>write path</i> is the interesting part here.<p>Especially fsync batching.",
|
||||
"points": 61,
|
||||
"children": [
|
||||
{
|
||||
"id": 40100002,
|
||||
"type": "comment",
|
||||
"author": "bob",
|
||||
"text": "Agreed — and the group commit numbers match my own benchmarks.",
|
||||
"points": 24,
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 40100003,
|
||||
"type": "comment",
|
||||
"author": "carol",
|
||||
"text": "Counterpoint: the benchmark hardware is unrealistic.",
|
||||
"points": 12,
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": 40100004,
|
||||
"type": "comment",
|
||||
"author": null,
|
||||
"text": null,
|
||||
"points": null,
|
||||
"children": [
|
||||
{
|
||||
"id": 40100005,
|
||||
"type": "comment",
|
||||
"author": "dana",
|
||||
"text": "Replying to a since-deleted comment, but the point stands.",
|
||||
"points": 3,
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Vendored
+41
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"short_id": "abcdef",
|
||||
"title": "A Story About Databases",
|
||||
"url": "https://example.com/databases",
|
||||
"score": 48,
|
||||
"comment_count": 4,
|
||||
"comments": [
|
||||
{
|
||||
"short_id": "c1",
|
||||
"comment": "<p>Nice writeup of the write path.</p>",
|
||||
"score": 20,
|
||||
"indent_level": 1,
|
||||
"parent_comment": null,
|
||||
"commenting_user": "pushcx"
|
||||
},
|
||||
{
|
||||
"short_id": "c2",
|
||||
"comment": "<p>Do you have numbers for NVMe?</p>",
|
||||
"score": 9,
|
||||
"indent_level": 2,
|
||||
"parent_comment": "c1",
|
||||
"commenting_user": { "username": "second" }
|
||||
},
|
||||
{
|
||||
"short_id": "c3",
|
||||
"comment": "<p>Yes, in the appendix.</p>",
|
||||
"score": 4,
|
||||
"indent_level": 3,
|
||||
"parent_comment": "c2",
|
||||
"commenting_user": "third"
|
||||
},
|
||||
{
|
||||
"short_id": "c4",
|
||||
"comment": "<p>Unrelated: the site's typography is lovely.</p>",
|
||||
"score": 3,
|
||||
"indent_level": 1,
|
||||
"parent_comment": null,
|
||||
"commenting_user": "other"
|
||||
}
|
||||
]
|
||||
}
|
||||
Vendored
+82
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"id": 41234567,
|
||||
"created_at": "2026-08-14T13:02:11.000Z",
|
||||
"created_at_i": 1786748531,
|
||||
"type": "story",
|
||||
"author": "tylerh",
|
||||
"title": "A Deep Dive Into B-Trees",
|
||||
"url": "https://blog.dev/post",
|
||||
"text": null,
|
||||
"points": 342,
|
||||
"parent_id": null,
|
||||
"story_id": null,
|
||||
"children": [
|
||||
{
|
||||
"id": 41234600,
|
||||
"created_at": "2026-08-14T13:20:00.000Z",
|
||||
"type": "comment",
|
||||
"author": "dbnerd",
|
||||
"title": null,
|
||||
"url": null,
|
||||
"text": "<p>The section on page splits is the clearest I have read. <i>Bookmarked.</i></p>",
|
||||
"points": 88,
|
||||
"parent_id": 41234567,
|
||||
"story_id": 41234567,
|
||||
"children": [
|
||||
{
|
||||
"id": 41234611,
|
||||
"created_at": "2026-08-14T13:41:00.000Z",
|
||||
"type": "comment",
|
||||
"author": "tylerh",
|
||||
"title": null,
|
||||
"url": null,
|
||||
"text": "<p>Thanks — the diagrams took longer than the prose.</p>",
|
||||
"points": 31,
|
||||
"parent_id": 41234600,
|
||||
"story_id": 41234567,
|
||||
"children": [
|
||||
{
|
||||
"id": 41234620,
|
||||
"created_at": "2026-08-14T14:00:00.000Z",
|
||||
"type": "comment",
|
||||
"author": "gridlines",
|
||||
"title": null,
|
||||
"url": null,
|
||||
"text": "<p>What did you draw them with?</p>",
|
||||
"points": 4,
|
||||
"parent_id": 41234611,
|
||||
"story_id": 41234567,
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 41234700,
|
||||
"created_at": "2026-08-14T15:05:00.000Z",
|
||||
"type": "comment",
|
||||
"author": "deleted_user",
|
||||
"title": null,
|
||||
"url": null,
|
||||
"text": null,
|
||||
"points": null,
|
||||
"parent_id": 41234567,
|
||||
"story_id": 41234567,
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": 41234800,
|
||||
"created_at": "2026-08-14T16:12:00.000Z",
|
||||
"type": "comment",
|
||||
"author": "skeptic",
|
||||
"title": null,
|
||||
"url": null,
|
||||
"text": "<p>Counterpoint: LSM trees win on write-heavy workloads.</p>",
|
||||
"points": 45,
|
||||
"parent_id": 41234567,
|
||||
"story_id": 41234567,
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"hits": [
|
||||
{
|
||||
"created_at": "2026-08-14T13:02:11.000Z",
|
||||
"title": "A Deep Dive Into B-Trees",
|
||||
"url": "https://blog.dev/post",
|
||||
"author": "tylerh",
|
||||
"points": 342,
|
||||
"story_text": null,
|
||||
"comment_text": null,
|
||||
"num_comments": 210,
|
||||
"story_id": null,
|
||||
"story_title": null,
|
||||
"story_url": null,
|
||||
"parent_id": null,
|
||||
"created_at_i": 1786748531,
|
||||
"_tags": ["story", "author_tylerh", "story_41234567"],
|
||||
"objectID": "41234567",
|
||||
"_highlightResult": {
|
||||
"url": {
|
||||
"value": "https://blog.dev/post",
|
||||
"matchLevel": "full",
|
||||
"matchedWords": ["https://blog.dev/post"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"created_at": "2026-08-10T09:15:00.000Z",
|
||||
"title": "A Deep Dive Into B-Trees (2019)",
|
||||
"url": "https://blog.dev/post?utm_source=twitter",
|
||||
"author": "someoneelse",
|
||||
"points": 12,
|
||||
"story_text": null,
|
||||
"comment_text": null,
|
||||
"num_comments": 3,
|
||||
"story_id": null,
|
||||
"created_at_i": 1786396500,
|
||||
"_tags": ["story", "author_someoneelse", "story_41000000"],
|
||||
"objectID": "41000000"
|
||||
}
|
||||
],
|
||||
"nbHits": 2,
|
||||
"page": 0,
|
||||
"nbPages": 1,
|
||||
"hitsPerPage": 20,
|
||||
"exhaustiveNbHits": true,
|
||||
"query": "https://blog.dev/post",
|
||||
"params": "query=https%3A%2F%2Fblog.dev%2Fpost&restrictSearchableAttributes=url",
|
||||
"processingTimeMS": 3
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"hits": [],
|
||||
"nbHits": 0,
|
||||
"page": 0,
|
||||
"nbPages": 0,
|
||||
"hitsPerPage": 20,
|
||||
"exhaustiveNbHits": true,
|
||||
"query": "https://blog.dev/never-submitted",
|
||||
"params": "query=https%3A%2F%2Fblog.dev%2Fnever-submitted&restrictSearchableAttributes=url",
|
||||
"processingTimeMS": 1
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"short_id": "abcdef",
|
||||
"short_id_url": "https://lobste.rs/s/abcdef",
|
||||
"created_at": "2026-08-14T09:11:04.000-05:00",
|
||||
"title": "A Deep Dive Into B-Trees",
|
||||
"url": "https://blog.dev/post",
|
||||
"score": 78,
|
||||
"flags": 1,
|
||||
"comment_count": 4,
|
||||
"description": "",
|
||||
"description_plain": "",
|
||||
"comments_url": "https://lobste.rs/s/abcdef/a_deep_dive_into_b_trees",
|
||||
"submitter_user": "alice",
|
||||
"user_is_author": false,
|
||||
"tags": ["databases", "rust"],
|
||||
"comments": [
|
||||
{
|
||||
"short_id": "c00001",
|
||||
"short_id_url": "https://lobste.rs/c/c00001",
|
||||
"created_at": "2026-08-14T09:40:00.000-05:00",
|
||||
"is_deleted": false,
|
||||
"is_moderated": false,
|
||||
"score": 21,
|
||||
"flags": 0,
|
||||
"parent_comment": null,
|
||||
"comment": "<p>The page-split diagrams are excellent.</p>",
|
||||
"comment_plain": "The page-split diagrams are excellent.",
|
||||
"indent_level": 1,
|
||||
"commenting_user": "bob"
|
||||
},
|
||||
{
|
||||
"short_id": "c00002",
|
||||
"short_id_url": "https://lobste.rs/c/c00002",
|
||||
"created_at": "2026-08-14T10:02:00.000-05:00",
|
||||
"is_deleted": false,
|
||||
"is_moderated": false,
|
||||
"score": 9,
|
||||
"flags": 0,
|
||||
"parent_comment": "c00001",
|
||||
"comment": "<p>Agreed — and the prose is tight too.</p>",
|
||||
"comment_plain": "Agreed - and the prose is tight too.",
|
||||
"indent_level": 2,
|
||||
"commenting_user": { "username": "carol", "karma": 4021 }
|
||||
},
|
||||
{
|
||||
"short_id": "c00003",
|
||||
"short_id_url": "https://lobste.rs/c/c00003",
|
||||
"created_at": "2026-08-14T11:15:00.000-05:00",
|
||||
"is_deleted": false,
|
||||
"is_moderated": false,
|
||||
"score": 33,
|
||||
"flags": 0,
|
||||
"parent_comment": null,
|
||||
"comment": "<p>Prior art: the 1979 Comer survey covers most of this.</p>",
|
||||
"comment_plain": "Prior art: the 1979 Comer survey covers most of this.",
|
||||
"indent_level": 1,
|
||||
"commenting_user": "dave"
|
||||
},
|
||||
{
|
||||
"short_id": "c00004",
|
||||
"short_id_url": "https://lobste.rs/c/c00004",
|
||||
"created_at": "2026-08-14T11:59:00.000-05:00",
|
||||
"is_deleted": true,
|
||||
"is_moderated": false,
|
||||
"score": 0,
|
||||
"flags": 0,
|
||||
"parent_comment": "c00003",
|
||||
"comment": "",
|
||||
"comment_plain": "",
|
||||
"indent_level": 2,
|
||||
"commenting_user": "erin"
|
||||
}
|
||||
]
|
||||
}
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
[
|
||||
{
|
||||
"kind": "Listing",
|
||||
"data": {
|
||||
"children": [
|
||||
{
|
||||
"kind": "t3",
|
||||
"data": {
|
||||
"subreddit": "programming",
|
||||
"id": "1abcd2",
|
||||
"name": "t3_1abcd2",
|
||||
"title": "A Deep Dive Into B-Trees",
|
||||
"score": 845,
|
||||
"num_comments": 231,
|
||||
"permalink": "/r/programming/comments/1abcd2/a_deep_dive_into_btrees/",
|
||||
"url": "https://blog.dev/post"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "Listing",
|
||||
"data": {
|
||||
"children": [
|
||||
{
|
||||
"kind": "t1",
|
||||
"data": {
|
||||
"id": "kx1",
|
||||
"name": "t1_kx1",
|
||||
"author": "index_nerd",
|
||||
"score": 412,
|
||||
"body": "Fan-out is the whole ballgame; everything else is bookkeeping.",
|
||||
"depth": 0,
|
||||
"stickied": false,
|
||||
"replies": {
|
||||
"kind": "Listing",
|
||||
"data": {
|
||||
"children": [
|
||||
{
|
||||
"kind": "t1",
|
||||
"data": {
|
||||
"id": "kx2",
|
||||
"name": "t1_kx2",
|
||||
"author": "pagecache",
|
||||
"score": 130,
|
||||
"body": "Until your keys are variable length & the math gets ugly.",
|
||||
"depth": 1,
|
||||
"stickied": false,
|
||||
"replies": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "more",
|
||||
"data": {
|
||||
"count": 18,
|
||||
"name": "t1_more1",
|
||||
"id": "more1",
|
||||
"children": ["kx9", "kx10"]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "t1",
|
||||
"data": {
|
||||
"id": "kx3",
|
||||
"name": "t1_kx3",
|
||||
"author": "AutoModerator",
|
||||
"score": 1,
|
||||
"body": "Please keep discussion civil.",
|
||||
"depth": 0,
|
||||
"stickied": true,
|
||||
"replies": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "t1",
|
||||
"data": {
|
||||
"id": "kx4",
|
||||
"name": "t1_kx4",
|
||||
"author": "[deleted]",
|
||||
"score": null,
|
||||
"body": "[removed]",
|
||||
"depth": 0,
|
||||
"stickied": false,
|
||||
"replies": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "more",
|
||||
"data": {
|
||||
"count": 205,
|
||||
"name": "t1_more2",
|
||||
"id": "more2",
|
||||
"children": []
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
Vendored
+69
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"kind": "Listing",
|
||||
"data": {
|
||||
"after": null,
|
||||
"dist": 3,
|
||||
"modhash": "",
|
||||
"geo_filter": "",
|
||||
"before": null,
|
||||
"children": [
|
||||
{
|
||||
"kind": "t3",
|
||||
"data": {
|
||||
"subreddit": "programming",
|
||||
"id": "1abcd2",
|
||||
"name": "t3_1abcd2",
|
||||
"title": "A Deep Dive Into B-Trees",
|
||||
"score": 845,
|
||||
"ups": 845,
|
||||
"num_comments": 231,
|
||||
"permalink": "/r/programming/comments/1abcd2/a_deep_dive_into_btrees/",
|
||||
"url": "https://blog.dev/post",
|
||||
"author": "u_someone",
|
||||
"created_utc": 1786748531.0,
|
||||
"over_18": false,
|
||||
"stickied": false,
|
||||
"is_self": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "t3",
|
||||
"data": {
|
||||
"subreddit": "databases",
|
||||
"id": "1efgh3",
|
||||
"name": "t3_1efgh3",
|
||||
"title": "A Deep Dive Into B-Trees",
|
||||
"score": 96,
|
||||
"ups": 96,
|
||||
"num_comments": 14,
|
||||
"permalink": "/r/databases/comments/1efgh3/a_deep_dive_into_btrees/",
|
||||
"url": "https://blog.dev/post",
|
||||
"author": "dbperson",
|
||||
"created_utc": 1786752000.0,
|
||||
"over_18": false,
|
||||
"stickied": false,
|
||||
"is_self": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "t3",
|
||||
"data": {
|
||||
"subreddit": "rust",
|
||||
"id": "1ijkl4",
|
||||
"name": "t3_1ijkl4",
|
||||
"title": "A Deep Dive Into B-Trees",
|
||||
"score": 12,
|
||||
"ups": 12,
|
||||
"num_comments": 2,
|
||||
"permalink": "/r/rust/comments/1ijkl4/a_deep_dive_into_btrees/",
|
||||
"url": "https://blog.dev/post",
|
||||
"author": "ferris",
|
||||
"created_utc": 1786755000.0,
|
||||
"over_18": false,
|
||||
"stickied": false,
|
||||
"is_self": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"kind": "Listing",
|
||||
"data": {
|
||||
"after": null,
|
||||
"dist": 0,
|
||||
"modhash": "",
|
||||
"geo_filter": "",
|
||||
"before": null,
|
||||
"children": []
|
||||
}
|
||||
}
|
||||
Vendored
+76
@@ -0,0 +1,76 @@
|
||||
[
|
||||
{
|
||||
"kind": "Listing",
|
||||
"data": {
|
||||
"children": [
|
||||
{
|
||||
"kind": "t3",
|
||||
"data": {
|
||||
"title": "A Story About Databases",
|
||||
"permalink": "/r/rust/comments/abc/title/",
|
||||
"score": 512,
|
||||
"num_comments": 87
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "Listing",
|
||||
"data": {
|
||||
"children": [
|
||||
{
|
||||
"kind": "t1",
|
||||
"data": {
|
||||
"author": "ferris",
|
||||
"score": 55,
|
||||
"body": "The borrow checker earns its keep here.",
|
||||
"body_html": "<div class=\"md\"><p>The borrow checker earns its keep here.</p></div>",
|
||||
"replies": {
|
||||
"kind": "Listing",
|
||||
"data": {
|
||||
"children": [
|
||||
{
|
||||
"kind": "t1",
|
||||
"data": {
|
||||
"author": "crab",
|
||||
"score": 12,
|
||||
"body_html": "<div class=\"md\"><p>Only if you never fight it.</p></div>",
|
||||
"replies": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "more",
|
||||
"data": { "count": 14, "children": ["x1", "x2"] }
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "t1",
|
||||
"data": {
|
||||
"author": "[deleted]",
|
||||
"score": 1,
|
||||
"body_html": "<div class=\"md\"><p>[removed]</p></div>",
|
||||
"replies": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "t1",
|
||||
"data": {
|
||||
"author": "rustacean",
|
||||
"score": 31,
|
||||
"body_html": "<div class=\"md\"><p>The section on &quot;unsafe&quot; is the best part.</p></div>",
|
||||
"replies": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "more",
|
||||
"data": { "count": 40, "children": ["y1"] }
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
<!DOCTYPE html>
|
||||
<html prefix="dc: http://purl.org/dc/terms/" about="http://en.wikipedia.org/wiki/Special:Redirect/revision/1">
|
||||
<head><meta charset="utf-8"/><title>Portal:Current events/2026 August 15</title></head>
|
||||
<body id="mwAA" lang="en" class="mw-content-ltr sitedir-ltr ltr mw-body-content parsoid-body mediawiki mw-parser-output">
|
||||
<section data-mw-section-id="0" id="mwAQ">
|
||||
<div class="current-events-main vevent" id="mwAg">
|
||||
<div class="current-events-heading">
|
||||
<span class="summary"><span class="current-events-title">August 15, 2026</span></span>
|
||||
<span class="mw-editsection"><a href="/w/index.php?title=Portal:Current_events/2026_August_15&action=edit">edit</a></span>
|
||||
</div>
|
||||
<div class="current-events-content description" id="mwAw">
|
||||
<p><b>Armed conflicts and attacks</b></p>
|
||||
<ul>
|
||||
<li><a href="./Border_dispute" title="Border dispute">Border dispute</a> in the region continues for a fourth day, with mediators from the <a href="./United_Nations" title="United Nations">United Nations</a> arriving overnight.<sup class="reference" id="cite_ref-1"><a href="#cite_note-1">[1]</a></sup>
|
||||
<ul>
|
||||
<li>A second-level detail about the mediation timetable.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Officials report no casualties.<sup class="reference"><a href="#cite_note-2">[2]</a></sup></li>
|
||||
</ul>
|
||||
<p><b>Disasters and accidents</b></p>
|
||||
<ul>
|
||||
<li>Heavy rain floods the Charles River basin in <a href="./Boston" title="Boston">Boston</a>, <a href="./Massachusetts" title="Massachusetts">Massachusetts</a>, closing several stations.<sup class="reference"><a href="#cite_note-3">[3]</a></sup></li>
|
||||
</ul>
|
||||
<p><b>Science and technology</b></p>
|
||||
<ul>
|
||||
<li>A long-duration flight test concludes successfully.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="navbox" role="navigation">
|
||||
<ul><li>Ongoing events</li><li>Recent deaths</li></ul>
|
||||
</div>
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,17 @@
|
||||
<!DOCTYPE html>
|
||||
<html prefix="dc: http://purl.org/dc/terms/ mw: http://mediawiki.org/rdf/" about="//en.wikipedia.org/wiki/Special:Redirect/revision/1369461094"><head prefix="mwr: //en.wikipedia.org/wiki/Special:Redirect/"><meta charset="utf-8"/><link rel="dc:replaces" resource="mwr:revision/0"/><meta property="mw:revisionSHA1" content="bqap22vqgtaw0lrodhv0ng2kbg1lo4i"/><meta property="dc:modified" content="2026-08-15T03:30:02Z"/><meta property="mw:pageNamespace" content="100"/><meta property="mw:pageId" content="83976994"/><meta property="mw:htmlVersion" content="2.8.0"/><meta property="mw:html:version" content="2.8.0"/><base href="//en.wikipedia.org/wiki/"/><link rel="dc:isVersionOf" href="//en.wikipedia.org/wiki/Portal:Current_events/2026_August_16"/><title>Portal:Current events/2026 August 16</title><meta property="mw:jsConfigVars" content='{"wgParsoidHtmlVersion":"2.8.0"}'/><meta property="mw:moduleStyles" content="mediawiki.skinning.content.parsoid"/><link rel="stylesheet" href="/w/load.php?lang=en&modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles&only=styles&skin=vector"/><meta http-equiv="content-language" content="en"/><meta http-equiv="vary" content="Accept"/><meta http-equiv="x-mediawiki-render-id" content="9a187c46-9859-11f1-ac0e-b9eb5a8a3066"/></head><body class="mw-content-ltr sitedir-ltr ltr mw-body-content mediawiki mw-parser-output parsoid-body" lang="en" dir="ltr" data-mw-parsoid-version="0.24.0.0-alpha19" data-mw-html-version="2.8.0"><section data-mw-section-id="0" id="mwAQ"><span class="mw-empty-elt" about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"Current events","href":"./Template:Current_events"},"params":{"year":{"wt":"2026"},"month":{"wt":"08"},"day":{"wt":"16"},"top":{"wt":"yes"}},"i":0}},"\n\n<!-- All news items below this line -->\n*\n<!-- All news items above this line -->\n\n",{"template":{"target":{"wt":"Current events","href":"./Template:Current_events"},"params":{"year":{"wt":"2026"},"month":{"wt":"08"},"day":{"wt":"16"},"bottom":{"wt":"yes"}},"i":1}}]}' id="mwAg"><style data-mw-deduplicate="TemplateStyles:r1305593205" typeof="mw:Extension/templatestyles" about="#mwt2" data-mw='{"name":"templatestyles","attrs":{"src":"Current events/styles.css"}}'>.mw-parser-output .current-events-main{margin:0.5em 0;padding:0.3em;background-color:var(--background-color-base,#fff);color:inherit;border:1px #cef2e0 solid}.mw-parser-output .current-events-heading{background-color:#cef2e0;color:inherit;font-weight:bold}@media screen{html.skin-theme-clientpref-night .mw-parser-output .current-events-heading{background-color:#0b281a}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .current-events-heading{background-color:#0b281a}}.mw-parser-output .current-events-title{padding:0.4em}.mw-parser-output .current-events-navbar{list-style:none;margin:0;font-size:small}.mw-parser-output .current-events-navbar li{display:inline-block;padding:0 0.4em}.mw-parser-output .current-events-content{padding:0 0.3em}.mw-parser-output .current-events-content-heading{margin-top:0.3em;font-weight:bold}.mw-parser-output .current-events-more{border-width:2px;font-size:10pt;font-weight:bold;padding:0.3em 0.6em}.mw-parser-output .current-events-nav{margin:auto;text-align:center;line-height:1.2}.mw-parser-output .current-events-nav a{display:inline-block;margin:0.5em;padding:0.5em;background-color:var(--background-color-neutral,#eaecf0)}.mw-parser-output .current-events-nav a>div{font-weight:bold}@media all and (min-width:480px){.mw-parser-output .current-events-heading{align-items:center;display:flex}.mw-parser-output .current-events-title{flex:1}.mw-parser-output .current-events-navbar{flex:0 auto;text-align:right;white-space:nowrap}.mw-parser-output .current-events-nav{max-width:22em}.mw-parser-output .current-events-nav a{width:9em}}</style></span><div class="current-events" about="#mwt1" id="mwAw">
|
||||
<div role="region" aria-label="August 16" id="2026_August_16" class="current-events-main vevent">
|
||||
<div class="current-events-heading plainlinks">
|
||||
<div class="current-events-title" role="heading"><span class="summary">August<span typeof="mw:Entity"> </span>16,<span typeof="mw:Entity"> </span>2026<span style="display: none;"><span typeof="mw:Entity"> </span>(<span class="bday dtstart published updated itvstart">2026-08-16</span>)</span> (Sunday)</span><link rel="mw:PageProp/Category" href="./Category:2026_by_day#2026-08-16"/>
|
||||
</div>
|
||||
<ul class="current-events-navbar editlink noprint"><li><a rel="mw:ExtLink" href="https://en.wikipedia.org/w/index.php?title=Portal:Current_events/2026_August_16&action=edit&editintro=Portal:Current_events/Edit_instructions" class="external text" data-mw-original-href="//en.wikipedia.org/w/index.php?title=Portal:Current_events/2026_August_16&action=edit&editintro=Portal:Current_events/Edit_instructions">edit</a></li><li><a rel="mw:ExtLink" href="https://en.wikipedia.org/w/index.php?title=Portal:Current_events/2026_August_16&action=history" class="external text" data-mw-original-href="//en.wikipedia.org/w/index.php?title=Portal:Current_events/2026_August_16&action=history">history</a></li><li><a rel="mw:ExtLink" href="https://en.wikipedia.org/w/index.php?title=Portal:Current_events/2026_August_16&action=watch" class="external text" data-mw-original-href="//en.wikipedia.org/w/index.php?title=Portal:Current_events/2026_August_16&action=watch">watch</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="current-events-content description">
|
||||
|
||||
<!-- All news items below this line -->
|
||||
<ul></ul>
|
||||
<!-- All news items above this line -->
|
||||
|
||||
</div></div><div class="current-events-nav" role="navigation">
|
||||
<div><a rel="mw:WikiLink" href="./Portal:Current_events/August_2026" title="Portal:Current events/August 2026">Month<div>August 2026</div></a></div><a rel="mw:WikiLink" href="./Portal:Current_events/2026_August_15" title="Portal:Current events/2026 August 15">Previous day<div>August 15</div></a><a rel="mw:WikiLink" href="./Portal:Current_events/2026_August_17?action=edit&redlink=1" title="Portal:Current events/2026 August 17" class="new" typeof="mw:LocalizedAttrs" data-mw-i18n='{"title":{"lang":"x-page","key":"red-link-title","params":["Portal:Current events/2026 August 17"]}}'>Next day<div>August 17</div></a></div></div></section></body></html>
|
||||
Reference in New Issue
Block a user