View Javadoc

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  }