diff --git a/ChangeLog b/ChangeLog index e73e9287..64462aab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -20867,3 +20867,6 @@ * Incremented the package version to 3.6.5. 2022-03-22 Fred Gleason * Added '--by-isci' and '--dump-isci-xref' options to rdimport(1). +2022-03-22 Fred Gleason + * Modified rdimport(1) to allow the '--by-isci' option to take + a service name option. diff --git a/docs/manpages/rdimport.xml b/docs/manpages/rdimport.xml index 2d141678..0ead4dde 100644 --- a/docs/manpages/rdimport.xml +++ b/docs/manpages/rdimport.xml @@ -82,15 +82,19 @@ - + [=service-name] Determine the target cart number by looking it up in the ISCI cross-reference table, using the ISCI code provided by the or - options. Useful for - importing sets of copy-split audio. + options. If + service-name is given, prepend the + Program Code for the specified service followed by an underscore + to the ISCI code when doing the cart number lookup in the ISCI + cross-reference table. Useful for importing sets of copy-split + audio. This option is mutually exclusive with the diff --git a/utils/rdimport/rdimport.cpp b/utils/rdimport/rdimport.cpp index c547e955..869b3006 100644 --- a/utils/rdimport/rdimport.cpp +++ b/utils/rdimport/rdimport.cpp @@ -103,6 +103,7 @@ MainObject::MainObject(QObject *parent) import_mail_per_file=false; import_journal=NULL; import_dump_isci_xref=false; + import_by_isci_program_code=""; import_by_isci=false; // @@ -181,6 +182,16 @@ MainObject::MainObject(QObject *parent) } if(rda->cmdSwitch()->key(i)=="--by-isci") { import_by_isci=true; + if(!rda->cmdSwitch()->value(i).isEmpty()) { + RDSvc *svc=new RDSvc(rda->cmdSwitch()->value(i), + rda->station(),rda->config(),this); + if(!svc->exists()) { + Log(LOG_ERR,QString("rdimport: no such service\n")); + ErrorExit(RDApplication::ExitNoSvc); + } + import_by_isci_program_code=svc->programCode(); + delete svc; + } rda->cmdSwitch()->setProcessed(i,true); } if(rda->cmdSwitch()->key(i)=="--startdate-offset") { @@ -488,6 +499,10 @@ MainObject::MainObject(QObject *parent) Log(LOG_ERR,QString().sprintf("rdimport: --log-filename and --log-syslog are mutually exclusive\n")); ErrorExit(RDApplication::ExitInvalidOption); } + if((import_cart_number>0)&&import_by_isci) { + Log(LOG_ERR,QString().sprintf("rdimport: --to-cart and --by-isci are mutually exclusive\n")); + ErrorExit(RDApplication::ExitInvalidOption); + } import_cut_markers=new MarkerSet(); import_cut_markers->loadMarker(rda->cmdSwitch(),"cut"); @@ -1161,7 +1176,10 @@ MainObject::Result MainObject::ImportFile(const QString &filename, delete effective_group; return MainObject::FileBad; } - } + } + if(!import_by_isci_program_code.isEmpty()) { + isci=import_by_isci_program_code+"_"+isci; + } RDWaveData *wd=import_isci_xref.value(isci,NULL); if(wd==NULL) { *cartnum=0; @@ -1198,8 +1216,6 @@ MainObject::Result MainObject::ImportFile(const QString &filename, if(import_string_title.isEmpty()) { wavedata->setTitle(import_isci_xref.value(isci)->title()); } - printf("ISCI: %s\n",isci.toUtf8().constData()); - printf("CARTNUM: %06u\n",*cartnum); } else { // diff --git a/utils/rdimport/rdimport.h b/utils/rdimport/rdimport.h index 8edde656..413d51aa 100644 --- a/utils/rdimport/rdimport.h +++ b/utils/rdimport/rdimport.h @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -123,8 +124,6 @@ class MainObject : public QObject int import_segue_length; bool import_send_mail; bool import_mail_per_file; - bool import_dump_isci_xref; - bool import_by_isci; unsigned import_cart_number; QString import_metadata_pattern; QString import_output_pattern; @@ -164,8 +163,10 @@ class MainObject : public QObject MarkerSet *import_fadedown_marker; MarkerSet *import_fadeup_marker; Journal *import_journal; - // QMap import_isci_xref; QMap import_isci_xref; + bool import_dump_isci_xref; + bool import_by_isci; + QString import_by_isci_program_code; };