Example #1
0
        public bool GetCDInformation(CCDMetadata data, bool cdinfo, bool cover, bool lyrics)
        {
            if (Options.CoversSearch == CTDBCoversSearch.None)
                cover = false;

            if (!cdinfo && !cover)
                return false;

            var TOC = new CDImageLayout();
            for (int i = 0; i < data.NumberOfTracks; i++)
            {
                uint start = data.GetTrackStartPosition(i);
                uint next = data.GetTrackEndPosition(i);
                TOC.AddTrack(new CDTrack(
                    (uint)i + 1,
                    start,
                    next - start,
                    !data.GetTrackDataTrack(i),
                    data.GetTrackPreemphasis(i)));
            }
            TOC[1][0].Start = 0U;

            var ctdb = new CUEToolsDB(TOC, null);
            var form = new CUETools.CTDB.EACPlugin.FormMetadata(ctdb, "EAC" + data.HostVersion + " CTDB 2.1.4", cdinfo, cover);
            form.ShowDialog();
            var meta = form.Meta;
            if (meta == null)
                return false;

            if (cdinfo)
            {
                int year, disccount, discnumber;
                string extra = meta.extra ?? "";
                if (!string.IsNullOrEmpty(meta.discname))
                    extra += "Disc name: " + meta.discname + "\r\n";
                if (!string.IsNullOrEmpty(meta.infourl))
                    extra += "Info URL: " + meta.infourl + "\r\n";
                if (!string.IsNullOrEmpty(meta.barcode))
                    extra += "Barcode: " + meta.barcode + "\r\n";
                if (!string.IsNullOrEmpty(meta.releasedate))
                    extra += "Release date: " + meta.releasedate + "\r\n";
                if (!string.IsNullOrEmpty(meta.country))
                    extra += "Release country: " + meta.country + "\r\n";
                if (meta.label != null)
                    foreach (var label in meta.label)
                    {
                        if (!string.IsNullOrEmpty(label.name))
                            extra += "Release label: " + label.name + "\r\n";
                        if (!string.IsNullOrEmpty(label.catno))
                            extra += "Release catalog#: " + label.catno + "\r\n";
                    }
                data.Year = meta.year != null && int.TryParse(meta.year, out year) ? year : -1;
                data.TotalNumberOfCDs = meta.disccount != null && int.TryParse(meta.disccount, out disccount) ? disccount : 1;
                data.CDNumber = meta.discnumber != null && int.TryParse(meta.discnumber, out discnumber) ? discnumber : 1;
                data.FirstTrackNumber = 1;
                data.AlbumTitle = meta.album ?? "";
                data.AlbumArtist = meta.artist ?? "";
                data.MP3V2Type = meta.genre ?? "";
                data.CDDBMusicType = GetFreeDBMusicType(meta);
                data.MP3Type = GetMP3MusicType(data.CDDBMusicType);
                data.ExtendedDiscInformation = extra;
                data.Revision = -1; // TODO: meta.id? rock/ffffffff/16?
                if (meta.track != null)
                {
                    int firstAudio = meta.track.Length == TOC.AudioTracks ? TOC.FirstAudio - 1 : 0;
                    for (int track = 0; track < data.NumberOfTracks; track++)
                    {
                        if (track - firstAudio >= 0 && track - firstAudio < meta.track.Length)
                        {
                            data.SetTrackTitle(track, meta.track[track - firstAudio].name ?? "");
                            data.SetTrackArtist(track, meta.track[track - firstAudio].artist ?? meta.artist ?? "");
                            data.SetExtendedTrackInformation(track, meta.track[track - firstAudio].extra ?? "");
                        }
                        else if (!TOC[track + 1].IsAudio)
                        {
                            data.SetTrackTitle(track, "[data track]");
                            data.SetTrackArtist(track, meta.artist ?? "");
                            data.SetExtendedTrackInformation(track, "");
                        }
                        else
                        {
                            data.SetTrackTitle(track, "");
                            data.SetTrackArtist(track, meta.artist ?? "");
                            data.SetExtendedTrackInformation(track, "");
                        }
                        data.SetTrackComposer(track, "");
                    }
                }
            }

            if (cover)
            {                
                data.CoverImage = null;
                data.CoverImageURL = "";
                if (form.Image != null)
                {
                    data.CoverImage = form.Image.Data;
                    data.CoverImageURL = form.Image.URL;
                }
            }

            return true;
        }
