diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index d52356d..3528364 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -36,14 +36,7 @@
-
-
-
-
-
-
+
diff --git a/src/com/upc/pbe/upcnews/Directoris.java b/src/com/upc/pbe/upcnews/Directoris.java
index 3c4c424..c8a83fd 100644
--- a/src/com/upc/pbe/upcnews/Directoris.java
+++ b/src/com/upc/pbe/upcnews/Directoris.java
@@ -118,7 +118,7 @@ public class Directoris extends Activity implements OnClickListener {
String m3u8 = d.doInBackground(urlvideo);
Log.d(TAG, m3u8);
Parser p = new Parser();
- /*
+
try {
ArrayList m3u8parsed = p.parseFile(m3u8);
@@ -132,13 +132,14 @@ public class Directoris extends Activity implements OnClickListener {
} catch (InfoException e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
Log.d(TAG, e.getMessage());
- }*/
+ }
}
//VideoPlayer
+ /*
String urlvid = null;
((UpcApp) getApplication()).setDesc(urlvid);
- startActivity(new Intent(this, VideoActivity.class));
+ startActivity(new Intent(this, VideoActivity.class));*/
}
}
\ No newline at end of file
diff --git a/src/com/upc/pbe/upcnews/Parser.java b/src/com/upc/pbe/upcnews/Parser.java
index ddfe3fc..2ebb404 100644
--- a/src/com/upc/pbe/upcnews/Parser.java
+++ b/src/com/upc/pbe/upcnews/Parser.java
@@ -5,272 +5,216 @@ import java.util.ArrayList;
import android.util.Log;
-public class Parser
-{
+public class Parser {
private static final String STARTWORD = "#EXTM3U";
private static String TAG = "Parser";
- private int fileType; //indicates if segment list or media list
+ private int fileType; // indicates if segment list or media list
private int currentLine;
- private int currentSegment; //Cada segmento de cada calidad distinta
- private int currentList; //Indice de cada recurso distinto
+ private int currentSegment; // Cada segmento de cada calidad distinta
+ private int currentList; // Indice de cada recurso distinto
private boolean expectSegment = false;
private boolean expectList = false;
private Descarrega download;
-
- public Parser()
- {
+
+ public Parser() {
currentLine = 0;
currentSegment = 0;
currentList = 0;
fileType = -1;
/*
- * -1 indicates UNDETERMINED
- * 0 indicates SEGMENTS
- * 1 indicates MEDIA
+ * -1 indicates UNDETERMINED 0 indicates SEGMENTS 1 indicates MEDIA
*/
download = new Descarrega();
}
-
- public ArrayList parseFile(String file) throws ErrorException, WarningException, InfoException
- {
+
+ public ArrayList parseFile(String file) throws ErrorException,
+ WarningException, InfoException {
ArrayList lists = new ArrayList();
lists.add(new ParentList(""));
lists.get(0).getLists().add(new List(-1));
String[] lines = file.split("\n");
- Log.d(TAG, "" + lines.length);
- for(int i = 0; i < lines.length; i++) //la primera linea = null
+
+ for (int i = 0; i < lines.length; i++) // la primera linea = null
{
- if(lines[i].endsWith("\\"))
- {
- lines[i] = lines[i].substring(0, lines[i].indexOf("\\")) + lines[++i];
+ if (lines[i].endsWith("\\")) {
+ lines[i] = lines[i].substring(0, lines[i].indexOf("\\"))
+ + lines[++i];
}
- try
- {
-
+ try {
+
Log.d(TAG, lines[i]);
- parseLine(lines[i],lists);
- }
- catch(InfoException iE)
- {
- //Toast.makeText(this, iE.getMessage(), Toast.LENGTH_SHORT).show();
- }
- catch(WarningException wE)
- {
-
+ parseLine(lines[i], lists);
+ } catch (InfoException iE) {
+ // Toast.makeText(this, iE.getMessage(),
+ // Toast.LENGTH_SHORT).show();
+ } catch (WarningException wE) {
+
}
}
- /*
- * Esto contiene una lista de RECURSOS,
- * que a su vez contiene una lista de CALIDADES.
- * Si no te gusta mis VERSOS,
- * te mando a la mierda sin SUTILIDADES.
+ /*
+ * Esto contiene una lista de RECURSOS, que a su vez contiene una lista
+ * de CALIDADES. Si no te gusta mis VERSOS, te mando a la mierda sin
+ * SUTILIDADES.
*
* -- Imanol, hasta las cejas de cafeína.
*
- * PD: En el último nivel de profundidad hay una lista de segmentos (debajo de calidades).
- * Allí está el auténtico tesoro de Narnia.
+ * PD: En el último nivel de profundidad hay una lista de segmentos
+ * (debajo de calidades). Allí está el auténtico tesoro de Narnia.
*/
- for(int i = 0; i < lists.size(); i++)
- {
+ for (int i = 0; i < lists.size(); i++) {
sortQuality(lists.get(i));
}
- return lists;
+ return lists;
}
-
- private int searchID(String ID, ArrayList lists)
- {
- for(int i = 0; i < lists.size(); i++)
- {
- if(lists.get(i).getID().equals(ID))
- {
+
+ private int searchID(String ID, ArrayList lists) {
+ for (int i = 0; i < lists.size(); i++) {
+ if (lists.get(i).getID().equals(ID)) {
return i;
}
}
return -1;
}
-
- private void sortQuality(ParentList ppls)
- {
+
+ private void sortQuality(ParentList ppls) {
ArrayList lists = ppls.getLists();
- if(lists.get(0).getQuality() == -1)
- {
+ if (lists.get(0).getQuality() == -1) {
/*
* Se trata de ext-x-media's y estos no van por calidad
*/
return;
}
- //BUBBLE-SORT!! (Me da un poco de verguenza, pero no quiero ponerme con quicksort...
- while(true)
- {
+ // BUBBLE-SORT!! (Me da un poco de verguenza, pero no quiero ponerme con
+ // quicksort...
+ while (true) {
boolean sorted = true;
int i = 0;
- do
- {
- if(lists.get(i).getQuality() < lists.get(i+1).getQuality())
- {
+ do {
+ if (lists.get(i).getQuality() < lists.get(i + 1).getQuality()) {
sorted = false;
List aux = lists.get(i);
- lists.set(i, lists.get(i+1));
- lists.set(i+1, aux);
+ lists.set(i, lists.get(i + 1));
+ lists.set(i + 1, aux);
}
-
- }while(++i != lists.size());
- if(sorted)
- {
+
+ } while (++i != lists.size());
+ if (sorted) {
break;
}
}
}
-
- public void parseLine(String line, ArrayList lists) throws ErrorException, WarningException, InfoException
- {
- if(line.isEmpty())
- {
+
+ public void parseLine(String line, ArrayList lists)
+ throws ErrorException, WarningException, InfoException {
+ if (line.isEmpty()) {
currentLine++;
return;
- }
- else
- {
- ParentList ppls = lists.get(currentList); //VIVA HONDURAS!!!
+ } else {
+ ParentList ppls = lists.get(currentList); // VIVA HONDURAS!!!
List pls = ppls.getLists().get(ppls.getCurrentQuality());
- if(!pls.getValidated())
- {
- if(line.equals(STARTWORD))
- {
+ if (!pls.getValidated()) {
+ if (line.equals(STARTWORD)) {
pls.setValidated(true);
- }
- else
- {
+ } else {
throw new ErrorException("Playlist is not valid");
}
- }
- else
- {
- if(line.charAt(0) == '#')
- {
- if(line.substring(0,4).equals("#EXT"))
- {
+ } else {
+ if (line.charAt(0) == '#') {
+ if (line.substring(0, 4).equals("#EXT")) {
String[] extTag = line.split(":");
- if(extTag[0].equals("#EXT-X-MEDIA-SEQUENCE"))
- {
+ if (extTag[0].equals("#EXT-X-MEDIA-SEQUENCE")) {
pls.setSequence(Integer.parseInt(extTag[1]));
- }
- else if(extTag[0].equals("#EXT-X-TARGETDURATION"))
- {
+ } else if (extTag[0].equals("#EXT-X-TARGETDURATION")) {
pls.setMaxDuration(Integer.parseInt(extTag[1]));
- }
- else if(extTag[0].equals("#EXTINF"))
- {
- if(fileType == -1)
- {
+ } else if (extTag[0].equals("#EXTINF")) {
+ if (fileType == -1) {
fileType = 0;
+ } else if (fileType == 1) {
+ throw new ErrorException(
+ "Invalid file, should contain Lists, "
+ + "but segments were found.");
}
- else if(fileType == 1)
- {
- throw new ErrorException("Invalid file, should contain Lists, " +
- "but segments were found.");
- }
- if(expectSegment)
- {
- throw new ErrorException("Expected segment URI, got a different" +
- "segment declaration");
+ if (expectSegment) {
+ throw new ErrorException(
+ "Expected segment URI, got a different"
+ + "segment declaration");
}
String[] args = extTag[1].split(",");
int duration = Integer.parseInt(args[0]);
- if (duration > pls.getMaxDuration())
- {
- throw new ErrorException("Segment " + currentSegment + " on line " + currentLine
- +" exceeds max duration");
+ if (duration > pls.getMaxDuration()) {
+ throw new ErrorException("Segment "
+ + currentSegment + " on line "
+ + currentLine + " exceeds max duration");
}
Segment s = new Segment(duration);
- if(args.length == 1)
- {
+ if (args.length == 1) {
s.setName("");
- }
- else
- {
+ } else {
s.setName(args[1]);
}
pls.getSegments().add(s);
expectSegment = true;
}
-
- else if(extTag[0].equals("#EXT-X-STREAM-INF"))
- {
- if(fileType == -1)
- {
+
+ else if (extTag[0].equals("#EXT-X-STREAM-INF")) {
+ if (fileType == -1) {
fileType = 1;
- }
- else if(fileType == 0)
- {
- throw new ErrorException("Invalid file, should contain Segments, " +
- "but lists were found.");
+ } else if (fileType == 0) {
+ throw new ErrorException(
+ "Invalid file, should contain Segments, "
+ + "but lists were found.");
}
expectList = true;
String programID = "";
int bandwidth = -1;
String[] arguments = extTag[1].split(",");
- for(int i = 0; i < arguments.length; i++)
- {
+ for (int i = 0; i < arguments.length; i++) {
String[] argument = arguments[i].split("=");
- if(argument[0].equals("PROGRAM-ID"))
- {
+ if (argument[0].equals("PROGRAM-ID")) {
programID = argument[1];
- }
- else if(argument[0].equals("BANDWIDTH"))
- {
+ } else if (argument[0].equals("BANDWIDTH")) {
bandwidth = Integer.parseInt(argument[1]);
}
}
- if(programID.equals("")|| bandwidth == -1)
- {
- throw new ErrorException("Playlist on line " + currentLine +
- " has missing arguments");
+ if (programID.equals("") || bandwidth == -1) {
+ throw new ErrorException("Playlist on line "
+ + currentLine
+ + " has missing arguments");
}
- if(!programID.equals(ppls.getID()))
- {
- if(ppls.getID().equals(""))
- {
+ if (!programID.equals(ppls.getID())) {
+ if (ppls.getID().equals("")) {
/*
- * Este caso se da cuando no se ha creado ninguna lista.
- * Hay que sustituir la por defecto por una lista real.
+ * Este caso se da cuando no se ha creado
+ * ninguna lista. Hay que sustituir la por
+ * defecto por una lista real.
*/
- lists.add(0,new ParentList(programID));
- }
- else
- {
+ lists.add(0, new ParentList(programID));
+ } else {
currentList = searchID(ppls.getID(), lists);
- if(currentList == -1)
- {
+ if (currentList == -1) {
lists.add(new ParentList(programID));
- currentList = lists.size()+1;
+ currentList = lists.size() + 1;
/*
- * ppls y pls se actualizan en la siguiente linea procesada
+ * ppls y pls se actualizan en la
+ * siguiente linea procesada
*/
- }
- else
- {
+ } else {
ppls = lists.get(currentList);
- ppls.getLists().add(new List(bandwidth));
+ ppls.getLists()
+ .add(new List(bandwidth));
}
}
- }
- else
- {
+ } else {
ppls.getLists().add(new List(bandwidth));
}
- }
- else if(extTag[0].equals("#EXT-X-MEDIA"))
- {
- if(fileType == -1)
- {
+ } else if (extTag[0].equals("#EXT-X-MEDIA")) {
+ if (fileType == -1) {
fileType = 1;
- }
- else if(fileType == 0)
- {
- throw new ErrorException("Invalid file, should contain Segments, " +
- "but lists were found.");
+ } else if (fileType == 0) {
+ throw new ErrorException(
+ "Invalid file, should contain Segments, "
+ + "but lists were found.");
}
String Type = "";
String Name = "";
@@ -278,46 +222,33 @@ public class Parser
String URI = "";
boolean Default = false;
String[] arguments = extTag[1].split(",");
- for(int i = 0; i < arguments.length; i++)
- {
+ for (int i = 0; i < arguments.length; i++) {
String[] argument = arguments[i].split("=");
- if(argument[0].equals("NAME"))
- {
+ if (argument[0].equals("NAME")) {
Name = argument[1];
- }
- else if(argument[0].equals("TYPE"))
- {
+ } else if (argument[0].equals("TYPE")) {
Type = argument[1];
- }
- else if(argument[0].equals("GROUP-ID"))
- {
+ } else if (argument[0].equals("GROUP-ID")) {
GroupID = argument[1];
- }
- else if(argument[0].equals("DEFAULT"))
- {
- if(argument[1].equals("YES"))
- {
+ } else if (argument[0].equals("DEFAULT")) {
+ if (argument[1].equals("YES")) {
Default = true;
- }
- else if(argument[1].equals("NO"))
- {
+ } else if (argument[1].equals("NO")) {
Default = true;
+ } else {
+ throw new ErrorException(
+ "Invalid value for argument DEFAULT on line "
+ + currentLine);
}
- else
- {
- throw new ErrorException("Invalid value for argument DEFAULT on line " +
- currentLine);
- }
- }
- else if(argument[0].equals("URI"))
- {
+ } else if (argument[0].equals("URI")) {
URI = argument[1];
}
}
- if(Type.equals("") || Name.equals("") || URI.equals("") || GroupID.equals(""))
- {
- throw new ErrorException("Playlist on line " + currentLine +
- " has missing arguments");
+ if (Type.equals("") || Name.equals("")
+ || URI.equals("") || GroupID.equals("")) {
+ throw new ErrorException("Playlist on line "
+ + currentLine
+ + " has missing arguments");
}
ParentList pl = new ParentList(GroupID);
pl.setDefault(Default);
@@ -326,92 +257,74 @@ public class Parser
Parser p = new Parser();
p.parseFile(download.doInBackground(URI));
/*
- * Procesar URI y descargar listas recursivamente y añadir a la lista actual.
+ * Procesar URI y descargar listas recursivamente y
+ * añadir a la lista actual.
*
* TO-DO: Necesito la funcion de Marc
*/
List l = new List(-1);
- if(!GroupID.equals(ppls.getID()))
- {
- if(ppls.getID().equals(""))
- {
+ if (!GroupID.equals(ppls.getID())) {
+ if (ppls.getID().equals("")) {
/*
- * Este caso se da cuando no se ha creado ninguna lista.
- * Hay que sustituir la por defecto por una lista real.
+ * Este caso se da cuando no se ha creado
+ * ninguna lista. Hay que sustituir la por
+ * defecto por una lista real.
*/
- lists.add(0,pl);
- }
- else
- {
+ lists.add(0, pl);
+ } else {
currentList = searchID(ppls.getID(), lists);
- if(currentList == -1)
- {
+ if (currentList == -1) {
lists.add(pl);
- currentList = lists.size()+1;
- }
- else
- {
+ currentList = lists.size() + 1;
+ } else {
ppls = lists.get(currentList);
ppls.getLists().add(l);
}
}
- }
- else
- {
+ } else {
ppls.getLists().add(l);
}
}
-
- else if(extTag[0].equals("#EXT-X-ENDLIST"))
- {
- if(expectSegment || expectList)
- {
- throw new ErrorException("Unexpected end of list!");
+
+ else if (extTag[0].equals("#EXT-X-ENDLIST")) {
+ if (expectSegment || expectList) {
+ throw new ErrorException(
+ "Unexpected end of list!");
}
- //END REACHED, IGNORE AND LET THE FILE REACH EOF
+ // END REACHED, IGNORE AND LET THE FILE REACH EOF
}
-
- else
- {
+
+ else {
currentLine++;
- throw new WarningException("Tag not implemented: " + extTag[0]);
+ throw new WarningException("Tag not implemented: "
+ + extTag[0]);
}
- }
- else
- {
+ } else {
String comment = line.substring(1);
- throw new InfoException("Comment on line " + currentLine++ + " " + comment);
+ throw new InfoException("Comment on line "
+ + currentLine++ + " " + comment);
}
- }
- else
- {
- if(expectSegment)
- {
+ } else {
+ if (expectSegment) {
expectSegment = false;
- try
- {
+ try {
pls.getSegments().get(currentSegment).setURL(line);
- }
- catch (MalformedURLException e)
- {
+ } catch (MalformedURLException e) {
throw new ErrorException(e.getMessage());
}
currentSegment++;
- }
- else if(expectList)
- {
+ } else if (expectList) {
expectList = false;
Parser p = new Parser();
p.parseFile(download.doInBackground(line));
- }
- else
- {
- throw new ErrorException("ERROR: Unexpected string " + line);
+ } else {
+ throw new ErrorException("ERROR: Unexpected string "
+ + line);
}
}
}
currentLine++;
- }
+ }
}
}
\ No newline at end of file