From: David ‘Bombe’ Roden Date: Thu, 2 Oct 2025 13:18:11 +0000 (+0200) Subject: ✨ Add comic filter for Bex and Keit X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=3c627810eaebaf28f7d49ecbaf9cb173afcb8ae9;p=rhynodge.git ✨ Add comic filter for Bex and Keit --- diff --git a/src/main/kotlin/net/pterodactylus/rhynodge/filters/comics/BexAndKeitComicFilter.kt b/src/main/kotlin/net/pterodactylus/rhynodge/filters/comics/BexAndKeitComicFilter.kt new file mode 100644 index 0000000..1d7c241 --- /dev/null +++ b/src/main/kotlin/net/pterodactylus/rhynodge/filters/comics/BexAndKeitComicFilter.kt @@ -0,0 +1,20 @@ +package net.pterodactylus.rhynodge.filters.comics + +import com.google.common.base.Optional +import com.google.common.base.Optional.absent +import net.pterodactylus.rhynodge.filters.ComicSiteFilter +import org.jsoup.nodes.Document + +class BexAndKeitComicFilter : ComicSiteFilter() { + + override fun extractTitle(document: Document): Optional = absent() + + override fun extractImageUrls(document: Document) = + document.select(".row") + .takeWhile { !it.attr("class").contains("adsrow") } + .flatMap { it.select("picture.comic-image source:first-child") } + .map { it.attr("srcset") } + + override fun extractImageComments(document: Document) = emptyList() + +} diff --git a/src/main/kotlin/net/pterodactylus/rhynodge/watchers/BexAndKeitWatcher.kt b/src/main/kotlin/net/pterodactylus/rhynodge/watchers/BexAndKeitWatcher.kt new file mode 100644 index 0000000..ddcb797 --- /dev/null +++ b/src/main/kotlin/net/pterodactylus/rhynodge/watchers/BexAndKeitWatcher.kt @@ -0,0 +1,13 @@ +package net.pterodactylus.rhynodge.watchers + +import net.pterodactylus.rhynodge.filters.HtmlFilter +import net.pterodactylus.rhynodge.filters.comics.BexAndKeitComicFilter +import net.pterodactylus.rhynodge.mergers.ComicMerger +import net.pterodactylus.rhynodge.queries.HttpQuery + +@Suppress("unused") +class BexAndKeitWatcher : DefaultWatcher(query, filters, merger) + +private val query = HttpQuery("https://krooxworld.com/bex-and-keit") +private val filters = listOf(HtmlFilter(), BexAndKeitComicFilter()) +private val merger = ComicMerger() diff --git a/src/test/kotlin/net/pterodactylus/rhynodge/filters/comics/BexAndKeitComicFilterTest.kt b/src/test/kotlin/net/pterodactylus/rhynodge/filters/comics/BexAndKeitComicFilterTest.kt new file mode 100644 index 0000000..db1da31 --- /dev/null +++ b/src/test/kotlin/net/pterodactylus/rhynodge/filters/comics/BexAndKeitComicFilterTest.kt @@ -0,0 +1,17 @@ +package net.pterodactylus.rhynodge.filters.comics + +import net.pterodactylus.rhynodge.states.ComicState + +class BexAndKeitComicFilterTest : ComicSiteFilterTest() { + + override val filter = BexAndKeitComicFilter() + override val baseUrl = "https://krooxworld.com/bex-and-keit" + override val resource = "bex-and-keit.html" + override val expectedComics = listOf( + ComicState.Comic("") + .add(ComicState.Strip("https://cdn.sanity.io/images/4h3kafsm/production/fbf3f2a13434998df21b658b536e501f86af6224-1109x1399.jpg?w=672&fit=max", "")) + .add(ComicState.Strip("https://cdn.sanity.io/images/4h3kafsm/production/8bb1efb285d5fa42e79c6dd6ebdb165e7a5c3229-1109x1399.jpg?w=672&fit=max", "")) + .add(ComicState.Strip("https://cdn.sanity.io/images/4h3kafsm/production/65a2d010ba31e5e4647c3594bfb3beb59fcf7a87-1109x1399.jpg?w=672&fit=max", "")) + ) + +} diff --git a/src/test/resources/net/pterodactylus/rhynodge/filters/comics/bex-and-keit.html b/src/test/resources/net/pterodactylus/rhynodge/filters/comics/bex-and-keit.html new file mode 100644 index 0000000..5d96c73 --- /dev/null +++ b/src/test/resources/net/pterodactylus/rhynodge/filters/comics/bex-and-keit.html @@ -0,0 +1,422 @@ + + + + + + + + + + + + + + Home page - Krooxworld + + + + + + + + + + + + + +
+ + + + + + + +
+ +
+ + +
+
+ + + + + + +
+
+ + +
+
+
+ + + + + + + + + Sample + +
+
+
+
+
+
+ + + + + + + + + Sample + +
+
+
+
+
+
+ + + + + + + + + Sample + +
+
+
+
+ +

Replace these ads with a bonus panel by becoming a + +

+ +
+ + + + +
+ + +

Bonus panels are never required reading to understand the free content, in fact sometimes bonus + panels ruins the joke!

+
+
+
+
+ + + + + + + + + Sample + +
+
+
+ + +
+
+

It's that time of the year again. One new comic every day, all of October! (God willing)

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