Example #2
0
        public bool GetCDInformation(CCDMetadata data, bool cdinfo, bool cover, bool lyrics)
        {
            if (Options.CoversSearch == CTDBCoversSearch.None)
            {
                cover = false;
            }

            if (!cdinfo && !cover)
            {
                return(false);
            }

            var TOC = new CDImageLayout();

            for (int i = 0; i < data.NumberOfTracks; i++)
            {
                uint start = data.GetTrackStartPosition(i);
                uint next  = data.GetTrackEndPosition(i);
                TOC.AddTrack(new CDTrack(
                                 (uint)i + 1,
                                 start,
                                 next - start,
                                 !data.GetTrackDataTrack(i),
                                 data.GetTrackPreemphasis(i)));
            }
            TOC[1][0].Start = 0U;

            var ctdb = new CUEToolsDB(TOC, null);
            var form = new CUETools.CTDB.EACPlugin.FormMetadata(ctdb, "EAC" + data.HostVersion + " CTDB 2.1.8", cdinfo, cover);

            form.ShowDialog();
            var meta = form.Meta;

            if (meta == null)
            {
                return(false);
            }

            if (cdinfo)
            {
                int    year, disccount, discnumber;
                string extra = meta.extra ?? "";
                if (!string.IsNullOrEmpty(meta.discname))
                {
                    extra += "Disc name: " + meta.discname + "\r\n";
                }
                if (!string.IsNullOrEmpty(meta.infourl))
                {
                    extra += "Info URL: " + meta.infourl + "\r\n";
                }
                if (!string.IsNullOrEmpty(meta.barcode))
                {
                    extra += "Barcode: " + meta.barcode + "\r\n";
                }
                if (meta.release != null)
                {
                    foreach (var release in meta.release)
                    {
                        if (!string.IsNullOrEmpty(release.date))
                        {
                            extra += "Release date: " + release.date + "\r\n";
                        }
                        if (!string.IsNullOrEmpty(release.country))
                        {
                            extra += "Release country: " + release.country + "\r\n";
                        }
                    }
                }
                if (meta.label != null)
                {
                    foreach (var label in meta.label)
                    {
                        if (!string.IsNullOrEmpty(label.name))
                        {
                            extra += "Release label: " + label.name + "\r\n";
                        }
                        if (!string.IsNullOrEmpty(label.catno))
                        {
                            extra += "Release catalog#: " + label.catno + "\r\n";
                        }
                    }
                }
                data.Year                    = meta.year != null && int.TryParse(meta.year, out year) ? year : -1;
                data.TotalNumberOfCDs        = meta.disccount != null && int.TryParse(meta.disccount, out disccount) ? disccount : 1;
                data.CDNumber                = meta.discnumber != null && int.TryParse(meta.discnumber, out discnumber) ? discnumber : 1;
                data.FirstTrackNumber        = 1;
                data.AlbumTitle              = meta.album ?? "";
                data.AlbumArtist             = meta.artist ?? "";
                data.MP3V2Type               = meta.genre ?? "";
                data.CDDBMusicType           = GetFreeDBMusicType(meta);
                data.MP3Type                 = GetMP3MusicType(data.CDDBMusicType);
                data.ExtendedDiscInformation = extra;
                data.Revision                = -1; // TODO: meta.id? rock/ffffffff/16?
                if (meta.track != null)
                {
                    int firstAudio = meta.track.Length == TOC.AudioTracks ? TOC.FirstAudio - 1 : 0;
                    for (int track = 0; track < data.NumberOfTracks; track++)
                    {
                        if (track - firstAudio >= 0 && track - firstAudio < meta.track.Length)
                        {
                            data.SetTrackTitle(track, meta.track[track - firstAudio].name ?? "");
                            data.SetTrackArtist(track, meta.track[track - firstAudio].artist ?? meta.artist ?? "");
                            data.SetExtendedTrackInformation(track, meta.track[track - firstAudio].extra ?? "");
                        }
                        else if (!TOC[track + 1].IsAudio)
                        {
                            data.SetTrackTitle(track, "[data track]");
                            data.SetTrackArtist(track, meta.artist ?? "");
                            data.SetExtendedTrackInformation(track, "");
                        }
                        else
                        {
                            data.SetTrackTitle(track, "");
                            data.SetTrackArtist(track, meta.artist ?? "");
                            data.SetExtendedTrackInformation(track, "");
                        }
                        data.SetTrackComposer(track, "");
                    }
                }
            }

            if (cover)
            {
                data.CoverImage    = null;
                data.CoverImageURL = "";
                if (form.Image != null)
                {
                    data.CoverImage    = form.Image.Data;
                    data.CoverImageURL = form.Image.URL;
                }
            }

            return(true);
        }