package net.sourceforge.x360mediaserve.upnpmediaserver.upnp.contentdirectory; import java.io.File; import java.io.*; import java.net.URI; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import net.sourceforge.x360mediaserve.plistreader.PlistReader; import net.sourceforge.x360mediaserve.upnpmediaserver.upnp.formats.NewFormat; import net.sourceforge.x360mediaserve.upnpmediaserver.upnp.items.FileItem; import net.sourceforge.x360mediaserve.upnpmediaserver.upnp.items.Playlist; import net.sourceforge.x360mediaserve.upnpmediaserver.upnp.items.Song; import net.sourceforge.x360mediaserve.upnpmediaserver.upnp.items.Tag; public class M3UPlaylist { private String basePath; private String fileName; private Playlist playlist; private FormatHandler formatHandler; public M3UPlaylist(File f, FormatHandler fh) { fileName = f.getName(); basePath = f.getParentFile().getAbsolutePath() + "/"; formatHandler = fh; playlist = new Playlist(); playlist.setName( getPlaylistName() ); loadSongs(); } public String getPlaylistName() { String playlistName = ""; String[] fileNameParts = fileName.split("\\."); for (int i=0; i < fileNameParts.length-1; i++) { if (i > 0) { playlistName += "."; } playlistName += fileNameParts[i]; } return playlistName; } private void loadSongs() { System.out.println("Loading playlist " + basePath + fileName); try { BufferedReader input = new BufferedReader(new FileReader(new File(basePath+fileName))); String line = null; try { while (( line = input.readLine()) != null) { if (!line.startsWith("#")) { String mp3FileName = ""; if (line.startsWith("/")) { mp3FileName = line; } else { mp3FileName = basePath+line; } File f = new File(mp3FileName); if (f.exists()) { System.out.println("Added " + mp3FileName + " to playlist"); FileItem fileitem = new FileItem( f, formatHandler); Song song = new Song(fileitem); playlist.addSong(song); } else { System.out.println("File not found: " + basePath+line); } } } } catch (IOException e) { System.out.println("IO Exception on file " + basePath+fileName); } } catch (FileNotFoundException e) { System.out.println("Can't find file " + basePath+fileName); } } public Playlist getPlaylist() { return playlist; } }