Explv Posted July 30, 2017 Share Posted July 30, 2017 (edited) You will need to include the JSON Simple library in your project (this can also be used on the SDN): https://github.com/fangyidong/json-simple RSExchange.java import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.HashMap; import java.util.Map; import java.util.Optional; public final class RSExchange { private final JSONObject ITEMS_JSON; public RSExchange() throws Exception { Optional<JSONObject> itemsJSONOpt = getItemsJson(); if (!itemsJSONOpt.isPresent()) { throw new Exception("Failed to get items JSON"); } JSONObject itemsJSONKeyedByID = itemsJSONOpt.get(); JSONObject itemsJSONKeyedByName = new JSONObject(); for (Object itemValue : itemsJSONKeyedByID.values()) { JSONObject itemValueJSON = (JSONObject) itemValue; itemsJSONKeyedByName.put(itemValueJSON.get("name"), itemValueJSON); } ITEMS_JSON = itemsJSONKeyedByName; } private Optional<JSONObject> getItemsJson() { try { URL url = new URL("https://rsbuddy.com/exchange/summary.json"); URLConnection con = url.openConnection(); con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"); con.setUseCaches(true); try (InputStreamReader inputStreamReader = new InputStreamReader(con.getInputStream()); BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) { JSONParser jsonParser = new JSONParser(); return Optional.of((JSONObject) jsonParser.parse(bufferedReader)); } } catch (Exception e) { e.printStackTrace(); } return Optional.empty(); } public final Map<String, ExchangeItem> getExchangeItems(final String... itemNames) { Map<String, ExchangeItem> exchangeItems = new HashMap<>(); for (final String itemName : itemNames) { getExchangeItem(itemName).ifPresent(exchangeItem -> exchangeItems.put(itemName, exchangeItem)); } return exchangeItems; } public final Optional<ExchangeItem> getExchangeItem(final String itemName) { Object itemObj = ITEMS_JSON.get(itemName); if (itemObj == null) { return Optional.empty(); } JSONObject itemJSON = (JSONObject) itemObj; return Optional.of(new ExchangeItem((String) itemJSON.get("name"), (long) itemJSON.get("id"))); } } ExchangeItem.java import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; public final class ExchangeItem { private final String name; private final long id; private long overallAverage = -1; private long buyAverage = -1; private long sellAverage = -1; private long buyingQuantity; private long sellingQuantity; public ExchangeItem(final String name, final long id) { this.name = name; this.id = id; updateRSBuddyValues(); } public final String getName() { return name; } public final long getId() { return id; } public final long getBuyAverage() { return buyAverage; } public final long getSellAverage() { return sellAverage; } public final long getBuyingQuantity() { return buyingQuantity; } public final long getSellingQuantity() { return sellingQuantity; } public void updateRSBuddyValues() { try { URL url = new URL("http://api.rsbuddy.com/grandExchange?a=guidePrice&i=" + id); URLConnection con = url.openConnection(); con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"); try (InputStreamReader inputStreamReader = new InputStreamReader(con.getInputStream()); BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) { JSONParser jsonParser = new JSONParser(); JSONObject itemJSON = (JSONObject) jsonParser.parse(bufferedReader); overallAverage = (long) itemJSON.get("overall"); sellAverage = (long) itemJSON.get("selling"); buyAverage = (long) itemJSON.get("buying"); buyingQuantity = (long) itemJSON.get("buyingQuantity"); sellingQuantity = (long) itemJSON.get("sellingQuantity"); } } catch (Exception e) { e.printStackTrace(); } } public final String toString() { return String.format("Name: %s, ID: %d, Overall AVG: %d gp, Buying AVG: %d gp, Selling AVG: %d gp, Buying Quantity: %d, Selling Quantity:%d", name, id, overallAverage, buyAverage, sellAverage, buyingQuantity, sellingQuantity); } } Usage: RSExchange rsExchange = new RSExchange(); Optional<ExchangeItem> exchangeItem = rsExchange.getExchangeItem("Yew logs"); exchangeItem.ifPresent(System.out::println); Prints: Name: Yew logs, ID: 1515, Overall AVG: 355 gp, Buying AVG: 354 gp, Selling AVG: 355 gp, Buying Quantity: 67874, Selling Quantity:72956 Or: Map<String, ExchangeItem> exchangeItems = rsExchange.getExchangeItems("Yew logs", "Iron bar"); exchangeItems.values().forEach(System.out::println); Prints: Name: Yew logs, ID: 1515, Overall AVG: 354 gp, Buying AVG: 354 gp, Selling AVG: 354 gp, Buying Quantity: 47056, Selling Quantity:33141 Name: Iron bar, ID: 2351, Overall AVG: 179 gp, Buying AVG: 182 gp, Selling AVG: 177 gp, Buying Quantity: 2765, Selling Quantity:4467 Edited July 30, 2017 by Explv 3 Quote Link to comment Share on other sites More sharing options...
Deceiver Posted July 30, 2017 Share Posted July 30, 2017 cool thanks bro u rule Quote Link to comment Share on other sites More sharing options...