package vazkii.minetunes.playlist.provider;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import vazkii.minetunes.gui.GuiDevTools;
import vazkii.minetunes.playlist.MP3Metadata;
import vazkii.minetunes.playlist.Playlist;
public class ProviderM3U extends PlaylistProvider {
public static final ProviderM3U instance = new ProviderM3U();
@Override
public Playlist provide(File file, IProviderStateCallback callback) {
foundFiles = 0;
processedFiles = 0;
this.callback = callback;
Set<MP3Metadata> metadataSet = new TreeSet();
List<String> lines = new ArrayList();
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
while((line = reader.readLine()) != null) {
line = line.trim();
if(!line.startsWith("#") && line.endsWith(".mp3")) {
lines.add(line);
foundFiles++;
updateState();
}
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
File parent = file.getParentFile();
for(String line : lines) {
if(!line.startsWith("/"))
line = "/" + line;
File mp3 = new File(parent, line);
if(mp3.exists()) {
try {
name = line;
metadataSet.add(new MP3Metadata(processedFiles, mp3));
processedFiles++;
updateState();
} catch (Exception e) {
e.printStackTrace();
}
} else GuiDevTools.debugLog(line + " does not exist, skipping");
}
Playlist playlist = new Playlist(file, metadataSet);
return playlist;
}
@Override
public String getDescription() {
return "M3U Playlist Provider";
}
}