Top RIA blogs award

Top RIA blogs

Confessions of an Flash Addict Rotating Header Image

AS3 PLS (Playlist ) reader updated!

Just updated some final functionality on my as3plsreader/writer. As you can read from the comments here, someone actually is using it :)

As requested I have put in M3U file support, and rewritten the parser so it is really fast (using RegExp).

So check out the project using SVN, play around with it and tell me what you think!

Below is a example of how easy it works:

import nl.funkymonkey.firelog.core.Logger;
import nl.funkymonkey.utils.io.playlist.events.ParseEvent;
import nl.funkymonkey.utils.io.playlist.*;
import nl.funkymonkey.utils.io.playlist.types.*;

var _url:String="http://www.funky-monkey.nl/air/plstest/playlist.m3u";
buildFromOnline();
function buildFromOnline():void {

	var loader : URLLoader = new URLLoader();
	loader.addEventListener(Event.COMPLETE, plsLoaded);
	loader.addEventListener(ProgressEvent.PROGRESS, onProgress);
	loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
	loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
	loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httStatus);

	loader.load(new URLRequest(_url));
}

function plsLoaded( e : Event ):void {

	var value:String=e.currentTarget.data;

	// Create a new file from string data
	var plsFile:File=File.desktopDirectory;
	plsFile.url+= "/playlist.m3u";
	Logger.info("url: " + plsFile.url);
	Logger.info("nativePath: " + plsFile.nativePath);
	var fs : FileStream = new FileStream();
	fs.open(plsFile, FileMode.WRITE);
	fs.writeUTFBytes(value);
	fs.close();

	Logger.info("====== PLS# " + plsFile + " ======");
	// instanciate new PlayListReader object with file reference
	var pls : PlaylistReader = new PlaylistReader();
	pls.addEventListener(ParseEvent.FILE_PARSED, parsedPlaylist, false, 0, true);
	pls.source=plsFile;
}

function parsedPlaylist( evt:ParseEvent):void {

	var m3uFile:Array=evt.fileData as Array;
	Logger.info( "file with extension " + evt.extension.toString( ) + " succesfully parsed." );
	Logger.info( "====== M3U FILE   " + m3uFile.toString( ) + " ======" );

	for (var i:int = 0; i < m3uFile.length; ++i) {

		Logger.info( "====== M3U Item no# " + (i + 1) + " of " + m3uFile.length + " ======" );
		Logger.info( "** file   : " + IPlayable(m3uFile[i]).file );
		Logger.info( "** title  : " + IPlayable(m3uFile[i]).title );
		Logger.info( "** length : " + IPlayable(m3uFile[i]).length );
		Logger.info( "** isStream: " + IPlayable(m3uFile[i]).isStream );
	}
}
function httStatus( e : HTTPStatusEvent ):void {
	Logger.info(e.status);
}

function onProgress( e : Event ):void {
	Logger.info(e);
}

function onIOError( e : IOErrorEvent ):void {
	Logger.info(e.text);
}

function onSecurityError( e : Event ):void {
	Logger.info(e);
}

2 Comments on “AS3 PLS (Playlist ) reader updated!”

  1. #1 Andrei Potorac
    on Aug 28th, 2009 at 3:34 pm

    Hey, thanks for this, it’s really useful! :D

  2. #2 Eric Dolecki
    on Jan 26th, 2010 at 7:28 pm

    Could you contact me – what Logger are you using? I could write my own, but it might be nice just to download the SWF you’re using to capture the log data.

Leave a Comment