1 package org.rpi.radio.parsers; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStreamReader; 6 import java.net.MalformedURLException; 7 import java.net.URL; 8 import java.net.URLConnection; 9 import java.util.LinkedList; 10 11 import org.apache.log4j.Logger; 12 13 public class PLSParser { 14 private static Logger log = Logger.getLogger(PLSParser.class); 15 16 public LinkedList<String> getStreamingUrl(String url) { 17 LinkedList<String> murls = new LinkedList<String>(); 18 try { 19 return getStreamingUrl(getConnection(url)); 20 } catch (MalformedURLException e) { 21 log.error(e); 22 } catch (IOException e) { 23 log.error(e); 24 } 25 murls.add(url); 26 return murls; 27 } 28 29 public LinkedList<String> getStreamingUrl(URLConnection conn) { 30 final BufferedReader br; 31 String murl = null; 32 LinkedList<String> murls = new LinkedList<String>(); 33 try { 34 br = new BufferedReader(new InputStreamReader(conn.getInputStream())); 35 while (true) { 36 try { 37 String line = br.readLine(); 38 39 if (line == null) { 40 break; 41 } 42 murl = parseLine(line); 43 if (murl != null && !murl.equals("")) { 44 log.debug("Adding URL: " + murl); 45 murls.add(murl); 46 47 } 48 } catch (IOException e) { 49 log.error(e); 50 } 51 } 52 } catch (MalformedURLException e) { 53 log.error(e); 54 } catch (IOException e) { 55 log.error(e); 56 } 57 murls.add(conn.getURL().toString()); 58 return murls; 59 } 60 61 private String parseLine(String line) { 62 if (line == null) { 63 return null; 64 } 65 String trimmed = line.trim(); 66 if (trimmed.indexOf("http") >= 0) { 67 String res = trimmed.substring(trimmed.indexOf("http")); 68 if(res.toUpperCase().endsWith("MSWMEXT=.ASF")) 69 { 70 log.debug("URL ends with MSWExt=.asf " + res); 71 if(res.toUpperCase().startsWith("HTTP://")) 72 { 73 log.debug("URL ends with MSWExt=.asf " + res + " and starts wtih 'http://' " + res); 74 res = "mmsh://" + res.substring(7); 75 log.debug("URL 'http://' with 'mmsh://' " + res); 76 } 77 } 78 return res; 79 } 80 return ""; 81 } 82 83 private URLConnection getConnection(String url) throws MalformedURLException, IOException { 84 URLConnection mUrl = new URL(url).openConnection(); 85 return mUrl; 86 } 87 88 }