mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-24 08:31:41 +02:00
2017-03-01 Fred Gleason <fredg@paravelsystems.com>
* Fixed a bug in 'rdlibrary/audio_cart.cpp' where the 'Conductor' failed to be imported from RDXL chunks. * Added a 'songId' field to the cart metadata XML.
This commit is contained in:
parent
0a934357c4
commit
b41fb8c657
@ -15617,3 +15617,7 @@
|
||||
* Refactored the 'RDCart::xml()' method to use a SQL query.
|
||||
* Refactored the Cart and Cut web methods in 'web/rdxport/carts.cpp'
|
||||
to use SQL queries.
|
||||
2017-03-01 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Fixed a bug in 'rdlibrary/audio_cart.cpp' where the 'Conductor'
|
||||
failed to be imported from RDXL chunks.
|
||||
* Added a 'songId' field to the cart metadata XML.
|
||||
|
@ -1320,50 +1320,51 @@ QString RDCart::xmlSql(bool include_cuts)
|
||||
"CART.OWNER,"+ // 24
|
||||
"CART.METADATA_DATETIME,"+ // 25
|
||||
"CART.CONDUCTOR,"+ // 26
|
||||
"CART.MACROS"; // 27
|
||||
"CART.MACROS,"+ // 27
|
||||
"CART.SONG_ID "; // 28
|
||||
if(include_cuts) {
|
||||
sql+=QString(",")+
|
||||
"CUTS.CUT_NAME,"+ // 28
|
||||
"CUTS.EVERGREEN,"+ // 29
|
||||
"CUTS.DESCRIPTION,"+ // 30
|
||||
"CUTS.OUTCUE,"+ // 31
|
||||
"CUTS.ISRC,"+ // 32
|
||||
"CUTS.ISCI,"+ // 33
|
||||
"CUTS.LENGTH,"+ // 34
|
||||
"CUTS.ORIGIN_DATETIME,"+ // 35
|
||||
"CUTS.START_DATETIME,"+ // 36
|
||||
"CUTS.END_DATETIME,"+ // 37
|
||||
"CUTS.SUN,"+ // 38
|
||||
"CUTS.MON,"+ // 39
|
||||
"CUTS.TUE,"+ // 40
|
||||
"CUTS.WED,"+ // 41
|
||||
"CUTS.THU,"+ // 42
|
||||
"CUTS.FRI,"+ // 43
|
||||
"CUTS.SAT,"+ // 44
|
||||
"CUTS.START_DAYPART,"+ // 45
|
||||
"CUTS.END_DAYPART,"+ // 46
|
||||
"CUTS.ORIGIN_NAME,"+ // 47
|
||||
"CUTS.WEIGHT,"+ // 48
|
||||
"CUTS.LAST_PLAY_DATETIME,"+ // 49
|
||||
"CUTS.PLAY_COUNTER,"+ // 50
|
||||
"CUTS.LOCAL_COUNTER,"+ // 51
|
||||
"CUTS.VALIDITY,"+ // 52
|
||||
"CUTS.CODING_FORMAT,"+ // 53
|
||||
"CUTS.SAMPLE_RATE,"+ // 54
|
||||
"CUTS.BIT_RATE,"+ // 55
|
||||
"CUTS.CHANNELS,"+ // 56
|
||||
"CUTS.PLAY_GAIN,"+ // 57
|
||||
"CUTS.START_POINT,"+ // 58
|
||||
"CUTS.END_POINT,"+ // 59
|
||||
"CUTS.FADEUP_POINT,"+ // 60
|
||||
"CUTS.FADEDOWN_POINT,"+ // 61
|
||||
"CUTS.SEGUE_START_POINT,"+ // 62
|
||||
"CUTS.SEGUE_END_POINT,"+ // 63
|
||||
"CUTS.SEGUE_GAIN,"+ // 64
|
||||
"CUTS.HOOK_START_POINT,"+ // 65
|
||||
"CUTS.HOOK_END_POINT,"+ // 66
|
||||
"CUTS.TALK_START_POINT,"+ // 67
|
||||
"CUTS.TALK_END_POINT "+ // 68
|
||||
"CUTS.CUT_NAME,"+ // 29
|
||||
"CUTS.EVERGREEN,"+ // 30
|
||||
"CUTS.DESCRIPTION,"+ // 31
|
||||
"CUTS.OUTCUE,"+ // 32
|
||||
"CUTS.ISRC,"+ // 33
|
||||
"CUTS.ISCI,"+ // 34
|
||||
"CUTS.LENGTH,"+ // 35
|
||||
"CUTS.ORIGIN_DATETIME,"+ // 36
|
||||
"CUTS.START_DATETIME,"+ // 37
|
||||
"CUTS.END_DATETIME,"+ // 38
|
||||
"CUTS.SUN,"+ // 39
|
||||
"CUTS.MON,"+ // 40
|
||||
"CUTS.TUE,"+ // 41
|
||||
"CUTS.WED,"+ // 42
|
||||
"CUTS.THU,"+ // 43
|
||||
"CUTS.FRI,"+ // 44
|
||||
"CUTS.SAT,"+ // 45
|
||||
"CUTS.START_DAYPART,"+ // 46
|
||||
"CUTS.END_DAYPART,"+ // 47
|
||||
"CUTS.ORIGIN_NAME,"+ // 48
|
||||
"CUTS.WEIGHT,"+ // 49
|
||||
"CUTS.LAST_PLAY_DATETIME,"+ // 50
|
||||
"CUTS.PLAY_COUNTER,"+ // 51
|
||||
"CUTS.LOCAL_COUNTER,"+ // 52
|
||||
"CUTS.VALIDITY,"+ // 53
|
||||
"CUTS.CODING_FORMAT,"+ // 54
|
||||
"CUTS.SAMPLE_RATE,"+ // 55
|
||||
"CUTS.BIT_RATE,"+ // 56
|
||||
"CUTS.CHANNELS,"+ // 57
|
||||
"CUTS.PLAY_GAIN,"+ // 58
|
||||
"CUTS.START_POINT,"+ // 59
|
||||
"CUTS.END_POINT,"+ // 60
|
||||
"CUTS.FADEUP_POINT,"+ // 61
|
||||
"CUTS.FADEDOWN_POINT,"+ // 62
|
||||
"CUTS.SEGUE_START_POINT,"+ // 63
|
||||
"CUTS.SEGUE_END_POINT,"+ // 64
|
||||
"CUTS.SEGUE_GAIN,"+ // 65
|
||||
"CUTS.HOOK_START_POINT,"+ // 66
|
||||
"CUTS.HOOK_END_POINT,"+ // 67
|
||||
"CUTS.TALK_START_POINT,"+ // 68
|
||||
"CUTS.TALK_END_POINT "+ // 69
|
||||
"from CART left join CUTS "+
|
||||
"on CART.NUMBER=CUTS.CART_NUMBER ";
|
||||
}
|
||||
@ -1425,6 +1426,7 @@ QString RDCart::xml(RDSqlQuery *q,bool include_cuts,
|
||||
xml+=" "+RDXmlField("asyncronous",RDBool(q->value(23).toString()));
|
||||
xml+=" "+RDXmlField("owner",q->value(24).toString());
|
||||
xml+=" "+RDXmlField("metadataDatetime",q->value(25).toDateTime());
|
||||
xml+=" "+RDXmlField("songId",q->value(28).toString());
|
||||
switch((RDCart::Type)q->value(1).toInt()) {
|
||||
case RDCart::Audio:
|
||||
if(include_cuts) {
|
||||
@ -1739,6 +1741,10 @@ unsigned RDCart::readXml(std::vector<RDWaveData> *data,const QString &xml)
|
||||
cartdata.setPublisher(GetXmlValue("publisher",f0[i]).toString());
|
||||
cartdata.setMetadataFound(true);
|
||||
}
|
||||
if(f0[i].contains("<songId>")) {
|
||||
cartdata.setSongId(GetXmlValue("songId",f0[i]).toString());
|
||||
cartdata.setMetadataFound(true);
|
||||
}
|
||||
if(f0[i].contains("<conductor>")) {
|
||||
cartdata.setConductor(GetXmlValue("conductor",f0[i]).toString());
|
||||
cartdata.setMetadataFound(true);
|
||||
|
122
lib/rdcut.cpp
122
lib/rdcut.cpp
@ -1402,62 +1402,62 @@ QString RDCut::xml(RDSqlQuery *q,bool absolute,RDSettings *settings)
|
||||
QString xml="";
|
||||
|
||||
xml+="<cut>\n";
|
||||
xml+=" "+RDXmlField("cutName",q->value(28).toString());
|
||||
xml+=" "+RDXmlField("cartNumber",RDCut::cartNumber(q->value(28).toString()));
|
||||
xml+=" "+RDXmlField("cutNumber",RDCut::cutNumber(q->value(28).toString()));
|
||||
xml+=" "+RDXmlField("cutName",q->value(29).toString());
|
||||
xml+=" "+RDXmlField("cartNumber",RDCut::cartNumber(q->value(29).toString()));
|
||||
xml+=" "+RDXmlField("cutNumber",RDCut::cutNumber(q->value(29).toString()));
|
||||
|
||||
xml+=" "+RDXmlField("evergreen",RDBool(q->value(29).toString()));
|
||||
xml+=" "+RDXmlField("description",q->value(30).toString());
|
||||
xml+=" "+RDXmlField("outcue",q->value(31).toString());
|
||||
xml+=" "+RDXmlField("isrc",q->value(32).toString());
|
||||
xml+=" "+RDXmlField("isci",q->value(33).toString());
|
||||
xml+=" "+RDXmlField("length",q->value(34).toUInt());
|
||||
if(q->value(35).isNull()) {
|
||||
xml+=" "+RDXmlField("evergreen",RDBool(q->value(30).toString()));
|
||||
xml+=" "+RDXmlField("description",q->value(31).toString());
|
||||
xml+=" "+RDXmlField("outcue",q->value(32).toString());
|
||||
xml+=" "+RDXmlField("isrc",q->value(33).toString());
|
||||
xml+=" "+RDXmlField("isci",q->value(34).toString());
|
||||
xml+=" "+RDXmlField("length",q->value(35).toUInt());
|
||||
if(q->value(36).isNull()) {
|
||||
xml+=" "+RDXmlField("originDatetime","");
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("originDatetime",q->value(35).toDateTime());
|
||||
xml+=" "+RDXmlField("originDatetime",q->value(36).toDateTime());
|
||||
}
|
||||
if(q->value(36).isNull()) {
|
||||
if(q->value(37).isNull()) {
|
||||
xml+=" "+RDXmlField("startDatetime","");
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("startDatetime",q->value(36).toDateTime());
|
||||
xml+=" "+RDXmlField("startDatetime",q->value(37).toDateTime());
|
||||
}
|
||||
if(q->value(37).isNull()) {
|
||||
if(q->value(38).isNull()) {
|
||||
xml+=" "+RDXmlField("endDatetime","");
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("endDatetime",q->value(37).toDateTime());
|
||||
xml+=" "+RDXmlField("endDatetime",q->value(38).toDateTime());
|
||||
}
|
||||
xml+=" "+RDXmlField("sun",RDBool(q->value(38).toString()));
|
||||
xml+=" "+RDXmlField("mon",RDBool(q->value(39).toString()));
|
||||
xml+=" "+RDXmlField("tue",RDBool(q->value(40).toString()));
|
||||
xml+=" "+RDXmlField("wed",RDBool(q->value(41).toString()));
|
||||
xml+=" "+RDXmlField("thu",RDBool(q->value(42).toString()));
|
||||
xml+=" "+RDXmlField("fri",RDBool(q->value(43).toString()));
|
||||
xml+=" "+RDXmlField("sat",RDBool(q->value(44).toString()));
|
||||
if(q->value(45).isNull()) {
|
||||
xml+=" "+RDXmlField("sun",RDBool(q->value(39).toString()));
|
||||
xml+=" "+RDXmlField("mon",RDBool(q->value(40).toString()));
|
||||
xml+=" "+RDXmlField("tue",RDBool(q->value(41).toString()));
|
||||
xml+=" "+RDXmlField("wed",RDBool(q->value(42).toString()));
|
||||
xml+=" "+RDXmlField("thu",RDBool(q->value(43).toString()));
|
||||
xml+=" "+RDXmlField("fri",RDBool(q->value(44).toString()));
|
||||
xml+=" "+RDXmlField("sat",RDBool(q->value(45).toString()));
|
||||
if(q->value(46).isNull()) {
|
||||
xml+=" "+RDXmlField("startDaypart","");
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("startDaypart",q->value(45).toTime());
|
||||
xml+=" "+RDXmlField("startDaypart",q->value(46).toTime());
|
||||
}
|
||||
if(q->value(46).isNull()) {
|
||||
if(q->value(47).isNull()) {
|
||||
xml+=" "+RDXmlField("endDaypart","");
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("endDaypart",q->value(46).toTime());
|
||||
xml+=" "+RDXmlField("endDaypart",q->value(47).toTime());
|
||||
}
|
||||
xml+=" "+RDXmlField("originName",q->value(47).toString());
|
||||
xml+=" "+RDXmlField("weight",q->value(48).toUInt());
|
||||
xml+=" "+RDXmlField("lastPlayDatetime",q->value(49).toDateTime());
|
||||
xml+=" "+RDXmlField("playCounter",q->value(50).toUInt());
|
||||
xml+=" "+RDXmlField("originName",q->value(48).toString());
|
||||
xml+=" "+RDXmlField("weight",q->value(49).toUInt());
|
||||
xml+=" "+RDXmlField("lastPlayDatetime",q->value(50).toDateTime());
|
||||
xml+=" "+RDXmlField("playCounter",q->value(51).toUInt());
|
||||
if(settings==NULL) {
|
||||
xml+=" "+RDXmlField("codingFormat",q->value(53).toUInt());
|
||||
xml+=" "+RDXmlField("sampleRate",q->value(54).toUInt());
|
||||
xml+=" "+RDXmlField("bitRate",q->value(55).toUInt());
|
||||
xml+=" "+RDXmlField("channels",q->value(56).toUInt());
|
||||
xml+=" "+RDXmlField("codingFormat",q->value(54).toUInt());
|
||||
xml+=" "+RDXmlField("sampleRate",q->value(55).toUInt());
|
||||
xml+=" "+RDXmlField("bitRate",q->value(56).toUInt());
|
||||
xml+=" "+RDXmlField("channels",q->value(57).toUInt());
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("codingFormat",(int)settings->format());
|
||||
@ -1465,68 +1465,68 @@ QString RDCut::xml(RDSqlQuery *q,bool absolute,RDSettings *settings)
|
||||
xml+=" "+RDXmlField("bitRate",settings->bitRate());
|
||||
xml+=" "+RDXmlField("channels",settings->channels());
|
||||
}
|
||||
xml+=" "+RDXmlField("playGain",q->value(57).toUInt());
|
||||
xml+=" "+RDXmlField("playGain",q->value(58).toUInt());
|
||||
if(absolute) {
|
||||
xml+=" "+RDXmlField("startPoint",q->value(58).toInt());
|
||||
xml+=" "+RDXmlField("endPoint",q->value(59).toInt());
|
||||
xml+=" "+RDXmlField("fadeupPoint",q->value(60).toInt());
|
||||
xml+=" "+RDXmlField("fadedownPoint",q->value(61).toInt());
|
||||
xml+=" "+RDXmlField("segueStartPoint",q->value(62).toInt());
|
||||
xml+=" "+RDXmlField("segueEndPoint",q->value(63).toInt());
|
||||
xml+=" "+RDXmlField("segueGain",q->value(64).toInt());
|
||||
xml+=" "+RDXmlField("hookStartPoint",q->value(65).toInt());
|
||||
xml+=" "+RDXmlField("hookEndPoint",q->value(66).toInt());
|
||||
xml+=" "+RDXmlField("talkStartPoint",q->value(67).toInt());
|
||||
xml+=" "+RDXmlField("talkEndPoint",q->value(68).toInt());
|
||||
xml+=" "+RDXmlField("startPoint",q->value(59).toInt());
|
||||
xml+=" "+RDXmlField("endPoint",q->value(60).toInt());
|
||||
xml+=" "+RDXmlField("fadeupPoint",q->value(61).toInt());
|
||||
xml+=" "+RDXmlField("fadedownPoint",q->value(62).toInt());
|
||||
xml+=" "+RDXmlField("segueStartPoint",q->value(63).toInt());
|
||||
xml+=" "+RDXmlField("segueEndPoint",q->value(64).toInt());
|
||||
xml+=" "+RDXmlField("segueGain",q->value(65).toInt());
|
||||
xml+=" "+RDXmlField("hookStartPoint",q->value(66).toInt());
|
||||
xml+=" "+RDXmlField("hookEndPoint",q->value(67).toInt());
|
||||
xml+=" "+RDXmlField("talkStartPoint",q->value(68).toInt());
|
||||
xml+=" "+RDXmlField("talkEndPoint",q->value(69).toInt());
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("startPoint",0);
|
||||
xml+=" "+
|
||||
RDXmlField("endPoint",q->value(30).toInt()-q->value(58).toInt());
|
||||
if(q->value(60).toInt()<0) {
|
||||
RDXmlField("endPoint",q->value(31).toInt()-q->value(59).toInt());
|
||||
if(q->value(61).toInt()<0) {
|
||||
xml+=" "+RDXmlField("fadeupPoint",-1);
|
||||
}
|
||||
else {
|
||||
xml+=" "+
|
||||
RDXmlField("fadeupPoint",q->value(60).toInt()-q->value(58).toInt());
|
||||
RDXmlField("fadeupPoint",q->value(61).toInt()-q->value(59).toInt());
|
||||
}
|
||||
if(q->value(61).toInt()<0) {
|
||||
if(q->value(62).toInt()<0) {
|
||||
xml+=" "+RDXmlField("fadedownPoint",-1);
|
||||
}
|
||||
else {
|
||||
xml+=" "+
|
||||
RDXmlField("fadedownPoint",q->value(61).toInt()-q->value(58).toInt());
|
||||
RDXmlField("fadedownPoint",q->value(62).toInt()-q->value(59).toInt());
|
||||
}
|
||||
if(q->value(62).toInt()<0) {
|
||||
if(q->value(63).toInt()<0) {
|
||||
xml+=" "+RDXmlField("segueStartPoint",-1);
|
||||
xml+=" "+RDXmlField("segueEndPoint",-1);
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("segueStartPoint",
|
||||
q->value(62).toInt()-q->value(58).toInt());
|
||||
q->value(63).toInt()-q->value(59).toInt());
|
||||
xml+=" "+RDXmlField("segueEndPoint",
|
||||
q->value(63).toInt()-q->value(58).toInt());
|
||||
q->value(64).toInt()-q->value(59).toInt());
|
||||
}
|
||||
xml+=" "+RDXmlField("segueGain",q->value(64).toInt());
|
||||
if(q->value(65).toInt()<0) {
|
||||
xml+=" "+RDXmlField("segueGain",q->value(65).toInt());
|
||||
if(q->value(66).toInt()<0) {
|
||||
xml+=" "+RDXmlField("hookStartPoint",-1);
|
||||
xml+=" "+RDXmlField("hookEndPoint",-1);
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("hookStartPoint",
|
||||
q->value(65).toInt()-q->value(58).toInt());
|
||||
q->value(66).toInt()-q->value(59).toInt());
|
||||
xml+=" "+RDXmlField("hookEndPoint",
|
||||
q->value(66).toInt()-q->value(58).toInt());
|
||||
q->value(67).toInt()-q->value(59).toInt());
|
||||
}
|
||||
if(q->value(38).toInt()<0) {
|
||||
if(q->value(39).toInt()<0) {
|
||||
xml+=" "+RDXmlField("talkStartPoint",-1);
|
||||
xml+=" "+RDXmlField("talkEndPoint",-1);
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("talkStartPoint",
|
||||
q->value(67).toInt()-q->value(58).toInt());
|
||||
q->value(68).toInt()-q->value(59).toInt());
|
||||
xml+=" "+RDXmlField("talkEndPoint",
|
||||
q->value(68).toInt()-q->value(58).toInt());
|
||||
q->value(69).toInt()-q->value(59).toInt());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -209,6 +209,18 @@ void RDWaveData::setPublisher(const QString &str)
|
||||
}
|
||||
|
||||
|
||||
QString RDWaveData::songId() const
|
||||
{
|
||||
return data_song_id;
|
||||
}
|
||||
|
||||
|
||||
void RDWaveData::setSongId(const QString &str)
|
||||
{
|
||||
data_song_id=str;
|
||||
}
|
||||
|
||||
|
||||
RDWaveData::UsageCode RDWaveData::usageCode() const
|
||||
{
|
||||
return data_usage_code;
|
||||
|
@ -65,6 +65,8 @@ class RDWaveData
|
||||
void setComposer(const QString &str);
|
||||
QString publisher() const;
|
||||
void setPublisher(const QString &str);
|
||||
QString songId() const;
|
||||
void setSongId(const QString &str);
|
||||
UsageCode usageCode() const;
|
||||
void setUsageCode(UsageCode code);
|
||||
QStringList schedCodes() const;
|
||||
@ -201,6 +203,7 @@ class RDWaveData
|
||||
QString data_artist;
|
||||
QString data_album;
|
||||
QString data_conductor;
|
||||
QString data_song_id;
|
||||
QString data_label;
|
||||
int data_release_year;
|
||||
QString data_client;
|
||||
|
@ -642,6 +642,9 @@ void AudioCart::importCutData()
|
||||
rdcart_controls->year_edit->
|
||||
setText(QString().sprintf("%d",wavedata.releaseYear()));
|
||||
}
|
||||
if(rdcart_controls->song_id_edit->text().isEmpty()) {
|
||||
rdcart_controls->song_id_edit->setText(wavedata.songId());
|
||||
}
|
||||
if(rdcart_controls->label_edit->text().isEmpty()) {
|
||||
rdcart_controls->label_edit->setText(wavedata.label());
|
||||
}
|
||||
@ -654,6 +657,9 @@ void AudioCart::importCutData()
|
||||
if(rdcart_controls->publisher_edit->text().isEmpty()) {
|
||||
rdcart_controls->publisher_edit->setText(wavedata.publisher());
|
||||
}
|
||||
if(rdcart_controls->conductor_edit->text().isEmpty()) {
|
||||
rdcart_controls->conductor_edit->setText(wavedata.conductor());
|
||||
}
|
||||
if(rdcart_controls->composer_edit->text().isEmpty()) {
|
||||
rdcart_controls->composer_edit->setText(wavedata.composer());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user