From 518b2e380f2549aeb6535431319f9bdcf0e6f426 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Sun, 7 Dec 2025 19:38:20 +0100 Subject: [PATCH] =?utf8?q?=E2=9C=A8=20Add=20=E2=80=9CLast=20Place=20Comics?= =?utf8?q?=E2=80=9D=20filter?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../filters/comics/LastPlaceComicsFilter.kt | 18 + .../rhynodge/watchers/LastPlaceComicsWatcher.kt | 13 + .../rhynodge/filters/comics/LastPlaceComicsTest.kt | 15 + .../rhynodge/filters/comics/last-place-comics.html | 1052 ++++++++++++++++++++ 4 files changed, 1098 insertions(+) create mode 100644 src/main/kotlin/net/pterodactylus/rhynodge/filters/comics/LastPlaceComicsFilter.kt create mode 100644 src/main/kotlin/net/pterodactylus/rhynodge/watchers/LastPlaceComicsWatcher.kt create mode 100644 src/test/kotlin/net/pterodactylus/rhynodge/filters/comics/LastPlaceComicsTest.kt create mode 100644 src/test/resources/net/pterodactylus/rhynodge/filters/comics/last-place-comics.html diff --git a/src/main/kotlin/net/pterodactylus/rhynodge/filters/comics/LastPlaceComicsFilter.kt b/src/main/kotlin/net/pterodactylus/rhynodge/filters/comics/LastPlaceComicsFilter.kt new file mode 100644 index 0000000..c461e58 --- /dev/null +++ b/src/main/kotlin/net/pterodactylus/rhynodge/filters/comics/LastPlaceComicsFilter.kt @@ -0,0 +1,18 @@ +package net.pterodactylus.rhynodge.filters.comics + +import java.util.Optional +import net.pterodactylus.rhynodge.filters.ComicSiteFilter +import net.pterodactylus.rhynodge.utils.asOptional +import org.jsoup.nodes.Document + +class LastPlaceComicsFilter : ComicSiteFilter() { + + override fun extractTitle(document: Document): Optional = + document.select(".wp-show-posts-image a").attr("title").asOptional() + + override fun extractImageUrls(document: Document): List = + document.select(".wp-show-posts-image a img").map { it.attr("src") } + + override fun extractImageComments(document: Document): List = emptyList() + +} diff --git a/src/main/kotlin/net/pterodactylus/rhynodge/watchers/LastPlaceComicsWatcher.kt b/src/main/kotlin/net/pterodactylus/rhynodge/watchers/LastPlaceComicsWatcher.kt new file mode 100644 index 0000000..388b44b --- /dev/null +++ b/src/main/kotlin/net/pterodactylus/rhynodge/watchers/LastPlaceComicsWatcher.kt @@ -0,0 +1,13 @@ +package net.pterodactylus.rhynodge.watchers + +import net.pterodactylus.rhynodge.filters.HtmlFilter +import net.pterodactylus.rhynodge.filters.comics.LastPlaceComicsFilter +import net.pterodactylus.rhynodge.mergers.ComicMerger +import net.pterodactylus.rhynodge.queries.HttpQuery + +@Suppress("unused") +class LastPlaceComicsWatcher : DefaultWatcher(query, filters, merger) + +private val query = HttpQuery("https://lastplacecomics.com/") +private val filters = listOf(HtmlFilter(), LastPlaceComicsFilter()) +private val merger = ComicMerger() diff --git a/src/test/kotlin/net/pterodactylus/rhynodge/filters/comics/LastPlaceComicsTest.kt b/src/test/kotlin/net/pterodactylus/rhynodge/filters/comics/LastPlaceComicsTest.kt new file mode 100644 index 0000000..5df9aff --- /dev/null +++ b/src/test/kotlin/net/pterodactylus/rhynodge/filters/comics/LastPlaceComicsTest.kt @@ -0,0 +1,15 @@ +package net.pterodactylus.rhynodge.filters.comics + +import net.pterodactylus.rhynodge.states.ComicState.Comic +import net.pterodactylus.rhynodge.states.ComicState.Strip + +class LastPlaceComicsTest : ComicSiteFilterTest() { + + override val filter = LastPlaceComicsFilter() + override val baseUrl = "https://lastplacecomics.com/" + override val resource = "last-place-comics.html" + override val expectedComics = listOf(Comic("McCollesseum").apply { + add(Strip("https://lastplacecomics.com/wp-content/uploads/2025/11/mcdonalds-gladitator-JPG.jpg", "")) + }) + +} diff --git a/src/test/resources/net/pterodactylus/rhynodge/filters/comics/last-place-comics.html b/src/test/resources/net/pterodactylus/rhynodge/filters/comics/last-place-comics.html new file mode 100644 index 0000000..534c704 --- /dev/null +++ b/src/test/resources/net/pterodactylus/rhynodge/filters/comics/last-place-comics.html @@ -0,0 +1,1052 @@ + + + + + + + + + + Home - Last Place Comics + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+ +
+
+
+
+
+
+
+ + +
+ + +
+
+ + +
+ + +
+
+
+
+
+
+
+
+ Comic, webcomic, last place comics, collesseum, gladiator, mcdonalds, mcdonald's, grimace, hamburglar, ronald, birdie
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

© Zach Cranor 2025

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+

© Zach Cranor 2025

+
+
+
+
+
+
+ + + +
+ + + +
+ +
+ + +
+ + +
+
+ +
+ + + + +
+
+ + +
+
+
+
+
+
+
+ +
+
+ + +
+ Search +
+ + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 2.7.4