Beispiel #1
0
        public void Write(SortableBindingList <FileEntryClass> FileEntries, OutputMetadata OutputMetaData)
        {
            file_entries    = FileEntries;
            output_metadata = OutputMetaData;

            XDocument doc        = new XDocument();
            XElement  Container  = new XElement("SaveData");
            XElement  OutputData = new XElement("OutputData",
                                                new XElement("OutputFile", output_metadata.OutputFile),
                                                new XElement("Album", output_metadata.Album),
                                                new XElement("AlbumSort", output_metadata.AlbumSort),
                                                new XElement("Artist", output_metadata.Artist),
                                                new XElement("ArtistSort", output_metadata.ArtistSort),
                                                new XElement("Comment", output_metadata.Comment),
                                                new XElement("Composer", output_metadata.Composer),
                                                new XElement("ComposerSort", output_metadata.ComposerSort),
                                                new XElement("Disc", output_metadata.Disc),
                                                new XElement("DiscTotal", output_metadata.DiscTotal),
                                                new XElement("Title", output_metadata.Title),
                                                new XElement("TitleSort", output_metadata.TitleSort),
                                                new XElement("Track", output_metadata.Track),
                                                new XElement("TrackTotal", output_metadata.TrackTotal),
                                                new XElement("Year", output_metadata.Year)
                                                );

            if (output_metadata.Image != null)
            {
                OutputData.Add(new XElement("Artwork", Convert.ToBase64String(output_metadata.Image, Base64FormattingOptions.InsertLineBreaks)));
            }
            Container.Add(OutputData);

            //XElement Configuration = new XElement("Configuration");
            //XElement BitRate = new XElement("BitRate",


            XElement Files = new XElement("FileEntries");
            int      x     = 0;

            foreach (FileEntryClass entry in file_entries)
            {
                XElement FileEnt = new XElement("FileEntry", new XAttribute("Index", entry.AdHocSort),
                                                new XElement("FileName", entry.FileName),
                                                new XElement("FilePath", entry.FilePath),
                                                new XElement("Chapter", entry.Chapter),
                                                new XElement("ChapterTitle", entry.ChapterTitle),
                                                new XElement("Title", entry.Title),
                                                new XElement("Duration", entry.Duration.TotalMilliseconds),
                                                new XElement("TrackNum", entry.TrackNum)
                                                );


                Files.Add(FileEnt);


                x++;
            }
            Container.Add(Files);
            doc.Add(Container);
            doc.Save(filename);
        }
 public AudioBookConverterMain()
 {
     InitializeComponent();
     FileList   = new SortableBindingList <FileEntryClass>();
     OutputTags = new OutputMetadata();
     cboBitRate.SelectedIndex   = 2;
     cboQuantizer.SelectedIndex = 0;
     cboUseTNS.SelectedIndex    = 0;
     GenDGV();
 }
        public static void ApplyTags(OutputMetadata tagdata, ProgressUpdate procprogress, AudioBookConverterMain _owner)
        {
            if (Owner.bgAACEncoder.CancellationPending)
            {
                return;
            }

            Owner = _owner;
            procprogress.CurrentFilename = "Writing MetaData";
            procprogress.TotalFiles      = 1;
            procprogress.CurrentFile     = 1;
            procprogress.BentoWorking    = true;
            Owner.bgAACEncoder.ReportProgress(0, procprogress);
            TagLib.File Mp4File = TagLib.File.Create(tagdata.OutputFile);

            if (tagdata.Album != null)
            {
                Mp4File.Tag.Album = tagdata.Album;
            }
            if (tagdata.AlbumSort != null)
            {
                Mp4File.Tag.AlbumSort = tagdata.AlbumSort;
            }
            if (tagdata.Composer != null)
            {
                Mp4File.Tag.Composers = tagdata.Composer.Split(';');
            }
            if (tagdata.ComposerSort != null)
            {
                Mp4File.Tag.ComposersSort = tagdata.ComposerSort.Split(';');
            }
            Mp4File.Tag.Disc      = (uint)tagdata.Disc;
            Mp4File.Tag.DiscCount = (uint)tagdata.DiscTotal;
            Mp4File.Tag.Kind      = 2;
            if (tagdata.Artist != null)
            {
                Mp4File.Tag.Performers = tagdata.Artist.Split(';');
            }
            if (tagdata.ArtistSort != null)
            {
                Mp4File.Tag.PerformersSort = tagdata.ArtistSort.Split(';');
            }
            if (tagdata.Title != null)
            {
                Mp4File.Tag.Title = tagdata.Title;
            }
            if (tagdata.TitleSort != null)
            {
                Mp4File.Tag.TitleSort = tagdata.TitleSort;
            }
            Mp4File.Tag.Track = (uint)tagdata.Track;
            Mp4File.Tag.Track = (uint)tagdata.TrackTotal;
            Mp4File.Tag.Year  = (uint)tagdata.Year;
            if (tagdata.Comment != null)
            {
                Mp4File.Tag.Comment = tagdata.Comment;
            }
            if (tagdata.Image != null)
            {
                TagLib.Picture    ipic    = new TagLib.Picture();
                TagLib.ByteVector picdata = new TagLib.ByteVector();

                picdata.Add(tagdata.Image);
                ipic.Data        = picdata;
                ipic.MimeType    = "image/jpeg";
                ipic.Type        = PictureType.FrontCover;
                ipic.Description = "Front Cover";

                Picture[] PictFrames = { ipic };
                Mp4File.Tag.Pictures = PictFrames;
            }
            Mp4File.Save();
        }
