diff --git a/twitter_techsupportgore_bot/src/twitter_techsupportgore_bot/Hypervisor.java b/twitter_techsupportgore_bot/src/twitter_techsupportgore_bot/Hypervisor.java
new file mode 100644
index 0000000..d49c1b0
--- /dev/null
+++ b/twitter_techsupportgore_bot/src/twitter_techsupportgore_bot/Hypervisor.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2019 louis
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package twitter_techsupportgore_bot;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URL;
+
+/**
+ * Singleton Hypervisor. This is the object that does everything. So we want it
+ * to be unique. That's why it's a singleton.
+ *
+ * @author louis
+ */
+public class Hypervisor {
+
+ /**
+ * Private constructor so nobody except this obect can build this object.
+ */
+ private Hypervisor() {
+ }
+
+ /**
+ * The singleton.
+ */
+ private static Hypervisor SINGLETON = null;
+
+ /**
+ * Get the Singleton Hypervisor instance.
+ *
+ * @return the instance.
+ */
+ public static Hypervisor getSingleton() {
+ if (SINGLETON == null) {
+ SINGLETON = new Hypervisor();
+ }
+ return SINGLETON;
+ }
+
+ /**
+ * Save Image from URL. Modified version of the code that can be found atF
+ * https://www.programcreek.com/2012/12/download-image-from-url-in-java/
+ *
+ * @param imageUrl the image URL.
+ * @throws IOException
+ */
+ public static void saveImage(String imageUrl) throws IOException {
+ URL url = new URL(imageUrl);
+ String fileName = url.getFile();
+ String destName = "../downloads" + fileName.substring(fileName.lastIndexOf("/"), fileName.lastIndexOf("?"));
+
+ InputStream is = url.openStream();
+ OutputStream os = new FileOutputStream(destName);
+
+ byte[] b = new byte[2048];
+ int length;
+
+ while ((length = is.read(b)) != -1) {
+ os.write(b, 0, length);
+ }
+
+ is.close();
+ os.close();
+ }
+
+}
diff --git a/twitter_techsupportgore_bot/src/twitter_techsupportgore_bot/Twitter_techsupportgore_bot.java b/twitter_techsupportgore_bot/src/twitter_techsupportgore_bot/Twitter_techsupportgore_bot.java
index c155a19..2136e1b 100644
--- a/twitter_techsupportgore_bot/src/twitter_techsupportgore_bot/Twitter_techsupportgore_bot.java
+++ b/twitter_techsupportgore_bot/src/twitter_techsupportgore_bot/Twitter_techsupportgore_bot.java
@@ -16,18 +16,9 @@
*/
package twitter_techsupportgore_bot;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import java.io.BufferedReader;
import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
-import java.net.URL;
-import java.util.Collection;
-import java.util.TreeMap;
import java.util.TreeSet;
import twitter_techsupportgore_bot.reddit_handler.*;
@@ -38,7 +29,15 @@ import twitter_techsupportgore_bot.reddit_handler.*;
*/
public class Twitter_techsupportgore_bot {
- private static HttpURLConnection con;
+ /**
+ * Delay between two scans, in seconds.
+ */
+ private static final int DELAY = 5;
+
+ /**
+ * Subreddit to extract info from.
+ */
+ private static final String SUBREDDIT = "techsupportgore";
/**
* Launch the bot.
@@ -51,9 +50,9 @@ public class Twitter_techsupportgore_bot {
ProtocolException, IOException {
TreeSet postsIndexed = new TreeSet<>();
- RedditExtractor red = new RedditExtractor("techsupportgore");
+ RedditExtractor red = new RedditExtractor(SUBREDDIT);
for (RedditPost r : red.getRedditPosts()) {
- System.out.println(r.getTitle());
+ Hypervisor.saveImage(r.getUrl());
}
}
-}
\ No newline at end of file
+}
diff --git a/twitter_techsupportgore_bot/src/twitter_techsupportgore_bot/reddit_handler/RedditExtractor.java b/twitter_techsupportgore_bot/src/twitter_techsupportgore_bot/reddit_handler/RedditExtractor.java
index 1ddfc24..c82eebb 100644
--- a/twitter_techsupportgore_bot/src/twitter_techsupportgore_bot/reddit_handler/RedditExtractor.java
+++ b/twitter_techsupportgore_bot/src/twitter_techsupportgore_bot/reddit_handler/RedditExtractor.java
@@ -132,7 +132,7 @@ public final class RedditExtractor {
String id = childData.get("id").toString();
String title = childData.get("title") != null
? childData.get("title").toString() : this.sub.getName();
- title = title.replaceAll("\"", "").replace("\\", "\"");
+ title = title.replace("\"", "").replace("\\", "\"");
String author = childData.get("author") != null
? childData.get("author").toString() : "anonymous";
boolean quarantine = childData.get("quarantine").getAsBoolean();
@@ -146,7 +146,7 @@ public final class RedditExtractor {
JsonArray previewImages = new JsonParser().parse(preview.get("images").toString()).getAsJsonArray();
JsonObject source = new JsonParser().parse(previewImages.get(0).toString()).getAsJsonObject();
JsonObject urlSrc = new JsonParser().parse(source.get("source").toString()).getAsJsonObject();
- url = urlSrc.get("url").toString().replace("amp;", "");
+ url = urlSrc.get("url").toString().replace("amp;", "").replace("\"", "");
} catch (NullPointerException n) {
url = childData.get("url").getAsString();
}
diff --git a/twitter_techsupportgore_bot/src/twitter_techsupportgore_bot/reddit_handler/RedditPost.java b/twitter_techsupportgore_bot/src/twitter_techsupportgore_bot/reddit_handler/RedditPost.java
index a5250fa..4a72331 100644
--- a/twitter_techsupportgore_bot/src/twitter_techsupportgore_bot/reddit_handler/RedditPost.java
+++ b/twitter_techsupportgore_bot/src/twitter_techsupportgore_bot/reddit_handler/RedditPost.java
@@ -120,7 +120,7 @@ public abstract class RedditPost {
* @return if the URL is correct.
*/
public boolean hasMediaUrl() {
- return !"".equals(url);
+ return url.contains(".jpg") || url.contains(".png");
}
/**