🚑️ Update filter for Cyanide & Happiness
[rhynodge.git] / src / main / java / net / pterodactylus / rhynodge / filters / comics / CyanideAndHappinessComicFilter.java
index b51e959..80c8ac4 100644 (file)
 
 package net.pterodactylus.rhynodge.filters.comics;
 
+import static com.google.common.base.Optional.absent;
+import static com.google.common.base.Optional.of;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
 import java.util.Collections;
 import java.util.List;
 
@@ -39,17 +45,27 @@ public class CyanideAndHappinessComicFilter extends ComicSiteFilter {
 
        @Override
        protected Optional<String> extractTitle(Document document) {
-               return Optional.of("");
+               return extractImageUrls(document).isEmpty() ? absent() : of("");
        }
 
        @Override
        protected List<String> extractImageUrls(Document document) {
-               Elements imageTags = document.select("img[alt=Cyanide and Happiness, a daily webcomic]");
+               Elements imageTags = document.select(".MainComic__ComicImage-sc-ndbx87-2 > span noscript img");
                return FluentIterable.from(imageTags).transform(new Function<Element, String>() {
 
                        @Override
                        public String apply(Element input) {
-                               return input.attr("src");
+                               String imageUrl = input.attr("src");
+                               try {
+                                       return new URI(document.baseUri()).resolve(imageUrl).toString();
+                               } catch (URISyntaxException e) {
+                                       /* ignore. */
+                               }
+                               if (!imageUrl.startsWith("/")) {
+                                       return imageUrl;
+                               }
+                               String protocol = document.baseUri().substring(0, document.baseUri().indexOf('/'));
+                               return protocol + imageUrl;
                        }
                }).toList();
        }