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 }