mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-24 16:41:40 +02:00
2017-10-16 Fred Gleason <fredg@paravelsystems.com>
* Implemented '%k', '%K', '%q' and '%Q' metadata wildcards for rdimport(1).
This commit is contained in:
parent
9a5db7b408
commit
1dade3e38e
@ -16162,3 +16162,6 @@
|
||||
2017-10-16 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Fixed a bug in 'RDCut::autoSegue()' that caused an error when
|
||||
setting segues by level [Github issue #000182].
|
||||
2017-10-16 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Implemented '%k', '%K', '%q' and '%Q' metadata wildcards for
|
||||
rdimport(1).
|
||||
|
@ -294,6 +294,22 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>%k</userinput></term>
|
||||
<listitem>
|
||||
<para>Time component of the cut start date/time, in
|
||||
format <userinput>HH:MM:SS</userinput></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>%K</userinput></term>
|
||||
<listitem>
|
||||
<para>Time component of the cut end date/time, in
|
||||
format <userinput>HH:MM:SS</userinput></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>%l</userinput></term>
|
||||
<listitem>
|
||||
@ -329,6 +345,29 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>%q</userinput></term>
|
||||
<listitem>
|
||||
<para>Date component of the cut start date/time, in
|
||||
format <userinput>YYYY-MM-DD</userinput></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>%Q</userinput></term>
|
||||
<listitem>
|
||||
<para>Date component of the cut end date/time, in
|
||||
format <userinput>YYYY-MM-DD</userinput></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>%l</userinput></term>
|
||||
<listitem>
|
||||
<para>Album</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>%r</userinput></term>
|
||||
<listitem>
|
||||
|
@ -17,13 +17,13 @@ Now Next Field
|
||||
%h %H Event length (in milliseconds)
|
||||
%i %I Cut Description
|
||||
%j %J Cut Number
|
||||
%k %K [Unassigned]
|
||||
%k %K Start [%k]/end [%K] time for rdimport(1) [HH:MM:SS]
|
||||
%l %L Album
|
||||
%m %M Composer
|
||||
%n %N The Rivendell cart number
|
||||
%o %O Outcue
|
||||
%p %P Publisher
|
||||
%q %Q [Unassigned]
|
||||
%q %Q Start [%q]/end [%Q] date for rdimport(1) [YYYY-MM-DD]
|
||||
%r %R Conductor
|
||||
%s %S Song ID
|
||||
%t %T Title
|
||||
|
@ -806,6 +806,7 @@ QDate RDWaveData::startDate() const
|
||||
void RDWaveData::setStartDate(const QDate &date)
|
||||
{
|
||||
data_start_date=date;
|
||||
data_datetime_set=true;
|
||||
}
|
||||
|
||||
|
||||
@ -818,6 +819,13 @@ QTime RDWaveData::startTime() const
|
||||
void RDWaveData::setStartTime(const QTime &time)
|
||||
{
|
||||
data_start_time=time;
|
||||
data_datetime_set=true;
|
||||
}
|
||||
|
||||
|
||||
QDateTime RDWaveData::startDateTime() const
|
||||
{
|
||||
return QDateTime(data_start_date,data_start_time);
|
||||
}
|
||||
|
||||
|
||||
@ -854,6 +862,7 @@ QDate RDWaveData::endDate() const
|
||||
void RDWaveData::setEndDate(const QDate &date)
|
||||
{
|
||||
data_end_date=date;
|
||||
data_datetime_set=true;
|
||||
}
|
||||
|
||||
|
||||
@ -866,6 +875,13 @@ QTime RDWaveData::endTime() const
|
||||
void RDWaveData::setEndTime(const QTime &time)
|
||||
{
|
||||
data_end_time=time;
|
||||
data_datetime_set=true;
|
||||
}
|
||||
|
||||
|
||||
QDateTime RDWaveData::endDateTime() const
|
||||
{
|
||||
return QDateTime(data_end_date,data_end_time);
|
||||
}
|
||||
|
||||
|
||||
@ -929,6 +945,24 @@ void RDWaveData::setPlayGain(int lvl)
|
||||
}
|
||||
|
||||
|
||||
bool RDWaveData::checkDateTimes()
|
||||
{
|
||||
if(data_datetime_set) {
|
||||
if(startDateTime()<endDateTime()) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
setStartDate(QDate());
|
||||
setEndDate(QDate());
|
||||
setStartTime(QTime());
|
||||
setEndTime(QTime());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
QString RDWaveData::dump() const
|
||||
{
|
||||
QString ret="";
|
||||
@ -1072,6 +1106,7 @@ QString RDWaveData::dump() const
|
||||
void RDWaveData::clear()
|
||||
{
|
||||
data_metadata_found=false;
|
||||
data_datetime_set=false;
|
||||
data_cart_number=0;
|
||||
data_cart_type=RDWaveData::AudioType;
|
||||
data_cut_number=0;
|
||||
|
@ -105,7 +105,6 @@ class RDWaveData
|
||||
void setOutCue(const QString &str);
|
||||
RDWaveData::EndType endType() const;
|
||||
void setEndType(RDWaveData::EndType type);
|
||||
|
||||
int forcedLength() const;
|
||||
void setForcedLength(int msecs);
|
||||
int averageLength() const;
|
||||
@ -132,7 +131,6 @@ class RDWaveData
|
||||
void setOwner(const QString &str);
|
||||
QDateTime metadataDatetime() const;
|
||||
void setMetadataDatetime(const QDateTime &dt);
|
||||
|
||||
bool dayOfWeek(int dow) const;
|
||||
void setDayOfWeek(int dow,bool state);
|
||||
int weight() const;
|
||||
@ -173,10 +171,12 @@ class RDWaveData
|
||||
void setStartDate(const QDate &date);
|
||||
QTime startTime() const;
|
||||
void setStartTime(const QTime &time);
|
||||
QDateTime startDateTime() const;
|
||||
QDate endDate() const;
|
||||
void setEndDate(const QDate &date);
|
||||
QTime endTime() const;
|
||||
void setEndTime(const QTime &time);
|
||||
QDateTime endDateTime() const;
|
||||
QTime daypartStartTime() const;
|
||||
void setDaypartStartTime(const QTime &time);
|
||||
QTime daypartEndTime() const;
|
||||
@ -187,6 +187,7 @@ class RDWaveData
|
||||
void setAudioSettings(const RDSettings &settings);
|
||||
int playGain() const;
|
||||
void setPlayGain(int lvl);
|
||||
bool checkDateTimes();
|
||||
QString dump() const;
|
||||
void clear();
|
||||
static QString endTypeText(EndType type);
|
||||
@ -195,6 +196,7 @@ class RDWaveData
|
||||
|
||||
private:
|
||||
bool data_metadata_found;
|
||||
bool data_datetime_set;
|
||||
unsigned data_cart_number;
|
||||
CartType data_cart_type;
|
||||
int data_cut_number;
|
||||
|
@ -1039,6 +1039,12 @@ MainObject::Result MainObject::ImportFile(const QString &filename,
|
||||
QString groupname=effective_group->name();
|
||||
found_cart=RunPattern(import_metadata_pattern,RDGetBasePart(filename),
|
||||
wavedata,&groupname);
|
||||
if(!wavedata->checkDateTimes()) {
|
||||
PrintLogDateTime(stderr);
|
||||
fprintf(stderr,
|
||||
" File \"%s\": End date/time cannot be prior to start date/time, ignoring...\n",
|
||||
(const char *)filename.utf8());
|
||||
}
|
||||
if(groupname!=effective_group->name()) {
|
||||
delete effective_group;
|
||||
effective_group=new RDGroup(groupname);
|
||||
@ -1652,6 +1658,8 @@ bool MainObject::RunPattern(const QString &pattern,const QString &filename,
|
||||
QString value;
|
||||
QChar delimiter;
|
||||
bool found_cartnum=false;
|
||||
QTime time;
|
||||
QDate date;
|
||||
|
||||
//
|
||||
// Initialize Pattern Parser
|
||||
@ -1672,85 +1680,117 @@ bool MainObject::RunPattern(const QString &pattern,const QString &filename,
|
||||
if(macro_active) {
|
||||
if((filename.at(i)==delimiter)||(i==filename.length())) {
|
||||
switch(field) {
|
||||
case 'a':
|
||||
wavedata->setArtist(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
case 'a':
|
||||
wavedata->setArtist(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
|
||||
case 'b':
|
||||
wavedata->setLabel(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
case 'b':
|
||||
wavedata->setLabel(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
wavedata->setClient(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
case 'c':
|
||||
wavedata->setClient(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
|
||||
case 'e':
|
||||
wavedata->setAgency(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
case 'e':
|
||||
wavedata->setAgency(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
|
||||
case 'g':
|
||||
*groupname=value;
|
||||
break;
|
||||
case 'g':
|
||||
*groupname=value;
|
||||
break;
|
||||
|
||||
case 'i':
|
||||
wavedata->setDescription(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
case 'i':
|
||||
wavedata->setDescription(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
|
||||
case 'l':
|
||||
wavedata->setAlbum(value);
|
||||
case 'k':
|
||||
time=QTime::fromString(value);
|
||||
if(time.isValid()) {
|
||||
wavedata->setStartTime(time);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
wavedata->setComposer(value);
|
||||
case 'K':
|
||||
time=QTime::fromString(value);
|
||||
if(time.isValid()) {
|
||||
wavedata->setEndTime(time);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
wavedata->setCutId(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
found_cartnum=true;
|
||||
break;
|
||||
case 'l':
|
||||
wavedata->setAlbum(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
wavedata->setOutCue(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
case 'm':
|
||||
wavedata->setComposer(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
wavedata->setPublisher(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
case 'n':
|
||||
wavedata->setCutId(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
found_cartnum=true;
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
wavedata->setConductor(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
case 'o':
|
||||
wavedata->setOutCue(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
|
||||
case 's':
|
||||
wavedata->setTmciSongId(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
case 'p':
|
||||
wavedata->setPublisher(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
|
||||
case 't':
|
||||
wavedata->setTitle(value);
|
||||
case 'q':
|
||||
date=QDate::fromString(value,Qt::ISODate);
|
||||
if(date.isValid()) {
|
||||
wavedata->setStartDate(date);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'u':
|
||||
wavedata->setUserDefined(value);
|
||||
case 'Q':
|
||||
date=QDate::fromString(value,Qt::ISODate);
|
||||
if(date.isValid()) {
|
||||
wavedata->setEndDate(date);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'y':
|
||||
wavedata->setReleaseYear(value.toInt());
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
case 'r':
|
||||
wavedata->setConductor(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
|
||||
case 's':
|
||||
wavedata->setTmciSongId(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
|
||||
case 't':
|
||||
wavedata->setTitle(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
|
||||
case 'u':
|
||||
wavedata->setUserDefined(value);
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
|
||||
case 'y':
|
||||
wavedata->setReleaseYear(value.toInt());
|
||||
wavedata->setMetadataFound(true);
|
||||
break;
|
||||
}
|
||||
value="";
|
||||
if((ptr>=pattern.length())||(i==filename.length())) {
|
||||
@ -1792,6 +1832,7 @@ bool MainObject::RunPattern(const QString &pattern,const QString &filename,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return found_cartnum;
|
||||
}
|
||||
|
||||
@ -1812,11 +1853,15 @@ bool MainObject::VerifyPattern(const QString &pattern)
|
||||
case 'e':
|
||||
case 'g':
|
||||
case 'i':
|
||||
case 'k':
|
||||
case 'K':
|
||||
case 'l':
|
||||
case 'm':
|
||||
case 'n':
|
||||
case 'o':
|
||||
case 'p':
|
||||
case 'q':
|
||||
case 'Q':
|
||||
case 'r':
|
||||
case 's':
|
||||
case 't':
|
||||
|
Loading…
x
Reference in New Issue
Block a user