package com.test; import java.beans.Encoder; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; import java.security.spec.EncodedKeySpec; import java.sql.Time; import java.util.HashMap; import java.util.Map; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.soap.Node; import javax.xml.transform.Templates; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; // 处理记录文件->读取xml->上传记录 public class Upload { private int count=0; private String dir; // 目录名 private String s3base; // s3根目录 private String ringBucket; // ring目录 private String imageBucket; // image目录 private DocumentBuilderFactory factory; private DocumentBuilder docBuilder; private Map<String,String>map; public void init() { dir = "/home/liutao/workspace/python/1-fetch/download_Classical/"; factory = DocumentBuilderFactory.newInstance(); try { docBuilder = factory.newDocumentBuilder(); } catch (ParserConfigurationException e) { System.out.println("ParserConfigurationException"); e.printStackTrace(); } s3base = "http://s3.amazonaws.com/"; ringBucket = "ringtone_ring/"; imageBucket = "ringtone_image/"; map = new HashMap<String,String>(); map.put("Title", "title"); map.put("Artist", "artist"); map.put("Category", "category"); map.put("Downloads", "download_count"); map.put("Mark", "avg_rate"); map.put("Size", "size"); map.put("Ring", "file_name"); map.put("Image", "image"); } public Upload() { init(); System.out.println("beging..."); //upload("http://172.16.166.17:8888/ringtoneserver/insertsong?uuid=ffffffffff&title=t1&artist=a1&category=g3&download_count=1&avg_rate=100&size=32322&file_name=asdfadf.mp3&image=wwwww&s3url=s3url1"); processLog(); System.out.println("end."); System.out.println("count:"+count); } public static void main(String []args) { Upload abc = new Upload(); } public void parseXML(String filename, String uuid) { System.out.println(filename); File recordFile = new File(dir+filename); if(!recordFile.exists()) { System.out.println(filename+" does not exist!"); return ; } int j; String content,typeStr,valStr,str=""; content = "uuid="+uuid+"&"; try { InputStream in = new FileInputStream(recordFile); Document doc; doc = docBuilder.parse(in); org.w3c.dom.Element root = doc.getDocumentElement(); org.w3c.dom.Node curNode; NodeList childen = root.getChildNodes(); for(j=0; j<childen.getLength(); j++) { curNode = childen.item(j); if(curNode.getNodeType() == Node.ELEMENT_NODE) { typeStr = curNode.getNodeName(); valStr = curNode.getFirstChild().getNodeValue(); //System.out.println(typeStr+":"+valStr); if(!typeStr.equals("Date")) { if(typeStr.equals("Size")) // 把后缀kb去掉 valStr=valStr.substring(0, valStr.indexOf('k')); else if(typeStr.equals("Downloads")) {// 处理数字中有逗号 int temp = 0; for(int i=0; i<valStr.length(); i++) if(valStr.charAt(i)>='0' && valStr.charAt(i)<='9') temp = temp*10 + valStr.charAt(i)-'0'; valStr = temp+""; } else if(typeStr.equals("Image")) // 补全url valStr = s3base+imageBucket+uuid+valStr; else if(typeStr.equals("Ring")) str = valStr; content += map.get(typeStr)+"="+URLEncoder.encode(valStr)+"&"; } } } content += "s3url="+s3base+ringBucket+uuid+str; //System.out.println(content); upload(content); } catch (IOException e) { System.out.println("IOException"); e.printStackTrace(); } catch (SAXException e) { System.out.println("SAXException"); e.printStackTrace(); } } public void processLog() { File logFile = new File(dir+"log"); if(!logFile.exists()) { System.out.println("log file does not exist!"); return ; } BufferedReader reader = null; try { reader=new BufferedReader(new InputStreamReader(new FileInputStream(logFile))); } catch (FileNotFoundException e) { System.out.println("FileNotFoundException"); e.printStackTrace(); } String line; String uuid; int temp; try { while((line=reader.readLine()) != null) { //System.out.println(line); temp = line.indexOf(':'); if(line.substring(temp+1).startsWith("uuid:")) { // only those without error parseXML(line.substring(0,temp), line.substring(temp+6)); /* try { Thread.sleep(300); } catch (InterruptedException e) { System.out.println("sleep error!"); }*/ } } } catch (Exception e) { System.out.println("file read error"); } } public void upload(String content) { // HttpURLConnection httpConn = null; String prefix = "http://172.16.166.17:8888/ringtoneserver/insertsong?"; URL url; HttpURLConnection urlConn=null; //System.out.println(prefix+content); try { //content = content.replace(' ', '+'); url = new URL(prefix+content); urlConn = (HttpURLConnection)url.openConnection(); urlConn.setConnectTimeout(4000); urlConn.setDoInput(true); urlConn.setRequestMethod("GET"); urlConn.connect(); urlConn.getInputStream(); count ++; } catch (MalformedURLException e) { System.out.println("MalformedURLException"); e.printStackTrace(); } catch (IOException e) { System.out.println("IOException"); e.printStackTrace(); } finally { try{ urlConn.disconnect(); } catch (Exception e) { System.out.println("close error"); } } /* final String ratingUrl = Const.RatingBase + realKey + "?score=" + (int) rating*20; new Thread(new Runnable() { @Override public void run() { try { URL url = new URL(ratingUrl); HttpURLConnection urlConn = (HttpURLConnection)url.openConnection(); urlConn.setConnectTimeout(4000); urlConn.connect(); urlConn.getInputStream(); urlConn.disconnect(); // Log.d(TAG, ratingUrl); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }).start(); */ /* * DataInputStream dis = new DataInputStream(is); String line; * while((line=dis.readLine()) != null) System.out.println(line); * dis.close(); */ /* * httpConn = (HttpURLConnection)url.openConnection(); * HttpURLConnection.setFollowRedirects(true); * httpConn.setRequestMethod("GET"); * httpConn.setRequestProperty("User-Agent" * ,"Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)"); */ } }