2022-08-30 Fred Gleason <fredg@paravelsystems.com>

* Modified the full disc ripper in rdlibrary(1) to use CD-Text.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason
2022-08-30 18:32:25 -04:00
parent 9587f4300e
commit e7a03c8b52
36 changed files with 1062 additions and 164 deletions

View File

@@ -2,7 +2,7 @@
//
// CD Disk Ripper Dialog for Rivendell.
//
// (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2002-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@@ -122,8 +122,8 @@ DiskRipper::DiskRipper(QString *filter,QString *group,QString *schedcode,
rip_apply_box->setChecked(true);
rip_apply_box->setDisabled(true);
rip_apply_label=new QLabel(rip_apply_box,tr("Apply")+" "+
rip_disc_lookup->sourceName()+" "+
tr("Values to Carts"),this);
tr("Metadata")+" "+
tr("Values to Carts"),this);
rip_apply_label->setFont(labelFont());
rip_apply_label->setAlignment(Qt::AlignLeft);
rip_apply_box->setChecked(false);
@@ -769,7 +769,7 @@ void DiskRipper::mediaChangedData()
rip_cutnames.push_back(QString());
rip_end_track.push_back(-1);
rip_wave_datas.push_back(new RDWaveData());
rip_wave_datas.back()->setTitle(tr("Track")+QString().sprintf(" %d",rip_cdrom->tracks()-i+1));
rip_wave_datas.back()->setTitle(tr("Track")+QString().sprintf(" %d",i));
l=new RDListViewItem(rip_track_list);
l->setText(0,QString().sprintf("%d",i));
if(rip_cdrom->isAudio(i)) {
@@ -779,6 +779,7 @@ void DiskRipper::mediaChangedData()
l->setText(4,tr("Data Track"));
}
l->setText(1,RDGetTimeLength(rip_cdrom->trackLength(i)));
l->setText(2,rip_wave_datas.back()->title());
}
rip_disc_record.clear();
rip_cdrom->setCddbRecord(&rip_disc_record);
@@ -803,40 +804,63 @@ void DiskRipper::stoppedData()
void DiskRipper::lookupDoneData(RDDiscLookup::Result result,
const QString &err_msg)
const QString &err_msg)
{
RDDiscRecord::DataSource src=RDDiscRecord::LastSource;
if(rip_disc_record.hasData(RDDiscRecord::LocalSource)) {
src=RDDiscRecord::LocalSource;
}
else {
if(rip_disc_record.hasData(RDDiscRecord::RemoteSource)) {
src=RDDiscRecord::RemoteSource;
}
else {
rip_apply_box->hide();
rip_apply_label->hide();
rip_track=-1;
return; // Apply no metadata
}
}
switch(result) {
case RDDiscLookup::ExactMatch:
if(rip_cdrom->status()!=RDCdPlayer::Ok) {
rip_track=-1;
return;
}
rip_artist_edit->setText(rip_disc_record.discArtist());
rip_album_edit->setText(rip_disc_record.discAlbum());
rip_artist_edit->setText(rip_disc_record.discArtist(src));
rip_album_edit->setText(rip_disc_record.discAlbum(src));
rip_other_edit->setText(rip_disc_record.discExtended());
for(int i=0;i<rip_disc_record.tracks();i++) {
rip_track_list->findItem(QString().sprintf("%d",i+1),0)->
setText(2,rip_disc_record.trackTitle(i));
setText(2,rip_disc_record.trackTitle(src,i));
rip_track_list->findItem(QString().sprintf("%d",i+1),0)->
setText(3,rip_disc_record.trackExtended(i));
rip_wave_datas[i]->setTitle(rip_disc_record.trackTitle(i));
rip_wave_datas[i]->setArtist(rip_disc_record.discArtist());
rip_wave_datas[i]->setAlbum(rip_disc_record.discAlbum());
rip_wave_datas[i]->setLabel(rip_disc_record.discLabel());
rip_wave_datas[rip_wave_datas.size()-i-1]->setTitle(rip_disc_record.trackTitle(src,i));
rip_wave_datas[rip_wave_datas.size()-i-1]->setArtist(rip_disc_record.discArtist(src));
rip_wave_datas[rip_wave_datas.size()-i-1]->setAlbum(rip_disc_record.discAlbum(src));
rip_wave_datas[rip_wave_datas.size()-i-1]->setLabel(rip_disc_record.discLabel());
}
rip_apply_box->setChecked(true);
rip_apply_box->setEnabled(true);
rip_apply_label->setEnabled(true);
rip_browser_button->setDisabled(rip_disc_lookup->sourceUrl().isNull());
rip_browser_label->setDisabled(rip_disc_lookup->sourceUrl().isNull());
rip_apply_box->show();
rip_apply_label->show();
break;
case RDDiscLookup::NoMatch:
rip_apply_box->hide();
rip_apply_label->hide();
rip_track=-1;
break;
case RDDiscLookup::LookupError:
QMessageBox::warning(this,"RDLibrary - "+rip_disc_lookup->sourceName()+
" "+tr("Lookup Error"),err_msg);
rip_apply_box->hide();
rip_apply_label->hide();
rip_track=-1;
break;
}
@@ -1061,7 +1085,7 @@ void DiskRipper::RipTrack(int track,int end_track,QString cutname,QString title)
runImport(rda->user()->name(),rda->user()->password(),
&audio_conv_err))) {
case RDAudioImport::ErrorOk:
cart->setMetadata(rip_wave_datas[track-1]);
cart->setMetadata(rip_wave_datas[rip_wave_datas.size()-track]);
cut->setDescription(rip_wave_datas[track-1]->title());
cut->setIsrc(rip_disc_record.isrc(rip_track_number-1));
cut->setRecordingMbId(rip_disc_record.trackRecordingMbId(rip_track_number-1));
@@ -1141,6 +1165,7 @@ QString DiskRipper::BuildTrackName(int start_track,int end_track) const
}
item=(RDListViewItem *)item->nextSibling();
}
return ret;
}