From d943cc8e010a8b04dffe45c4c7802decd648feb7 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Mon, 16 Oct 2017 23:40:07 -0500 Subject: [PATCH] Improved memory footprint for retrieving sub emoticons. --- sigIRCv2.jar | Bin 3389091 -> 3390486 bytes src/sig/UpdateEvent.java | 58 ++++++++++++++++ src/sig/sigIRC.java | 97 ++++++++++----------------- src/sig/utils/FileUtils.java | 124 ++++++++++++++++++++++++++++++++++- 4 files changed, 215 insertions(+), 64 deletions(-) diff --git a/sigIRCv2.jar b/sigIRCv2.jar index 3198187faa748d38163151f45117fb646162977b..855788f7a641291d85c281f011940e08ae36e08a 100644 GIT binary patch delta 41891 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 w4x_++rw*Y subchannelIds = new HashMap(); + + public static boolean downloadedSubEmotes=false; + static int lastWindowX = 0; static int lastWindowY = 0; @@ -310,9 +316,8 @@ public class sigIRC{ } } - private static void downloadSubEmotes(JSONObject emotes, String channelName) { + private static void getSubChannels(String channelName) { manager.channels().get(channelName, new ChannelResponseHandler() { - @Override public void onFailure(Throwable arg0) { } @@ -323,23 +328,8 @@ public class sigIRC{ @Override public void onSuccess(Channel arg0) { - if (arg0!=null) { - channel_id=arg0.getId(); - JSONObject channel = emotes.getJSONObject(Long.toString(channel_id)); - JSONArray arr = channel.getJSONArray("emotes"); - //System.out.println("Channel: "+channel); - for (int i=0;i0) { s=s.trim(); - System.out.println("Got sub emote info for "+s); - downloadSubEmotes(subemotes,s); + //System.out.println("Got sub emote info for "+s); + getSubChannels(s); } } - subemotes=null; - } - }; - downloadThread.start(); /*JSONObject emotelist = twitchemotes.getJSONObject("emotes"); JSONObject templatelist = twitchemotes.getJSONObject("template"); String templateurl = templatelist.getString("small"); diff --git a/src/sig/utils/FileUtils.java b/src/sig/utils/FileUtils.java index 6e79c78..7a5a267 100644 --- a/src/sig/utils/FileUtils.java +++ b/src/sig/utils/FileUtils.java @@ -14,6 +14,7 @@ import java.net.URL; import java.nio.channels.FileChannel; import java.nio.charset.Charset; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import org.json.JSONException; @@ -55,12 +56,110 @@ public class FileUtils { } return sb.toString(); } + + private static String readFilter(Reader rd, HashMap channel_ids) throws IOException { + StringBuilder sb = new StringBuilder(); + boolean allowed=false; + boolean quotation_mark=false; + boolean endquotation_mark=false; + boolean foundChannel=false; + boolean nextBrace=false; + boolean outputStuff=false; + String numb = ""; + int braceCount=0; + int channelCount=0; + int vals=0; + int cp; + while ((cp = rd.read()) != -1) { + if (braceCount==0) { + allowed=true; + } else + if (braceCount==1 && !quotation_mark){ + quotation_mark=true; + numb=""; + allowed=false; + } else + if (!endquotation_mark) { + if ((char)cp >= '0' && + (char)cp <= '9') { + allowed=false; + numb+=(char)cp; + } else { + allowed=false; + endquotation_mark=true; + try { + if (channel_ids.containsKey(Long.parseLong(numb))) { + if (channelCount>=1) { + sb.append(","); + } + sb.append("\""+numb+"\""); + foundChannel=true; + System.out.println("Found channel "+numb); + outputStuff=true; + } + } catch (NumberFormatException e) { + + } + } + } else + if (!nextBrace && foundChannel) { + allowed=true; + if ((char)cp == '{') { + nextBrace=true; + } + } else + if (foundChannel) { + allowed=true; + if (braceCount==1) { + allowed=false; + channelCount++; + quotation_mark=false; + endquotation_mark=false; + foundChannel=false; + nextBrace=false; + } + } else { + allowed=false; + if (braceCount==1) { + allowed=false; + quotation_mark=false; + endquotation_mark=false; + foundChannel=false; + nextBrace=false; + } + } + + /*if (outputStuff && vals++<1000) { + System.out.print((char)cp); + }*/ + if ((char)cp == '{') { + braceCount++; + //System.out.println("Brace count is "+braceCount+"."); + } else + if ((char)cp == '}') { + braceCount--; + //System.out.println("Brace count is "+braceCount+"."); + } + + if (allowed) { + sb.append((char) cp); + } + } + sb.append("}"); + // System.out.println("============="); + System.out.println(sb.toString()); + return sb.toString(); + } - public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException { - InputStream is = new URL(url).openStream(); + public static JSONObject readJsonFromUrlWithFilter(String url, HashMap filter) throws IOException, JSONException { + return readJsonFromUrlWithFilter(url,filter,null,false); + } + + public static JSONObject readJsonFromFileWithFilter(String file, HashMap filter) throws IOException, JSONException { + InputStream is = new FileInputStream(new File(file)); try { BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); - String jsonText = readAll(rd); + String jsonText = readFilter(rd,filter); JSONObject json = new JSONObject(jsonText); jsonText=null; return json; @@ -69,6 +168,25 @@ public class FileUtils { } } + public static JSONObject readJsonFromUrlWithFilter(String url, HashMap filter, String file, boolean writeToFile) throws IOException, JSONException { + InputStream is = new URL(url).openStream(); + try { + BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); + String jsonText = readFilter(rd,filter); + if (writeToFile) { + writetoFile(new String[]{jsonText},file); + } + JSONObject json = new JSONObject(jsonText); + return json; + } finally { + is.close(); + } + } + + public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException { + return readJsonFromUrl(url,null,false); + } + public static JSONObject readJsonFromFile(String file) throws IOException, JSONException { InputStream is = new FileInputStream(new File(file)); try {