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 ASXParser {
14
15 private Logger log = Logger.getLogger(ASXParser.class);
16
17 public LinkedList<String> getStreamingUrl(String url) {
18 LinkedList<String> murls = null;
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 return murls;
27 }
28
29 public LinkedList<String> getStreamingUrl(URLConnection conn) {
30
31 final BufferedReader br;
32 String murl = null;
33 LinkedList<String> murls = null;
34 murls = new LinkedList<String>();
35 try {
36 br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
37
38 while (true) {
39 try {
40 String line = br.readLine();
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
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.toLowerCase().startsWith("<ref href=\"")) {
67 trimmed = trimmed.substring(11);
68
69 trimmed = trimmed.replace("/>", "").trim();
70 if (trimmed.endsWith("\"")) {
71 trimmed = trimmed.replace("\"", "");
72 log.debug("ASX: " + trimmed);
73 return trimmed;
74 }
75 }
76 return "";
77 }
78
79 private URLConnection getConnection(String url) throws MalformedURLException, IOException
80 {
81 URLConnection mUrl = new URL(url).openConnection();
82 return mUrl;
83 }
84
85 }