package extras.urlparsers; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.time.LocalDateTime; import java.util.Date; import java.util.Scanner; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import extras.URLTitles; public class ChanParser { @SuppressWarnings("deprecation") public static String find(String s){ String title = "none"; s = s.replace("thread", "res"); String[] ssplit = s.split("/"); ssplit[5] = ssplit[5].split("\\.")[0]; String urlstring = s.split("res/?")[0] + "res/" + ssplit[5] + ".json"; try{ URL url = new URL(urlstring); URLConnection urlc = url.openConnection(); urlc.addRequestProperty("Accept-Language", "en-US,en;q=0.8"); urlc.addRequestProperty("User-Agent", "Mozilla"); //urlc.addRequestProperty("Referer", "google.com"); urlc.connect(); Scanner scan = new Scanner(urlc.getInputStream()); String jsonstring = ""; while(scan.hasNext()){ jsonstring += scan.next() + " "; } scan.close(); Gson gson = new GsonBuilder().create(); JsonObject json = gson.fromJson(jsonstring, JsonElement.class).getAsJsonObject(); JsonArray posts = json.get("posts").getAsJsonArray(); JsonObject op = posts.get(0).getAsJsonObject(); String board = ssplit[3]; String subject; if(op.has("com")){ subject = URLTitles.makeClean(op.get("com").getAsString() + ""); } else{ subject = "No Subject"; } int no = op.get("no").getAsInt(); int replies = posts.size()-1; /* int files = op.get("images").getAsInt(); int ips = op.get("unique_ips").getAsInt(); String autosage = ""; String bumplimit = ""; String imagelimit = ""; if(!op.has("sticky")){ if(op.get("bumplimit").getAsInt() == 1){ autosage = "4AUTOSAGE INCOMING"; bumplimit = "4"; } if(op.get("imagelimit").getAsInt() == 1){ autosage = "4AUTOSAGE INCOMING"; imagelimit = "4"; } } else{ autosage = "12Stickied Thread"; } */ if(op.get("sub") != null){ subject = "12" + URLTitles.makeClean(op.get("sub").getAsString()) + ""; } if(subject.length() > 50){ subject = subject.substring(0, 49).trim() + "..."; } String created = new Date(op.get("time").getAsLong() * 1000).toGMTString(); title = String.format("/%s/ - %s | Thread no %d | Created %s | %d replies", board, subject, no, created, replies); } catch (Exception e) { e.printStackTrace(); title = "Error, no info could be found"; } return title; } }