mp3tunes is a service to load your audio files and share them between different devices such as: desktop, mobile, game consoles and the Web. I just completed creating a foundation API for AS3.0 so you can start using the API in your Flex/AIR/AS3.0 projects.
You can see the project in google code: http://code.google.com/p/mp3tunes-as3-api/
The SWC and ASDOC can be downloaded from here: http://mp3tunes-as3-api.googlecode.com/files/Archive.zip
And here’s a simple implementation of the API in Flex 4 (Gumbo). The code login into the MP3tunes Music API, retrieve album result, artist data, track data and plays the first audio file in your account.
<FxApplication xmlns="http://ns.adobe.com/mxml/2009"
creationComplete="creationCompleteHandler(event)">
<Script>
<![CDATA[
import flash.events.Event;
import flash.media.Sound;
import flash.net.URLRequest;
import com.elad.MP3tunes.vo.TrackItemVO;
import com.elad.MP3tunes.vo.TrackListVO;
import com.elad.MP3tunes.events.TrackDataEvent;
import com.elad.MP3tunes.vo.AlbumListVO;
import com.elad.MP3tunes.events.AlbumDataEvent;
import com.elad.MP3tunes.vo.ArtistItemVO;
import com.elad.MP3tunes.vo.ArtistListVO;
import mx.controls.Alert;
import com.elad.MP3tunes.events.ArtistsResultEvent;
import com.elad.MP3tunes.events.MusicEvent;
import mx.events.FlexEvent;
import com.elad.MP3tunes.Music;
private var music:Music;
protected function creationCompleteHandler(event:FlexEvent):void
{
music = new Music("YOUR_DEVELOPER_KEY");
music.addEventListener(MusicEvent.LOGIN_SUCCESSFULL, onLogin);
music.addEventListener(MusicEvent.LOGIN_ERROR, function():void { Alert.show("Error login"); } );
music.login("YOUR_USERNAME", "YOUR_PASSWORD");
}
private function onLogin(event:MusicEvent):void
{
music.removeEventListener(MusicEvent.LOGIN_SUCCESSFULL, onLogin);
music.addEventListener(ArtistsResultEvent.ARTIST_RESULT_COMPLETED, onArtistsResult);
music.addEventListener(ArtistsResultEvent.ARTIST_RESULT_ERROR, function():void { Alert.show("Error getting artist list"); });
music.getMusicByArtists();
}
private function onArtistsResult(event:ArtistsResultEvent):void
{
music.removeEventListener(ArtistsResultEvent.ARTIST_RESULT_COMPLETED, onArtistsResult);
var artistList:ArtistListVO = new ArtistListVO(event.artistList.list.source);
var item:ArtistItemVO = artistList.getItem(0);
music.addEventListener(AlbumDataEvent.ALBUM_DATA_COMPLETED, onAlbumDataComplete);
music.addEventListener(AlbumDataEvent.ALBUM_DATA_ERROR, function():void { Alert.show("Error getting album list"); });
music.getAlbumData(item.artistId);
}
private function onAlbumDataComplete(event:AlbumDataEvent):void
{
music.removeEventListener(AlbumDataEvent.ALBUM_DATA_COMPLETED, onAlbumDataComplete);
music.removeEventListener(AlbumDataEvent.ALBUM_DATA_ERROR, onAlbumDataComplete);
var albumList:AlbumListVO = new AlbumListVO(event.collection.list.source);
var albumId:String = albumList.getItem(0).albumId;
music.addEventListener(TrackDataEvent.TRACK_DATA_COMPLETED, onTrackDataComplete);
music.addEventListener(TrackDataEvent.TRACK_DATA_ERROR, function():void { Alert.show("Error getting track data"); });
music.getTrackData(albumId);
}
private function onTrackDataComplete(event:TrackDataEvent):void
{
music.removeEventListener(AlbumDataEvent.ALBUM_DATA_COMPLETED, onAlbumDataComplete);
music.removeEventListener(TrackDataEvent.TRACK_DATA_ERROR, function():void { Alert.show("Error getting track data"); });
var trackList:TrackListVO = new TrackListVO(event.collection.list.source);
var trackItem:TrackItemVO = trackList.getItem(0);
playSong(trackItem.downloadURL);
}
private function playSong(url:String):void
{
var sound:Sound = new Sound();
var req:URLRequest = new URLRequest(url);
sound.load(req);
sound.play();
}
]]>
<Script>
<FxApplication>
</p>


















