Created the Hyervisor
This commit is contained in:
parent
105b59abf8
commit
ae1765851b
@ -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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -16,18 +16,9 @@
|
|||||||
*/
|
*/
|
||||||
package twitter_techsupportgore_bot;
|
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.IOException;
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.net.HttpURLConnection;
|
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.ProtocolException;
|
import java.net.ProtocolException;
|
||||||
import java.net.URL;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.TreeMap;
|
|
||||||
import java.util.TreeSet;
|
import java.util.TreeSet;
|
||||||
import twitter_techsupportgore_bot.reddit_handler.*;
|
import twitter_techsupportgore_bot.reddit_handler.*;
|
||||||
|
|
||||||
@ -38,7 +29,15 @@ import twitter_techsupportgore_bot.reddit_handler.*;
|
|||||||
*/
|
*/
|
||||||
public class Twitter_techsupportgore_bot {
|
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.
|
* Launch the bot.
|
||||||
@ -51,9 +50,9 @@ public class Twitter_techsupportgore_bot {
|
|||||||
ProtocolException, IOException {
|
ProtocolException, IOException {
|
||||||
|
|
||||||
TreeSet<RedditPost> postsIndexed = new TreeSet<>();
|
TreeSet<RedditPost> postsIndexed = new TreeSet<>();
|
||||||
RedditExtractor red = new RedditExtractor("techsupportgore");
|
RedditExtractor red = new RedditExtractor(SUBREDDIT);
|
||||||
for (RedditPost r : red.getRedditPosts()) {
|
for (RedditPost r : red.getRedditPosts()) {
|
||||||
System.out.println(r.getTitle());
|
Hypervisor.saveImage(r.getUrl());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -132,7 +132,7 @@ public final class RedditExtractor {
|
|||||||
String id = childData.get("id").toString();
|
String id = childData.get("id").toString();
|
||||||
String title = childData.get("title") != null
|
String title = childData.get("title") != null
|
||||||
? childData.get("title").toString() : this.sub.getName();
|
? childData.get("title").toString() : this.sub.getName();
|
||||||
title = title.replaceAll("\"", "").replace("\\", "\"");
|
title = title.replace("\"", "").replace("\\", "\"");
|
||||||
String author = childData.get("author") != null
|
String author = childData.get("author") != null
|
||||||
? childData.get("author").toString() : "anonymous";
|
? childData.get("author").toString() : "anonymous";
|
||||||
boolean quarantine = childData.get("quarantine").getAsBoolean();
|
boolean quarantine = childData.get("quarantine").getAsBoolean();
|
||||||
@ -146,7 +146,7 @@ public final class RedditExtractor {
|
|||||||
JsonArray previewImages = new JsonParser().parse(preview.get("images").toString()).getAsJsonArray();
|
JsonArray previewImages = new JsonParser().parse(preview.get("images").toString()).getAsJsonArray();
|
||||||
JsonObject source = new JsonParser().parse(previewImages.get(0).toString()).getAsJsonObject();
|
JsonObject source = new JsonParser().parse(previewImages.get(0).toString()).getAsJsonObject();
|
||||||
JsonObject urlSrc = new JsonParser().parse(source.get("source").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) {
|
} catch (NullPointerException n) {
|
||||||
url = childData.get("url").getAsString();
|
url = childData.get("url").getAsString();
|
||||||
}
|
}
|
||||||
|
@ -120,7 +120,7 @@ public abstract class RedditPost {
|
|||||||
* @return if the URL is correct.
|
* @return if the URL is correct.
|
||||||
*/
|
*/
|
||||||
public boolean hasMediaUrl() {
|
public boolean hasMediaUrl() {
|
||||||
return !"".equals(url);
|
return url.contains(".jpg") || url.contains(".png");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user