public static void BuildSingleFilePlaylist(string pPath, INezPlugPlaylistFormat vgmData, string pTrackData, int pIndex) { System.Text.Encoding enc = System.Text.Encoding.ASCII; string outputFileName = Path.GetFileNameWithoutExtension(pPath) + " - " + pIndex.ToString().PadLeft(2, '0') + " - " + CreatePlaylistTitle(pIndex) + ".m3u"; foreach (char c in Path.GetInvalidFileNameChars()) { outputFileName = outputFileName.Replace(c, '_'); } string outputPath = Path.GetDirectoryName(pPath); StreamWriter singleSW = File.CreateText(outputPath + Path.DirectorySeparatorChar + outputFileName); singleSW.WriteLine("#######################################################"); singleSW.WriteLine("#"); singleSW.WriteLine("# Game: " + enc.GetString(FileUtil.ReplaceNullByteWithSpace(vgmData.SongName)).Trim()); singleSW.WriteLine("# Artist: " + enc.GetString(FileUtil.ReplaceNullByteWithSpace(vgmData.SongArtist)).Trim()); singleSW.WriteLine("# Copyright: " + enc.GetString(FileUtil.ReplaceNullByteWithSpace(vgmData.SongCopyright)).Trim()); singleSW.WriteLine("#"); singleSW.WriteLine("#######################################################"); singleSW.WriteLine(); singleSW.WriteLine(pTrackData); singleSW.Close(); singleSW.Dispose(); }
public static void BuildPlaylistForFile(M3uBuilderStruct pM3uBuilderStruct) { using (FileStream fs = File.OpenRead(pM3uBuilderStruct.Path)) { Type dataType = FormatUtil.getObjectType(fs); System.Text.Encoding enc = System.Text.Encoding.ASCII; if (dataType != null && (typeof(IEmbeddedTagsFormat).IsAssignableFrom(dataType))) { string filename = Path.GetFileName(pM3uBuilderStruct.Path); string trackItem = String.Empty; INezPlugPlaylistFormat vgmData = (INezPlugPlaylistFormat)Activator.CreateInstance(dataType); fs.Seek(0, SeekOrigin.Begin); vgmData.Initialize(fs, pM3uBuilderStruct.Path); string outputFile = Path.GetDirectoryName(pM3uBuilderStruct.Path) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(pM3uBuilderStruct.Path) + ".m3u"; using (StreamWriter sw = File.CreateText(outputFile)) { sw.WriteLine("#######################################################"); sw.WriteLine("#"); sw.WriteLine("# Game: " + enc.GetString(FileUtil.ReplaceNullByteWithSpace(vgmData.SongName)).Trim()); sw.WriteLine("# Artist: " + enc.GetString(FileUtil.ReplaceNullByteWithSpace(vgmData.SongArtist)).Trim()); sw.WriteLine("# Copyright: " + enc.GetString(FileUtil.ReplaceNullByteWithSpace(vgmData.SongCopyright)).Trim()); sw.WriteLine("#"); sw.WriteLine("#######################################################"); sw.WriteLine(); for (int i = vgmData.StartingSong[0] - 1; i < vgmData.TotalSongs[0]; i++) { if (pM3uBuilderStruct.UseKnurekFormatParsing) { trackItem = BuildKnurekFormatPlaylistTrackItem(i, vgmData, pM3uBuilderStruct.Path); } else { trackItem = BuildPlaylistTrackItem(i, vgmData, pM3uBuilderStruct.Path); } sw.WriteLine(trackItem); if (pM3uBuilderStruct.OnePlaylistPerFile) { BuildSingleFilePlaylist(pM3uBuilderStruct.Path, vgmData, trackItem, i); } else if (pM3uBuilderStruct.UseKnurekFormatParsing) { BuildSingleFileKnurekFormatPlaylist(pM3uBuilderStruct.Path, vgmData, trackItem, i); } } } // using (StreamWriter sw...) } } }
public static string BuildPlaylistTrackItem(int index, INezPlugPlaylistFormat vgmData, string pPath) { System.Text.Encoding enc = System.Text.Encoding.ASCII; string title = enc.GetString(FileUtil.ReplaceNullByteWithSpace(vgmData.SongArtist)).Trim() + " - " + enc.GetString(FileUtil.ReplaceNullByteWithSpace(vgmData.SongName)).Trim() + " - " + "Track " + index.ToString().PadLeft(2, '0');; string entry = NezPlugUtil.BuildPlaylistEntry(vgmData.GetNezPlugPlaylistFormat(), Path.GetFileName(pPath), (index).ToString(), title, String.Empty, String.Empty, String.Empty, String.Empty); return(entry); }
public static void BuildSingleFileKnurekFormatPlaylist(string pPath, INezPlugPlaylistFormat vgmData, string pTrackData, int pIndex) { System.Text.Encoding enc = System.Text.Encoding.ASCII; string outputFileName = (pIndex + 1).ToString().PadLeft(2, '0') + " " + CreatePlaylistTitle(pIndex + 1) + ".m3u"; foreach (char c in Path.GetInvalidFileNameChars()) { outputFileName = outputFileName.Replace(c, '_'); } string outputPath = Path.GetDirectoryName(pPath); outputPath = Path.Combine(outputPath, outputFileName); StreamWriter singleSW = File.CreateText(outputPath); singleSW.WriteLine(pTrackData); singleSW.Close(); singleSW.Dispose(); }
public static string BuildKnurekFormatPlaylistTrackItem(int index, INezPlugPlaylistFormat vgmData, string pPath) { System.Text.Encoding enc = System.Text.Encoding.ASCII; short dummy; int dateIndex = -1; string fileName = Path.GetFileNameWithoutExtension(vgmData.FilePath); string[] splitFileName = fileName.Split(new char[] { '(' }, StringSplitOptions.RemoveEmptyEntries); // track title string trackTitle = "Track " + (index + 1).ToString().PadLeft(2, '0'); // composer string composer = enc.GetString(FileUtil.ReplaceNullByteWithSpace(vgmData.SongArtist)).Trim(); composer = composer.Replace("<?>", "Unknown"); // game name string gameName = splitFileName[0].Trim(); // year string year = String.Empty; // check for system identifiers (GBC), (FDS), etc... if ((splitFileName.Length > 1) && Int16.TryParse(splitFileName[1].Substring(0, 2), out dummy)) { dateIndex = 1; } else if ((splitFileName.Length > 2) && Int16.TryParse(splitFileName[2].Substring(0, 2), out dummy)) { dateIndex = 2; } year = splitFileName[dateIndex].Replace(")", String.Empty).Substring(0, 4); // developer string developer; developer = splitFileName[(dateIndex + 1)].Replace(")", String.Empty).Trim(); // publisher string publisher = String.Empty; if (splitFileName.GetUpperBound(0) > (dateIndex + 1)) { publisher = splitFileName[splitFileName.GetUpperBound(0)].Replace(")", String.Empty).Trim(); } string title = trackTitle + " - " + composer + " - " + gameName + " - (c)" + year + " " + developer; title = String.IsNullOrEmpty(publisher) ? title : (title + ", " + publisher); title = title.Trim(); string entry = NezPlugUtil.BuildPlaylistEntry(vgmData.GetNezPlugPlaylistFormat(), Path.GetFileName(pPath), (index).ToString(), title, String.Empty, String.Empty, String.Empty, String.Empty); return(entry); }