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 }