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 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  }