Advertisement
Guest User

Tribunal Lecherito

a guest
Oct 19th, 2013
3,522
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.44 KB | None | 0 0
  1. package Tribunal;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.File;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.InputStreamReader;
  8. import java.net.URL;
  9. import java.net.URLConnection;
  10. import java.util.ArrayList;
  11. import java.util.concurrent.atomic.AtomicInteger;
  12.  
  13. import com.mongodb.BasicDBList;
  14. import com.mongodb.DBObject;
  15. import com.mongodb.util.JSON;
  16.  
  17. import connection.MySQL;
  18.  
  19.  
  20. public class GetCases {
  21.     public static final String TRIBUNAL_URL = "http://euw.leagueoflegends.com/tribunal/en/get_reform_game/";
  22.  
  23.     static int veryFirstCase = 3190;
  24.     static int firstCase = 668370+1;
  25.     static int lastCase = 1313652;
  26.     static final int GAMES_PER_CASE = 5;
  27.  
  28.     private static final int workers = 200;
  29.  
  30.     static File f = new File("D:\\log.ttx");
  31.     static FileOutputStream fos;
  32.  
  33.     private final static AtomicInteger counter = new AtomicInteger(firstCase);
  34.  
  35.     static ArrayList<Thread> hilos = new ArrayList<>();
  36.  
  37.     public static void main(String[] args) throws IOException {
  38.  
  39.         fos = new FileOutputStream(f);
  40.  
  41.         for (int i=0;i<workers;i++) {
  42.             hilos.add(new Thread(new Dumper()));
  43.             hilos.get(i).start();
  44.         }
  45.  
  46.        
  47.     }
  48.  
  49.     private static String getUrlSource(String url2) throws IOException {
  50.         URL url = new URL(url2);
  51.  
  52.         URLConnection spoof = url.openConnection();
  53.  
  54.         spoof.setRequestProperty(
  55.                 "User-Agent", "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; H010818)" );
  56.  
  57.         BufferedReader in = new BufferedReader(new InputStreamReader(spoof.getInputStream()));
  58.  
  59.         String strLine = "";
  60.         StringBuilder sBuilder = new StringBuilder();
  61.  
  62.         while ((strLine = in.readLine()) != null) {
  63.  
  64.             sBuilder.append(strLine);
  65.  
  66.         }
  67.         in.close();
  68.         return sBuilder.toString();
  69.     }
  70.  
  71.     static class Dumper implements Runnable {
  72.         @Override
  73.         public void run() {
  74.             int caso = 0;
  75.             while ((caso = counter.getAndIncrement()) < lastCase) {
  76.  
  77.                 String tibunalCase = "http://euw.leagueoflegends.com/tribunal/en/case/"+caso;
  78.                 String data = "";
  79.                 try {
  80.                     data = getUrlSource(tibunalCase);
  81.                 } catch (IOException e1) {
  82.                     try {
  83.                         fos.write(e1.getMessage().getBytes());
  84.                     } catch (IOException e) {
  85.                         e.printStackTrace();
  86.                     }  
  87.                 }
  88.  
  89.                 String veredicto = "";
  90.                 String howMany = "";
  91.                 String punishment = "";
  92.                 try {
  93.                     int indexVer = data.indexOf("verdict-stat\"");
  94.                     punishment = getPunishment(data, indexVer);
  95.                     indexVer = data.indexOf("verdict-stat agreement\"", indexVer);
  96.                     howMany   = getHowMany(data, indexVer);
  97.                     indexVer = data.indexOf("verdict-stat\"", indexVer);
  98.                     veredicto = getVeredict(data, indexVer);
  99.                 } catch (Exception e) {
  100.                     try {
  101.                         fos.write(e.getMessage().getBytes());
  102.                     } catch (IOException e1) {
  103.                         e1.printStackTrace();
  104.                     }
  105.                 }
  106.  
  107.                 for (int i=1;i<=GAMES_PER_CASE;i++) {
  108.                     String url = TRIBUNAL_URL+caso+"/"+i+"/";
  109.                     System.out.println("Getting "+url);
  110.                     String urlData = "\"\"";
  111.                     try {
  112.                         urlData = getUrlSource(url);
  113.                     } catch (IOException e) { e.printStackTrace(); }
  114.                     if (urlData.equalsIgnoreCase("\"\"")) {
  115.                         System.out.println("No more games for case "+caso);
  116.                         break;
  117.                     }
  118.  
  119.                     DBObject jsonObject = (DBObject) JSON.parse(urlData);
  120.                     jsonObject.put("tribunal_id", caso);
  121.                     jsonObject.put("case_id", i);
  122.                     jsonObject.put("veredict", veredicto);
  123.                     jsonObject.put("agreement", howMany);
  124.                     jsonObject.put("punishment", punishment);
  125.  
  126.                     MySQL.getInstanciaUnica().consulta(getSqlCaseFromJson(jsonObject));
  127.                     MySQL.getInstanciaUnica().consulta(getSqlPlayersFromJson(jsonObject));
  128.                     MySQL.getInstanciaUnica().consulta(getReportsFromJson(jsonObject));
  129.                 }
  130.             }
  131.         }
  132.  
  133.         private String getPunishment(String data, int index) {
  134.             String veredicto = data.substring(index+"verdict-stat\"".length()+1,data.indexOf("<", index));
  135.             return veredicto;
  136.         }
  137.         private String getHowMany(String data, int index) {
  138.             String veredicto = data.substring(index+"verdict-stat agreement\"".length()+1,data.indexOf("<", index));
  139.             return veredicto;
  140.         }
  141.         private String getVeredict(String data, int indexVer) {
  142.             String veredicto = data.substring(indexVer+"verdict-stat\"".length()+1,data.indexOf("<", indexVer));
  143.             return veredicto;
  144.         }
  145.  
  146.         private String getSqlCaseFromJson(DBObject json) {
  147.             StringBuilder sBuilder = new StringBuilder("INSERT INTO tribunal_case values (");
  148.  
  149.             sBuilder.append(json.get("tribunal_id")+",");
  150.             sBuilder.append(json.get("case_id")+",");
  151.             sBuilder.append("\""+json.get("game_type")+"\",");
  152.             sBuilder.append(json.get("platform_game_id")+",");
  153.             sBuilder.append(json.get("allied_report_count")+",");
  154.             sBuilder.append(json.get("enemy_report_count")+",");
  155.             sBuilder.append("\""+json.get("most_common_report_reason")+"\",");
  156.             sBuilder.append(json.get("case_total_reports")+",");
  157.             sBuilder.append("\""+json.get("veredict")+"\",");
  158.             sBuilder.append("\""+json.get("agreement")+"\",");
  159.             sBuilder.append("\""+json.get("punishment")+"\"");
  160.             sBuilder.append(")");
  161.  
  162.             return sBuilder.toString();
  163.         }
  164.  
  165.         private String getSqlPlayersFromJson(DBObject json) {
  166.             StringBuilder sBuilder = new StringBuilder("INSERT INTO players values ");
  167.             BasicDBList e = (BasicDBList) json.get("players");
  168.             for (int i=0; i< e.size(); i++) {
  169.  
  170.                 DBObject dbo = (DBObject) e.get(i);
  171.                 StringBuilder sb = new StringBuilder("(");
  172.                 sb.append(json.get("tribunal_id")+",");
  173.                 sb.append(json.get("case_id")+",");
  174.                 sb.append(i+1+",");
  175.                 sb.append("\""+dbo.get("champion_name")+"\",");
  176.                 sb.append(dbo.get("team").toString().replaceAll("Team", "")+",");
  177.                 sb.append(dbo.get("level")+",");
  178.                 DBObject scores = (DBObject) dbo.get("scores");
  179.                 sb.append(scores.get("kills")+",");
  180.                 sb.append(scores.get("deaths")+",");
  181.                 sb.append(scores.get("assists")+",");
  182.                 sb.append(scores.get("nodes_captured")+",");
  183.                 sb.append(scores.get("nodes_neutralized")+",");
  184.                 sb.append(scores.get("player_score")+",");
  185.                 sb.append("\""+getItemsFromJson(dbo.get("items"))+"\",");
  186.                 sb.append("\""+dbo.get("outcome")+"\",");
  187.                 sb.append(dbo.get("summoner_spell_1")+",");
  188.                 sb.append(dbo.get("summoner_spell_2")+",");
  189.                 sb.append(dbo.get("time_played")+",");
  190.                 sb.append("\""+dbo.get("association_to_offender")+"\")"+(i==e.size()-1?"":","));
  191.  
  192.                 sBuilder.append(sb.toString());
  193.             }
  194.             return sBuilder.toString();
  195.         }
  196.  
  197.         private String getItemsFromJson(Object object) {
  198.             BasicDBList items = (BasicDBList) object;
  199.             StringBuilder sBuilder = new StringBuilder();
  200.             for (int i=0;i<items.size();i++) {
  201.                 DBObject dbo = (DBObject) items.get(i);
  202.                 sBuilder.append(dbo.get("id")+(i==items.size()-1?"":","));
  203.             }
  204.             return sBuilder.toString();
  205.         }
  206.  
  207.         private String getReportsFromJson(DBObject json) {
  208.             StringBuilder sBuilder = new StringBuilder("INSERT INTO reports values ");
  209.             BasicDBList e = (BasicDBList) json.get("reports");
  210.             for (int i=0; i< e.size(); i++) {
  211.  
  212.                 DBObject dbo = (DBObject) e.get(i);
  213.                 StringBuilder sb = new StringBuilder("(");
  214.                 sb.append(json.get("tribunal_id")+",");
  215.                 sb.append(json.get("case_id")+",");
  216.                 sb.append(i+1+",");
  217.                 sb.append(quoteString(dbo.get("offense")));
  218.                 sb.append(quoteString(dbo.get("comment")));
  219.                 sb.append("\""+dbo.get("association_to_offender")+"\")"+(i==e.size()-1?"":","));
  220.  
  221.                 sBuilder.append(sb.toString());
  222.             }
  223.             return sBuilder.toString();
  224.         }
  225.  
  226.         private Object quoteString(Object object) {
  227.             return object==null?null:"\""+object+"\",";
  228.         }
  229.     }
  230.  
  231. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement