/// <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("<<<"); }
/// <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("<<<"); }