示例#1
0
        /// <summary>
        ///   Queries FreeDB for the Audio CD inserted
        /// </summary>
        /// <param name = "drive"></param>
        private void QueryFreeDB(char drive)
        {
            log.Trace(">>>");
            SetStatusLabel(localisation.ToString("Conversion", "FreeDBAccess"));
            string       discId  = string.Empty;
            CDInfoDetail MusicCD = new CDInfoDetail();
            int          driveID = Util.Drive2BassID(drive);

            if (driveID < 0)
            {
                SetStatusLabel("");
                return;
            }
            log.Info("Starting FreeDB Lookup");
            _main.Cursor = Cursors.WaitCursor;
            bindingList[driveID].Clear();
            try
            {
                FreeDBQuery freedb = new FreeDBQuery();
                freedb.Connect();
                CDInfo[] cds = freedb.GetDiscInfo(drive);
                if (cds != null)
                {
                    log.Debug("FreeDB: Found {0} matching discs.", cds.Length);
                    if (cds.Length == 1)
                    {
                        MusicCD = freedb.GetDiscDetails(cds[0].Category, cds[0].DiscId);
                    }
                    else
                    {
                        FreeDBMultiCDSelect multiCDSelect = new FreeDBMultiCDSelect();
                        multiCDSelect.CDList.ValueMember   = "DiscId";
                        multiCDSelect.CDList.DisplayMember = "Title";
                        multiCDSelect.CDList.DataSource    = cds;

                        if (multiCDSelect.ShowDialog() == DialogResult.OK)
                        {
                            MusicCD = freedb.GetDiscDetails(cds[0].Category, multiCDSelect.DiscID);
                        }
                        else
                        {
                            MusicCD = null;
                        }
                    }
                }
                else
                {
                    log.Debug("FreeDB: Disc could not be located in FreeDB.");
                    MusicCD = null;
                }

                freedb.Disconnect();
            }
            catch (System.Net.WebException webEx)
            {
                if (webEx.Status == WebExceptionStatus.Timeout)
                {
                    log.Info("FreeDB: Timeout querying FreeDB. No Data returned for CD");
                    MusicCD = null;
                }
                else
                {
                    log.Error("FreeDB: Exception querying Disc. {0} {1}", webEx.Message, webEx.StackTrace);
                    MusicCD = null;
                }
            }
            catch (Exception ex)
            {
                log.Error("FreeDB: Exception querying Disc. {0} {1}", ex.Message, ex.StackTrace);
                MusicCD = null;
            }
            log.Info("Finished FreeDB Lookup");
            _main.Cursor = Cursors.Default;

            if (MusicCD != null)
            {
                tbAlbumArtist.Text = MusicCD.Artist;
                tbAlbum.Text       = MusicCD.Title;
                tbGenre.Text       = MusicCD.Genre;
                tbYear.Text        = MusicCD.Year.ToString();

                foreach (CDTrackDetail trackDetail in MusicCD.Tracks)
                {
                    if (trackDetail.Artist == null)
                    {
                        trackDetail.Artist = MusicCD.Artist;
                    }

                    bindingList[driveID].Add(trackDetail);
                }
            }
            else
            {
                int numTracks = BassCd.BASS_CD_GetTracks(driveID);
                for (int i = 0; i < numTracks; i++)
                {
                    CDTrackDetail trackDetail = new CDTrackDetail();
                    trackDetail.Track = i + 1;
                    trackDetail.Title = string.Format("Track{0}", (i + 1).ToString().PadLeft(2, '0'));
                    bindingList[driveID].Add(trackDetail);
                }
            }
            CheckRows(true);
            (dataGridViewRip.Columns[0].HeaderCell as DatagridViewCheckBoxHeaderCell).Checked = true;
            SetStatusLabel("");

            log.Trace("<<<");
        }
示例#2
0
        /// <summary>
        ///   Queries FreeDB for the Audio CD inserted
        /// </summary>
        /// <param name = "drive"></param>
        private void QueryFreeDB(char drive)
        {
            log.Trace(">>>");
              SetStatusLabel(localisation.ToString("Conversion", "FreeDBAccess"));
              string discId = string.Empty;
              CDInfoDetail MusicCD = new CDInfoDetail();
              int driveID = Util.Drive2BassID(drive);
              if (driveID < 0)
              {
            SetStatusLabel("");
            return;
              }
              log.Info("Starting FreeDB Lookup");
              _main.Cursor = Cursors.WaitCursor;
              bindingList[driveID].Clear();
              try
              {
            FreeDBQuery freedb = new FreeDBQuery();
            freedb.Connect();
            CDInfo[] cds = freedb.GetDiscInfo(drive);
            if (cds != null)
            {
              log.Debug("FreeDB: Found {0} matching discs.", cds.Length);
              if (cds.Length == 1)
              {
            MusicCD = freedb.GetDiscDetails(cds[0].Category, cds[0].DiscId);
              }
              else
              {
            FreeDBMultiCDSelect multiCDSelect = new FreeDBMultiCDSelect();
            multiCDSelect.CDList.ValueMember = "DiscId";
            multiCDSelect.CDList.DisplayMember = "Title";
            multiCDSelect.CDList.DataSource = cds;

            if (multiCDSelect.ShowDialog() == DialogResult.OK)
            {
              MusicCD = freedb.GetDiscDetails(cds[0].Category, multiCDSelect.DiscID);
            }
            else
            {
              MusicCD = null;
            }
              }
            }
            else
            {
              log.Debug("FreeDB: Disc could not be located in FreeDB.");
              MusicCD = null;
            }

            freedb.Disconnect();
              }
              catch (System.Net.WebException webEx)
              {
            if (webEx.Status == WebExceptionStatus.Timeout)
            {
              log.Info("FreeDB: Timeout querying FreeDB. No Data returned for CD");
              MusicCD = null;
            }
            else
            {
              log.Error("FreeDB: Exception querying Disc. {0} {1}", webEx.Message, webEx.StackTrace);
              MusicCD = null;
            }
              }
              catch (Exception ex)
              {
            log.Error("FreeDB: Exception querying Disc. {0} {1}", ex.Message, ex.StackTrace);
            MusicCD = null;
              }
              log.Info("Finished FreeDB Lookup");
              _main.Cursor = Cursors.Default;

              if (MusicCD != null)
              {
            tbAlbumArtist.Text = MusicCD.Artist;
            tbAlbum.Text = MusicCD.Title;
            tbGenre.Text = MusicCD.Genre;
            tbYear.Text = MusicCD.Year.ToString();

            foreach (CDTrackDetail trackDetail in MusicCD.Tracks)
            {
              if (trackDetail.Artist == null)
            trackDetail.Artist = MusicCD.Artist;

              bindingList[driveID].Add(trackDetail);
            }
              }
              else
              {
            int numTracks = BassCd.BASS_CD_GetTracks(driveID);
            for (int i = 0; i < numTracks; i++)
            {
              CDTrackDetail trackDetail = new CDTrackDetail();
              trackDetail.Track = i + 1;
              trackDetail.Title = string.Format("Track{0}", (i + 1).ToString().PadLeft(2, '0'));
              bindingList[driveID].Add(trackDetail);
            }
              }
              CheckRows(true);
              (dataGridViewRip.Columns[0].HeaderCell as DatagridViewCheckBoxHeaderCell).Checked = true;
              SetStatusLabel("");

              log.Trace("<<<");
        }