package ADSCRAWLER; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.net.URL; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Iterator; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class FILEDUMP { private static String filetoprocess = "C:///JAVA/FILEDUMP/DATA/Android/playstore-00"; private static int counter = 0; public static void main(String[] args) { // TODO Auto-generated method stub try { System.out.println("Hello world"); String fileheader = "Package name, Title, Category, Cat Type, Description, Icon, Market URL, Downloads, Market Update, Rating, Screenshot, Website, Developer, Content Rating, Price, Physical address, Email"; String fileheadersimilar = "Package, Similar Packages"; String fileheaderfromdeveloper = "Package, Other Packages from Developer"; String report = "C:///JAVA/FILEDUMP/DATA/Android/reportApril1.csv"; String reportsimilar = "C:///JAVA/FILEDUMP/DATA/Android/simialappreportApril1.csv"; String reportfromdeveloper = "C:///JAVA/FILEDUMP/DATA/Android/fromdeveloperappreportApril1.csv"; BufferedWriter writerfinalreport = new BufferedWriter(new FileWriter(report, true)); writerfinalreport.newLine(); writerfinalreport.write(fileheader); writerfinalreport.flush(); writerfinalreport.newLine(); writerfinalreport.close(); BufferedWriter writersiumlarreport = new BufferedWriter(new FileWriter(reportsimilar, true)); writersiumlarreport.write(fileheadersimilar); writersiumlarreport.newLine(); writersiumlarreport.close(); BufferedWriter writerfromdeveloperreport = new BufferedWriter(new FileWriter(reportfromdeveloper, true)); writerfromdeveloperreport.write(fileheaderfromdeveloper); writerfromdeveloperreport.newLine(); writerfromdeveloperreport.close(); File file = new File(filetoprocess); FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); String line; int counter =0; while((line = br.readLine()) != null){// && counter < 20 //process the line // System.out.println(line); String jsonText = line; // System.out.println("Market URL " + json.get("market_url").toString()); try { //JSONParser parser = new JSONParser(); //JSONObject json = (JSONObject) parser.parse(line); //System.out.println( json.get("market_url").toString()); Android_Obj aobj = new Android_Obj(); JSONObject json = new JSONObject(line); if(json.has("package_name")) aobj.setPackage_name(json.get("package_name").toString()); else aobj.setPackage_name("Not Found"); if(json.has("category")) aobj.setCategory(json.get("category").toString()); else aobj.setCategory("Not Found"); if(json.has("cat_type")) { if(json.get("cat_type").toString().equalsIgnoreCase("0")) aobj.setCat_type("Non-Game"); else aobj.setCat_type("Game"); //aobj.setCat_type(json.get("cat_type").toString()); } else aobj.setCat_type("Not Found"); if(json.has("title")) aobj.setTitle(json.get("title").toString()); else aobj.setTitle("Not Found"); if(json.has("short_desc")) aobj.setDescription(json.get("short_desc").toString().replace("\n", "")); else aobj.setDescription("Not Found"); aobj.setIcon(json.get("icon").toString()); if(json.has("market_url")) aobj.setMarket_url(json.get("market_url").toString()); else aobj.setMarket_url("Not Found"); if(json.has("downloads")) aobj.setDownloads(json.get("downloads").toString()); else aobj.setDownloads("Not Found"); if(json.has("market_update")) aobj.setMarket_update(json.get("market_update").toString()); else aobj.setMarket_update("Not Found"); if(json.has("rating")) aobj.setRating(json.get("rating").toString()); else aobj.setRating("Not Found"); if(json.has("screenshots")) { JSONArray arr = json.getJSONArray("screenshots"); for(int x =0; x tempSDKS = new ArrayList(); JSONArray arr = json.getJSONArray("sdks"); for(int x =0; x tempSDKS = new ArrayList(); tempSDKS.add("Not Found"); aobj.setSDKS(tempSDKS); } //check for goe data make string and ad to android object /* "app_availability":{ "pn":"com.Catworld.CatKeyboard", "available_in":{ "RU":1583530609003, "DE":1583530609003, "US":1583530609003, "KR":1583530609003, "AU":1583530609003, "GB":1583530609003, "BR":1583530609003 } }, */ if(json.has("app_availability")) { // System.out.println("Found app available"); //JSONObject jsonavailablein = new JSONObject(json.get("app_availability")); // if(jsonavailablein.has("available_in")) System.out.println("Found app available" + json.get("app_availability").toString()); } print_obj(aobj); } catch(Exception dfd) { System.out.println(dfd.toString()); } counter++; } br.close(); } catch(Exception fdfd) { System.out.println("Crashed " + fdfd.toString()); } } private static void print_obj(Android_Obj a) { System.out.println("package_name: " + a.getPackage_name()); System.out.println("category: " + a.getCategory()); System.out.println("cat_type: " + a.getCat_type()); System.out.println("Title: " + a.getTitle()); System.out.println("description: " + a.getDescription()); System.out.println("icon: " + a.getIcon()); System.out.println("market_url: " + a.getMarket_url()); System.out.println("downloads: " + a.getDownloads()); System.out.println("market_update: " + a.getMarket_update()); System.out.println("rating: " + a.getRating()); System.out.println("screenshots: " + a.getScreenshots()); System.out.println("website: " + a.getWebsite()); System.out.println("developer: " + a.getDeveloper()); System.out.println("Content_rating: " + a.getContent_rating()); System.out.println("price: " + a.getPrice()); System.out.println("physical_address: " + a.getPhysical_address()); System.out.println("email: " + a.getEmail()); System.out.println("From_developer: " + a.getFrom_developer()); System.out.println("Similar_Apps: " + a.getSimilar()); //System.out.println("Permissions: " + a.getPermissions()); System.out.print("SDKs: "); ArrayList tempSDKS = new ArrayList(); tempSDKS = a.getSDK(); for (int i = 0; i < tempSDKS.size(); i++) { System.out.print(tempSDKS.get(i).toString() + " "); } System.out.println(""); counter++; System.out.println("--------------RECORD#: "+counter+"-----------------"); write_to_file(a); } //USED TO UPDATE CSV FILE private static void write_to_file(Android_Obj a) { try { //MAKE STRING TO BE WRITTEN TO CSV FILE String report = "C:///JAVA/FILEDUMP/DATA/Android/reportApril1.csv"; String reportsimilar = "C:///JAVA/FILEDUMP/DATA/Android/simialappreportApril1.csv"; String reportfromdeveloper = "C:///JAVA/FILEDUMP/DATA/Android/fromdeveloperappreportApril1.csv"; String SDK_report_file = "C:///JAVA/FILEDUMP/DATA/Android/SDK_ReportApril1.csv"; BufferedWriter writerfinalreport = new BufferedWriter(new FileWriter(report, true)); writerfinalreport.newLine(); writerfinalreport.write(a.getFinalstring()); writerfinalreport.flush(); writerfinalreport.newLine(); //write similar apps report BufferedWriter writersiumlarreport = new BufferedWriter(new FileWriter(reportsimilar, true)); //writersiumlarreport.newLine(); String temp = a.getSimilar(); String temparray[] = temp.split(","); for(int x=0; x< temparray.length;x++) { writersiumlarreport.write(a.getPackage_name() +"," +temparray[x]); writersiumlarreport.newLine(); } writersiumlarreport.flush(); // writersiumlarreport.newLine(); //write other apps from developer BufferedWriter writerfromdeveloperreport = new BufferedWriter(new FileWriter(reportfromdeveloper, true)); String temp2 = a.getPackage_name(); String temparray2[] = temp2.split(","); for(int x=0; x< temparray2.length;x++) { writerfromdeveloperreport.write(a.getPackage_name() +","+ temparray2[x]); writerfromdeveloperreport.newLine(); } writerfromdeveloperreport.flush(); //WRITE SDK INFO HERE ArrayList tempSDKS = new ArrayList(); tempSDKS = a.getSDK(); //System.out.println("LOOK HERE 1: " + tempSDKS.get(0).toString()); if(tempSDKS.get(0).equalsIgnoreCase("Not Found")) { // do nothing //System.out.println("No SDK data found"); } else { String tempsdk_string = a.getPackage_name(); for (int i = 0; i < tempSDKS.size(); i++) { tempsdk_string +=","+tempSDKS.get(i).toString(); } //System.out.println("LOOK HERE 2222: " + tempsdk_string); BufferedWriter writerfinalreportSDK = new BufferedWriter(new FileWriter(SDK_report_file, true)); writerfinalreportSDK.newLine(); writerfinalreportSDK.write(tempsdk_string); writerfinalreportSDK.flush(); writerfinalreportSDK.newLine(); } } catch(Exception sdsd) { System.out.println("Writing error: " + sdsd.toString()); } } }