From 1df516a9f9afb923af81dbca04c677cb5bb2599f Mon Sep 17 00:00:00 2001
From: cyian-1756 <devnull64@vfemail.net>
Date: Mon, 4 Sep 2017 15:22:50 -0400
Subject: [PATCH] Added viewcomic ripper

---
 .../ripme/ripper/rippers/ViewcomicRipper.java | 86 +++++++++++++++++++
 1 file changed, 86 insertions(+)
 create mode 100644 src/main/java/com/rarchives/ripme/ripper/rippers/ViewcomicRipper.java

diff --git a/src/main/java/com/rarchives/ripme/ripper/rippers/ViewcomicRipper.java b/src/main/java/com/rarchives/ripme/ripper/rippers/ViewcomicRipper.java
new file mode 100644
index 00000000..7f50b095
--- /dev/null
+++ b/src/main/java/com/rarchives/ripme/ripper/rippers/ViewcomicRipper.java
@@ -0,0 +1,86 @@
+package com.rarchives.ripme.ripper.rippers;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
+
+import com.rarchives.ripme.ripper.AbstractHTMLRipper;
+import com.rarchives.ripme.utils.Http;
+
+public class ViewcomicRipper extends AbstractHTMLRipper {
+
+    public ViewcomicRipper(URL url) throws IOException {
+    super(url);
+    }
+
+        @Override
+        public String getHost() {
+            return "view-comic";
+        }
+
+        @Override
+        public String getDomain() {
+            return "view-comic.com";
+        }
+
+        @Override
+        public String getAlbumTitle(URL url) throws MalformedURLException {
+            try {
+                // Attempt to use album title as GID
+                String titleText = getFirstPage().select("title").first().text();
+                String title = titleText.replace("Viewcomic reading comics online for free", "");
+                title = title.replace("_", "");
+                title = title.replace("|", "");
+                title = title.replace("…", "");
+                title = title.replace(".", "");
+                return getHost() + "_" + title.trim();
+            } catch (IOException e) {
+                // Fall back to default album naming convention
+                logger.info("Unable to find title at " + url);
+            }
+            return super.getAlbumTitle(url);
+        }
+
+
+        @Override
+        public String getGID(URL url) throws MalformedURLException {
+            Pattern p = Pattern.compile("https?://view-comic.com/([a-zA-Z1-9_-]*)/?$");
+            Matcher m = p.matcher(url.toExternalForm());
+            if (m.matches()) {
+                return m.group(1);
+            }
+            throw new MalformedURLException("Expected view-comic URL format: " +
+                            "view-comic.com/COMIC_NAME - got " + url + " instead");
+        }
+
+        @Override
+        public Document getFirstPage() throws IOException {
+            // "url" is an instance field of the superclass
+            return Http.url(url).get();
+        }
+
+        @Override
+        public List<String> getURLsFromPage(Document doc) {
+            List<String> result = new ArrayList<String>();
+                for (Element el : doc.select("div.pinbin-copy > a > img")) {
+                    result.add(el.attr("src"));
+                }
+            return result;
+        }
+
+        @Override
+        public void downloadURL(URL url, int index) {
+            addURLToDownload(url, getPrefix(index));
+        }
+
+
+    }