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 M3UParser { 14 15 private static Logger log = Logger.getLogger(M3UParser.class); 16 17 public LinkedList<String> getStreamingUrl(String url) { 18 LinkedList<String> murls = new LinkedList<String>(); 19 try { 20 return getStreamingUrl(getConnection(url)); 21 } catch (MalformedURLException e) { 22 log.error(e); 23 } catch (IOException e) { 24 log.error(e); 25 } 26 murls.add(url); 27 return murls; 28 } 29 30 public LinkedList<String> getStreamingUrl(URLConnection conn) { 31 32 final BufferedReader br; 33 String murl = null; 34 LinkedList<String> murls = new LinkedList<String>(); 35 try { 36 br = new BufferedReader(new InputStreamReader(conn.getInputStream())); 37 while (true) { 38 try { 39 String line = br.readLine(); 40 41 if (line == null) { 42 break; 43 } 44 murl = parseLine(line); 45 if (murl != null && !murl.equals("")) { 46 murls.add(murl); 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 return trimmed.substring(trimmed.indexOf("http")); 68 } 69 return ""; 70 } 71 72 private URLConnection getConnection(String url) throws MalformedURLException, IOException 73 { 74 URLConnection mUrl = new URL(url).openConnection(); 75 return mUrl; 76 } 77 78 }