예제 #1
0
        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();
        }
예제 #2
0
        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...)
                }
            }
        }
예제 #3
0
        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);
        }
예제 #4
0
        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();
        }
예제 #5
0
        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);
        }