package extras.urlparsers; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Scanner; import bot.Config; 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; public class SteamParser { public static String find(String id){ if(id.contains("/profiles/")){ id = id.split(".*/profiles/")[1].split("/")[0]; } if(id.toLowerCase().contains("/id/")){ String vanityurl; try{ vanityurl = id.split(".*/id/")[1].split("/")[0]; URL url = new URL("http://api.steampowered.com/ISteamUser/ResolveVanityURL/v0001/?key=" + Config.getSteamApiKey() + "&vanityurl=" + vanityurl); InputStream in = url.openStream(); Scanner scan = new Scanner(in); String jsonstring = ""; while(scan.hasNext()){ jsonstring += scan.next() + " "; } scan.close(); Gson gson = new GsonBuilder().create(); JsonObject json = gson.fromJson(jsonstring, JsonElement.class).getAsJsonObject(); JsonObject response = json.get("response").getAsJsonObject(); if(response.get("success").getAsInt() == 1){ id = response.get("steamid").getAsString(); } else{ return "Steam vanity ID not found"; } } catch(ArrayIndexOutOfBoundsException | IOException e){ return "Invalid steam vanity ID"; } } String title = ""; String friends = ""; //String games = ""; String onlinestatus = ""; try { // Find title URL url = new URL("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=" + Config.getSteamApiKey() + "&steamids=" + id); InputStream in = url.openStream(); Scanner scan = new Scanner(in); String jsonstring = ""; while(scan.hasNext()){ jsonstring += scan.next() + " "; } scan.close(); Gson gson = new GsonBuilder().create(); JsonObject json = gson.fromJson(jsonstring, JsonElement.class).getAsJsonObject(); JsonObject response = json.get("response").getAsJsonObject(); JsonArray players = response.get("players").getAsJsonArray(); if(players.size() < 1){ return "No steam info could be found"; } JsonObject player = players.get(0).getAsJsonObject(); if(player.get("profilestate").getAsInt() != 1){ title.equals("This user has not set up their community profile yet"); } else if(player.get("communityvisibilitystate").getAsInt() == 1){ String personaname = player.get("personaname").getAsString(); String profileurl = player.get("profileurl").getAsString(); title = String.format("%s | %s", personaname, profileurl); onlinestatus = "4Private"; } else{ String personaname = player.get("personaname").getAsString(); //String profileurl = player.get("profileurl").getAsString(); String info = ""; if(player.has("realname")) info += player.get("realname").getAsString() + " "; if(player.has("loccountrycode")) info += "| Location: " + player.get("loccountrycode").getAsString() + " "; //if(player.has("realname")) info += player.get("realname").getAsString() + " "; //if(player.has("realname")) info += player.get("realname").getAsString(); int personastate = player.get("personastate").getAsInt(); switch(personastate){ case 0: onlinestatus = "14offline"; break; case 1: onlinestatus = "12Online"; break; case 2: onlinestatus = "12Busy"; break; case 3: onlinestatus = "12Away"; break; case 4: onlinestatus = "12Snooze"; break; case 5: onlinestatus = "12Looking to Trade"; break; case 6: onlinestatus = "12Looking to Play"; break; } if(player.has("gameextrainfo")){ onlinestatus = "3In game: " + player.get("gameextrainfo").getAsString() + ""; } if(info.equals(""))title = String.format("Steam: %s | %s ", personaname, onlinestatus); else title = String.format("Steam: %s | %s| %s ", personaname, info, onlinestatus); } // Find friends url = new URL("http://api.steampowered.com/ISteamUser/GetFriendList/v0001/?key=" + Config.getSteamApiKey() + "&steamid=" + id + "&relationship=friend"); in = url.openStream(); scan = new Scanner(in); jsonstring = ""; while(scan.hasNext()){ jsonstring += scan.next() + " "; } scan.close(); gson = new GsonBuilder().create(); json = gson.fromJson(jsonstring, JsonElement.class).getAsJsonObject(); JsonArray friendslist = json.get("friendslist").getAsJsonObject().get("friends").getAsJsonArray(); friends = String.format("%d friends", friendslist.size()); title += "| " + friends; } catch (IOException e) { return "No steam info could be found"; } return title; } }