Beispiel #4
0
        public void Read(out SortableBindingList <FileEntryClass> FileEntries, out OutputMetadata OutputMetaData)
        {
            file_entries    = new SortableBindingList <FileEntryClass>();
            output_metadata = new OutputMetadata();

            XDocument doc = XDocument.Load(filename);

            var outputinfo = from outputdat in (doc.Descendants("OutputData"))
                             select new {
                OutputFile   = (string)outputdat.Element("OutputFile"),
                Album        = (string)outputdat.Element("Album"),
                AlbumSort    = (string)outputdat.Element("AlbumSort"),
                Artist       = (string)outputdat.Element("Artist"),
                ArtistSort   = (string)outputdat.Element("ArtistSort"),
                Comment      = (string)outputdat.Element("Comment"),
                Composer     = (string)outputdat.Element("Composer"),
                ComposerSort = (string)outputdat.Element("ComposerSort"),
                Disc         = outputdat.Element("Disc").Value,
                DiscTotal    = outputdat.Element("DiscTotal").Value,
                Title        = (string)outputdat.Element("Title"),
                TitleSort    = (string)outputdat.Element("TitleSort"),
                Track        = outputdat.Element("Track").Value,
                TrackTotal   = outputdat.Element("TrackTotal").Value,
                Year         = outputdat.Element("Year").Value,
                Artwork      = (string)outputdat.Element("Artwork")
            };
            var fileinfo = from filedat in (doc.Descendants("FileEntry"))
                           select new {
                AdHocSort    = filedat.Attribute("Index").Value,
                FileName     = (string)filedat.Element("FileName"),
                FilePath     = (string)filedat.Element("FilePath"),
                Chapter      = (bool)filedat.Element("Chapter"),
                ChapterTitle = (string)filedat.Element("ChapterTitle"),
                Title        = (string)filedat.Element("Title"),
                Duration     = filedat.Element("Duration").Value,
                TrackNum     = filedat.Element("TrackNum").Value
            };
            var output = outputinfo.First();

            output_metadata.Album        = output.Album;
            output_metadata.AlbumSort    = output.AlbumSort;
            output_metadata.Artist       = output.Artist;
            output_metadata.ArtistSort   = output.ArtistSort;
            output_metadata.Comment      = output.Comment;
            output_metadata.Composer     = output.Composer;
            output_metadata.ComposerSort = output.ComposerSort;
            output_metadata.Disc         = Convert.ToInt32(output.Disc);
            output_metadata.DiscTotal    = Convert.ToInt32(output.DiscTotal);
            output_metadata.OutputFile   = output.OutputFile;
            output_metadata.Title        = output.Title;
            output_metadata.TitleSort    = output.TitleSort;
            output_metadata.Track        = Convert.ToInt32(output.Track);
            output_metadata.TrackTotal   = Convert.ToInt32(output.TrackTotal);
            output_metadata.Year         = Convert.ToInt32(output.Year);
            if (output.Artwork != null)
            {
                output_metadata.Image = Convert.FromBase64String(output.Artwork);
            }
            foreach (var singlefile in fileinfo)
            {
                FileEntryClass listfile = new FileEntryClass(singlefile.FilePath);
                listfile.AdHocSort    = Convert.ToInt32(singlefile.AdHocSort);
                listfile.Chapter      = singlefile.Chapter;
                listfile.ChapterTitle = singlefile.ChapterTitle;
                listfile.Duration     = TimeSpan.FromMilliseconds(Convert.ToInt32(singlefile.Duration));
                listfile.FileName     = singlefile.FileName;
                listfile.FilePath     = singlefile.FilePath;
                listfile.Title        = singlefile.Title;
                listfile.TrackNum     = Convert.ToInt32(singlefile.TrackNum);
                file_entries.Add(listfile);
            }


            FileEntries    = file_entries;
            OutputMetaData = output_metadata;
        }