diff --git a/.classpath b/.classpath index 30f7b88..b7ca818 100644 --- a/.classpath +++ b/.classpath @@ -26,7 +26,7 @@ - + diff --git a/assets/beans/BeansBG.png b/assets/beans/BeansBG.png index ae1bd6d..8658397 100644 Binary files a/assets/beans/BeansBG.png and b/assets/beans/BeansBG.png differ diff --git a/beanImage.png b/beanImage.png index 4de82bd..c244ec4 100644 Binary files a/beanImage.png and b/beanImage.png differ diff --git a/lib/LavaPlayerJar-0.0.1-jar-with-dependencies.jar b/lib/LavaPlayerJar-1.3.50-jar-with-dependencies.jar similarity index 83% rename from lib/LavaPlayerJar-0.0.1-jar-with-dependencies.jar rename to lib/LavaPlayerJar-1.3.50-jar-with-dependencies.jar index 3a4e0ea..86753e0 100644 Binary files a/lib/LavaPlayerJar-0.0.1-jar-with-dependencies.jar and b/lib/LavaPlayerJar-1.3.50-jar-with-dependencies.jar differ diff --git a/src/commands/general/CommandBeansShow.java b/src/commands/general/CommandBeansShow.java index 3b0d6fc..36c7b82 100644 --- a/src/commands/general/CommandBeansShow.java +++ b/src/commands/general/CommandBeansShow.java @@ -1,7 +1,9 @@ package commands.general; import java.awt.Font; +import java.awt.FontMetrics; import java.awt.Graphics; +import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; @@ -64,8 +66,6 @@ public class CommandBeansShow extends Command long calcBean = beans; - System.out.println("BEANS: " + beans); - long thousands = beans / 1000; calcBean = beans % 1000; long hundreds = (calcBean / 100); @@ -76,6 +76,8 @@ public class CommandBeansShow extends Command BufferedImage beanImage = new BufferedImage(baseWidth, baseHeight, BufferedImage.TYPE_INT_ARGB); Graphics beanGraphics = beanImage.getGraphics(); + Rectangle rect = new Rectangle(0, 0, baseWidth, baseHeight); + beanGraphics.drawImage(imageBase,0,0,null); for(int i = 0; i < ones; i++) { @@ -115,9 +117,22 @@ public class CommandBeansShow extends Command } Font beanFont = new Font("font", Font.BOLD, 45); beanGraphics.setFont(beanFont); - beanGraphics.drawString("YOU GOT " + beans + " BEANS", 0, baseHeight / 2); + drawCenteredString(beanGraphics, "YOU HAVE", rect, beanFont, .25); + drawCenteredString(beanGraphics, "" + beans, rect, beanFont, .5); + drawCenteredString(beanGraphics, "BEANS!", rect, beanFont, .75); + ImageIO.write(beanImage, "PNG", new File("beanImage.png")); return new File("beanImage.png"); } + + private void drawCenteredString(Graphics beanGraphics, String text, Rectangle rect, Font font, double segment) + { + FontMetrics metrics = beanGraphics.getFontMetrics(font); + + int x = rect.x + (rect.width - metrics.stringWidth(text)) / 2; + int y = (int)(rect.y + ((rect.height - metrics.getHeight()) * segment) + metrics.getAscent()); + + beanGraphics.drawString(text, x, y); + } } diff --git a/src/commands/general/CommandE6.java b/src/commands/general/CommandE6.java index cfd5551..7338d0d 100644 --- a/src/commands/general/CommandE6.java +++ b/src/commands/general/CommandE6.java @@ -26,7 +26,7 @@ public class CommandE6 extends Command { if(guild.contentRating == KittyRating.Filtered) { - image = searcher.getE6(input.args + " rating:safe"); + image = searcher.getE6(input.args + " rating:safe", ""); try { response = image.output(); @@ -58,7 +58,7 @@ public class CommandE6 extends Command { try { - response = searcher.getE6(input.args).output(); + response = searcher.getE6(input.args, "").output(); res.send(response); } catch(Exception e) diff --git a/src/commands/general/CommandGetSauce.java b/src/commands/general/CommandGetSauce.java index ae4e703..cb26a2c 100644 --- a/src/commands/general/CommandGetSauce.java +++ b/src/commands/general/CommandGetSauce.java @@ -23,7 +23,13 @@ public class CommandGetSauce extends Command @Override public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) { - res.send(sauce.getSauce(input.args).output()); - + try + { + res.send(sauce.getSauce(input.args).output()); + } + catch(Exception e) + { + res.send("Image not found"); + } } } \ No newline at end of file diff --git a/src/commands/guildrole/SubCommandWipeRoles.java b/src/commands/guildrole/SubCommandWipeRoles.java new file mode 100644 index 0000000..bfa1243 --- /dev/null +++ b/src/commands/guildrole/SubCommandWipeRoles.java @@ -0,0 +1,21 @@ +package commands.guildrole; + +import core.SubCommand; +import core.SubCommandFormattable; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.UserInput; + +public class SubCommandWipeRoles extends SubCommand +{ + public SubCommandWipeRoles(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input) + { + return null; + } +} \ No newline at end of file diff --git a/src/dataStructures/KittyGuild.java b/src/dataStructures/KittyGuild.java index 6e18606..ebef5a9 100644 --- a/src/dataStructures/KittyGuild.java +++ b/src/dataStructures/KittyGuild.java @@ -44,7 +44,8 @@ public class KittyGuild extends DatabaseTrackedObject } // Default content for a guild - public KittyGuild(String uniqueID, AdminControl adminControl, ArrayList emoji, AudioUtils audio, HashMap channels) + public KittyGuild(String uniqueID, AdminControl adminControl, ArrayList emoji, + AudioUtils audio, HashMap channels) { super(uniqueID); @@ -63,7 +64,8 @@ public class KittyGuild extends DatabaseTrackedObject } // Explicit constructor - public KittyGuild(String commandIndicator, KittyRating contentRating, KittyUser guildOwner, String uniqueID, AudioUtils audio, HashMap channels) + public KittyGuild(String commandIndicator, KittyRating contentRating, KittyUser guildOwner, + String uniqueID, AudioUtils audio, HashMap channels) { super(uniqueID); this.uniqueID = uniqueID; diff --git a/src/network/NetworkDerpi.java b/src/network/NetworkDerpi.java index b0451b2..30c0e72 100644 --- a/src/network/NetworkDerpi.java +++ b/src/network/NetworkDerpi.java @@ -7,7 +7,7 @@ import utils.*; public class NetworkDerpi { - private final String mainURL = "https://derpibooru.org/search.json?q="; + private final String mainURL = "https://derpibooru.org/api/v1/json/search/images?q="; private static final Gson jsonParser_ = new Gson(); private class DerpiResponseObject @@ -24,10 +24,20 @@ public class NetworkDerpi public GenericImage getDerpi(String query) { + String res; GenericImage image = new GenericImage(" ", " ", " "); query = query.trim(); query = query.replace(" ", ","); - String res = HTTPUtils.sendGETRequest(mainURL + query + "&random_image=1&key=" + Ref.derpiKey); + System.out.println(mainURL + query + "&sf=random&key=" + Ref.derpiKey); + if(query.startsWith("ID:")) + { + res = HTTPUtils.sendGETRequest("https://derpibooru.org/api/v1/json/images/" + query.substring(3)); + } + else + { + res = HTTPUtils.sendGETRequest(mainURL + query + "&sf=random&key=" + Ref.derpiKey); + } + System.out.println(res); if(res != null) { InitialRequest obj; @@ -43,7 +53,6 @@ public class NetworkDerpi if(res != null) { - String res2 = HTTPUtils.sendGETRequest("https://derpibooru.org/" + obj.id + ".json"); image.editPostURL("https://derpibooru.org/" + obj.id); DerpiResponseObject imageObj = jsonParser_.fromJson(res2, DerpiResponseObject.class); diff --git a/src/network/NetworkE6.java b/src/network/NetworkE6.java index 5042555..1134dab 100644 --- a/src/network/NetworkE6.java +++ b/src/network/NetworkE6.java @@ -79,7 +79,7 @@ public class NetworkE6 // Static methods // //////////////////// // Requests a specific image, then returns a few. - public GenericImage getE6(String input) + public GenericImage getE6(String input, String sauceNaoDependant) { GenericImage image = new GenericImage("","",""); boolean blacklisted; @@ -92,7 +92,6 @@ public class NetworkE6 // tag by default. User-provided tags, therefore, will override it. // If order:score is provided, that will be honored over order:random. String res = HTTPUtils.sendGETRequest(API_ROOT + "tags=order:random%20" + input + "&limit=" + maxSearchResults_); - System.out.println("LOOK HERE: " + res); if(res != null) { @@ -108,7 +107,6 @@ public class NetworkE6 { for(int i = 0; i < imageObj.posts.length; ++i) { - System.out.println(imageObj.posts.length); String [] TagsList = imageObj.posts[i].tags.general; blacklisted = false; for(int j = 0; j < blacklist.length; j++) @@ -159,12 +157,27 @@ public class NetworkE6 else { source = source.substring(source.indexOf("/") + 2); - source = source.substring(0, source.indexOf('.')); + source = "[" + source.substring(0, source.indexOf('.')) + "]"; + if(source.equals("[pbs]")) + { + source = "[twitter-cdn]"; + } } sources += " [" + source + "](" + imageObj.posts[i].sources[k] + ") "; } } - image.editDescriptionText("Score: " + imageObj.posts[i].score.total + "\n**Source:**" + sources); + if(sources.equals("")) + { + sources = " Source not listed"; + } + if(sauceNaoDependant.equals("")) + { + image.editDescriptionText("Score: " + imageObj.posts[i].score.total + "\n**Source:**" + sources); + } + else + { + image.editDescriptionText(sauceNaoDependant + "\nScore: " + imageObj.posts[i].score.total + "\n**Source:**" + sources); + } } else { @@ -183,14 +196,17 @@ public class NetworkE6 } else { - descTags = imageObj.posts[i].tags.general.toString(); + for(int o = 0; o < imageObj.posts[i].tags.general.length - 1; o++) + { + descTags += imageObj.posts[i].tags.general[o] + ", "; + } + descTags += imageObj.posts[i].tags.general[imageObj.posts[i].tags.general.length-1] + ""; + image.editFooterText("[Tags] " + descTags); } if(image.output().authorText != null) { - System.out.println(image); - System.out.println(image.toString()); return image; } } diff --git a/src/network/NetworkSauceNAO.java b/src/network/NetworkSauceNAO.java index 8e136f6..71ac22b 100644 --- a/src/network/NetworkSauceNAO.java +++ b/src/network/NetworkSauceNAO.java @@ -21,6 +21,12 @@ public class NetworkSauceNAO private class SauceNAOResult { SauceNAOData data; + SauceNAOHeader header; + } + + private class SauceNAOHeader + { + double similarity; } private class SauceNAOData @@ -30,21 +36,21 @@ public class NetworkSauceNAO public GenericImage getSauce(String input) { + double similarity; input = input.trim(); input = input.replace("+", "%2B"); input = input.replace(" ", "%20"); String res = HTTPUtils.sendGETRequest(API_ROOT + input); - SauceNAOResponseObject sauce = jsonParser_.fromJson(res, SauceNAOResponseObject.class); String sauceUrl = sauce.results.get(0).data.ext_urls[0]; + similarity = sauce.results.get(0).header.similarity; if(sauceUrl.startsWith("https://e621.net/post/show/")) { - return e6Sauce.getE6("id:" + sauceUrl.substring(27)); + return e6Sauce.getE6("id:" + sauceUrl.substring(27), "Confidence: " + similarity + "%"); } GenericImage unknown = new GenericImage("", "",""); return unknown; -// return sauce.results.get(0).data.ext_urls[0]; } } diff --git a/src/network/NetworkYoutube.java b/src/network/NetworkYoutube.java index 8bb0f76..4a5ee6b 100644 --- a/src/network/NetworkYoutube.java +++ b/src/network/NetworkYoutube.java @@ -27,11 +27,11 @@ public class NetworkYoutube public class YTInner { - TYID id; + YTID id; YTSnippet snippet; } - public class TYID + public class YTID { String videoId; } @@ -48,8 +48,9 @@ public class NetworkYoutube input = input.replace("+", "%2B"); input = input.replace(" ", "%20"); - String res = HTTPUtils.sendGETRequest(API_ROOT + input + "&order=viewCount&type=video&topicId=%2Fm%2F04rlf&videoDefinition=high&key=" + Ref.youtube); + String res = HTTPUtils.sendGETRequest(API_ROOT + input + + "&order=viewCount&type=video&topicId=%2Fm%2F04rlf&videoDefinition=high&key=" + Ref.youtube); YTOuter videoObj = jsonParser_.fromJson(res, YTOuter.class); return "https://www.youtube.com/watch?v=" + videoObj.items.get(0).id.videoId; } -} +} \ No newline at end of file