🚧 Add comic filter for Oglaf
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Thu, 20 Jan 2022 20:35:45 +0000 (21:35 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Thu, 20 Jan 2022 20:35:45 +0000 (21:35 +0100)
src/main/kotlin/net/pterodactylus/rhynodge/filters/comics/OglafComicSiteFilter.kt [new file with mode: 0644]
src/test/kotlin/net/pterodactylus/rhynodge/filters/comics/OglafComicSiteFilterTest.kt [new file with mode: 0644]
src/test/resources/net/pterodactylus/rhynodge/filters/comics/oglaf.html [new file with mode: 0644]

diff --git a/src/main/kotlin/net/pterodactylus/rhynodge/filters/comics/OglafComicSiteFilter.kt b/src/main/kotlin/net/pterodactylus/rhynodge/filters/comics/OglafComicSiteFilter.kt
new file mode 100644 (file)
index 0000000..777eca8
--- /dev/null
@@ -0,0 +1,21 @@
+package net.pterodactylus.rhynodge.filters.comics
+
+import net.pterodactylus.rhynodge.filters.ComicSiteFilter
+import net.pterodactylus.rhynodge.utils.asOptional
+import org.jsoup.nodes.Document
+
+class OglafComicSiteFilter : ComicSiteFilter() {
+
+       override fun extractTitle(document: Document) = document.title().asOptional()
+
+       override fun extractImageUrls(document: Document) =
+               document.getElementById("strip")
+                       .attr("src")
+                       .let(::listOf)
+
+       override fun extractImageComments(document: Document) =
+               document.getElementById("strip")
+                       .attr("title")
+                       .let(::listOf)
+
+}
diff --git a/src/test/kotlin/net/pterodactylus/rhynodge/filters/comics/OglafComicSiteFilterTest.kt b/src/test/kotlin/net/pterodactylus/rhynodge/filters/comics/OglafComicSiteFilterTest.kt
new file mode 100644 (file)
index 0000000..1bf90d2
--- /dev/null
@@ -0,0 +1,17 @@
+package net.pterodactylus.rhynodge.filters.comics
+
+import net.pterodactylus.rhynodge.states.ComicState
+import net.pterodactylus.rhynodge.states.ComicState.Comic
+
+class OglafComicSiteFilterTest : ComicSiteFilterTest() {
+
+       override val filter = OglafComicSiteFilter()
+       override val baseUrl = "https://www.oglaf.com/"
+       override val resource = "oglaf.html"
+       override val expectedComics = listOf(
+               Comic("Lightning Rod")
+                       .add(ComicState.Strip("https://media.oglaf.com/comic/lightning_rod.jpg", "With Zeus, â€˜aftercare’ usually means turning you into an animal"))
+       )
+
+}
+
diff --git a/src/test/resources/net/pterodactylus/rhynodge/filters/comics/oglaf.html b/src/test/resources/net/pterodactylus/rhynodge/filters/comics/oglaf.html
new file mode 100644 (file)
index 0000000..66ac736
--- /dev/null
@@ -0,0 +1,4 @@
+<!DOCTYPE html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="robots" content="FOLLOW,ARCHIVE"><title>Lightning Rod</title><link rel="alternate" type="application/rss+xml" title="Comics. Often dirty." href="/feeds/rss/" /><link rel="canonical" href="https://www.oglaf.com/" /><link rel="icon" type="image/png" href="https://static.oglaf.com/favicon.png" /><link rel="stylesheet" href="https://static.oglaf.com/css/201811101415.css"><link rel="prev" href="/strongly-discouraged/" /><script src="/ll.js"></script><script src="https://static.oglaf.com/ageconfirmation/js.cookie.js"></script><script src="https://static.oglaf.com/ageconfirmation/url-polyfill.js"></script><script src="https://static.oglaf.com/ageconfirmation/check-age-confirmation.js" data-confirmationUrl="/age-confirmation/"></script><script>window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; ga('create', 'UA-9447230-1', 'auto'); ga('send', 'pageview');</script><script async src='https://www.google-analytics.com/analytics.js'></script></head><body onload="ld()"><div style="width:936px;margin:0 auto;"><div class="align" id="tl"></div><div class="align" id="lg"><img onclick="ld()" id="ll" src="https://static.oglaf.com/loglines/blank.gif" title=""></div><div class="align" style="height: 55px;"><img src="https://static.oglaf.com/img/mastL.png" alt="lovingly rendered pictures of cocks." /></div><div class="clear"></div><div class="content" ><div id="tt"><img src="https://media.oglaf.com/story/ttlightningrod.gif" title="None" /></div><b><img id="strip" src="https://media.oglaf.com/comic/lightning_rod.jpg" 
+              alt="Zeus lets loose"
+              title="With Zeus, â€˜aftercare’ usually means turning you into an animal"
+              /></b><div id="nav" style="padding-top: 3px; "><a href="https://twitter.com/Oglaf" rel="me" target="_blank" class="mn" style="top:560px;left:102px;"><img src="https://static.oglaf.com/img/tw.gif" alt="Twitter" /></a><a href="/feeds/rss/" rel="alternate" class="mn" style="top:560px;left:48px;"><img src="https://static.oglaf.com/img/rs.gif" alt="RSS" /></a><span class="button next disabled"></span><a href="/strongly-discouraged/" rel="prev" class="button previous" accesskey="k">Previous</a><a href="/archive/" class="button archive">Archive</a><a href="https://topatoco.com/collections/oglaf" class="button store">Store</a><a href="https://www.patreon.com/oglaf" class="button patreon">Patreon</a><div style="display: block; margin-top: 195px;"></div></div></div><div class="clear"></div><div class="align btm" id="bl"></div><div class="align btm" id="bm"></div><div class="align btm" id="br"></div><div class="clear"></div><div align="center" id="ad_btm"></div></div>