package org.gba.spritely.sitescrapers; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.internal.Excluder; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URISyntaxException; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.LaxRedirectStrategy; import org.apache.http.util.ExceptionUtils; import org.xml.sax.InputSource; public class OpenClipartScraper{ public static String rooturl_json = "https://openclipart.org/search/json/?"; public static String rooturl = "https://openclipart.org/api/search/?"; private static JsonObject getJsonResultPage(String searchTerm, int i) throws MalformedURLException, URISyntaxException, IOException, ClientProtocolException { URL url = new URL(rooturl_json + "query=" + searchTerm + "&page=" + i); InputStream response = ScrapeUtils.readURLLax(url); JsonParser parser = new JsonParser(); JsonObject obj = parser.parse(new InputStreamReader(response)).getAsJsonObject(); return obj; } public static List<String> findClipart(String searchTerm, int firstPage, int lastPage) { List<String> res = new ArrayList<String>(); for (int i = Math.max(1, firstPage); i <= lastPage; i++) { try { JsonObject obj = getJsonResultPage(searchTerm, i); JsonArray array = (JsonArray)obj.get("payload"); for (JsonElement j : array) { String img_url = ((JsonObject)((JsonObject)j).get("svg")).get("png_thumb").toString(); res.add(img_url.substring(1, img_url.length() - 1)); } int numPages = ((JsonObject)obj.get("info")).get("pages").getAsInt(); int currentPage = ((JsonObject)obj.get("info")).get("current_page").getAsInt(); if(currentPage >= numPages) { break; } } catch (Exception localException) { System.out.println("Error getting page from open clipart"); localException.printStackTrace(); break; } } return res; } } /* Location: /develop/libs/spritely/ * Qualified Name: org.gba.spritely.sitescrapers.OpenClipartScraper * JD-Core Version: 0.6.2 */