Contenido sobre Android
Buscar
Social
Ofertas laborales ES

Foro sobre Android > Parsear archivos .pls (playlist)

Hola,

¿Cómo podría parsear un .pls y no morir en el intento?

Necesito recuperar estos datos:

Header
[playlist] : This tag indicates that it is a Playlist File
Track Entry
Assuming track entry #X
FileX : Variable defining location of stream.
TitleX : Defines track title.
LengthX : Length in seconds of track. Value of -1 indicates indefinite.
Footer
NumberOfEntries : This variable indicates the number of tracks
Version: Playlist version. Currently only a value of 2 is valid.

Para luego reproducir el stream que contiene, la reproducción la hago así pero no me funciona con servidores que tienen extensión .pls (creo que son shoutcast o icecast o parecidos)

final String STREAM_SERVER = "http://www.site.com:8000/listen.pls";

Intent i = new Intent(MusicService.ACTION_URL);
Uri uri = Uri.parse(STREAM_SERVER);
i.setData(uri);
startService(i);

Así solo me funciona con extensiones .3gp, .mp3, .ogg y lo que necesitaba (o eso creo) es extraer el playlist para luego reproducirlo, así no funciona:


final String STREAM_SERVER = "http://www.site.com:8000/listen.pls";

Intent i = new Intent(MusicService.ACTION_URL);
Uri uri = Uri.parse(STREAM_SERVER);
i.setData(uri);
startService(i);

Cómo lo podría hacer?

Saludos

septiembre 30, 2011 | Unregistered Commenterdroid86

Estoy lo estoy probando con esto, a ver si funciona:


public class PlsFile implements PlayListFile {

public Uri m_uri;
public String m_errores = "";
public long m_numero_de_entradas;
public PlayList m_play_list;

public PlsFile(Uri uri){
m_uri = uri;
m_play_list = new PlayList();
}

@Override
public PlayList play_list() {
return m_play_list;
}

@Override
public void parse() {
File file = new File(m_uri.getPath());
FileReader file_reader;
try {
file_reader = new FileReader(file);
LineNumberReader numero_linea_reader = new LineNumberReader(file_reader);
String linea;
String[] resultado_split;
String var_nombre;
String var_valor;
boolean cabecera_encontrada = false;

while ((linea = numero_linea_reader.readLine()) != null){
if (linea.trim().equals("")){
continue;
}
if (!cabecera_encontrada){
if (linea.trim().equals("[playlist]")){
cabecera_encontrada = true;
}
continue;
}
resultado_split = linea.split("=", 2);
if (resultado_split.length != 2){
continue;
}
var_nombre = resultado_split[0].trim().toLowerCase();
var_valor = resultado_split[1].trim();

if (var_nombre.equals("numberofentries")){
m_numero_de_entradas = Long.parseLong(var_valor);
continue;
}

if (var_nombre.startsWith("file")){
m_play_list.add(var_valor);
}
}
} catch (Exception e) {
m_errores += "Error al leer el archivo pls '" + file.getAbsolutePath() + "': " + e.toString() + "\n";
}
if (m_play_list.isEmpty()){
m_errores += "El archivo pls '" + file.getAbsolutePath() + "' no ha conseguido devolver algunos archivos.\n";
}

}

@Override
public String errores() {
return m_errores;
}
}

Saludos

septiembre 30, 2011 | Unregistered Commenterdroid86