[RDD] Synchronizing carts and logs

Fred Gleason fredg at paravelsystems.com
Tue Jun 14 13:23:08 EDT 2016


On Jun 14, 2016, at 07:57, drew Roberts <zotzbro at gmail.com> wrote:

> http://www.wavpack.com/ <http://www.wavpack.com/>
> 
> "Uses ID3v1 and APEv2 tags for metadata (including ReplayGain)"
> 
> Would that get us there?

ID3v1 is very consumer- and pop music-oriented, and thus is missing many of the fields that are relevant for broadcasters —e.g. Agency and Client.  APEv2 is more intriguing inasmuch as it includes a mechanism for extending the field definitions, however, it does not seem to enjoy very wide support.

Here’s an idea: what say we embed a copy of the relevant ‘cartList’ XML object (such as is currently generated by Rivendell's ListCart Web API call) in every file export?  I see a number of advantages to this approach:

1) XML is a widely-supported format, with high-quality FOSS parsers available for virtually every major programming language.

2) The format is human-readable and would be largely self-documenting.

3) The same parser code that reads cartList objects via the web interface would also work here with little modification.

Likewise, we then extend Rivendell’s import tools (RDImport and RDLibrary) to parse this same data structure, thus giving us a high-fidelity path for transferring both audio and Rivendell cart/cut metadata between systems.

For reference, here is a sample of the cartList object:

*** snip snip ***
<cartList>
  <cart>
    <number>10004</number>
    <type>audio</type>
    <groupName>MUSIC</groupName>
    <title>American Pie</title>
    <artist>Don Mc Lean</artist>
    <album>100 Hits Party Classics</album>
    <year/>
    <label/>
    <client/>
    <agency/>
    <publisher/>
    <composer/>
    <userDefined/>
    <usageCode>0</usageCode>
    <forcedLength>0:04:03.7</forcedLength>
    <averageLength>0:04:03.7</averageLength>
    <lengthDeviation>0:00:00.0<lengthDeviation>
    <averageSegueLenth>0:04:02.6<averageSegueLenth>
    <averageHookLength>0:00:00.0</averageHookLength>
    <cutQuantity>1</cutQuantity>
    <lastCutPlayed>0</lastCutPlayed>
    <validity>2</validity>
    <enforceLength>false</enforceLength>
    <asyncronous>false</asyncronous>
    <owner/>
    <metadataDatetime>2016-05-31T08:20:23-04:00</metadataDatetime>
      <cutList>
        <cut>
          <cutName>010004_001</cutName>
          <cartNumber>10004</cartNumber>
          <cutNumber>1</cutNumber>
          <evergreen>false</evergreen>
          <description>Cut 001</description>
          <outcue/>
          <isrc/>
          <isci/>
          <length>243794</length>
          <originDatetime>2014-11-30T09:38:49-04:00</originDatetime>
          <startDatetime/>
          <endDatetime/>
          <sun>true</sun>
          <mon>true</mon>
          <tue>true</tue>
          <wed>true</wed>
          <thu>true</thu>
          <fri>true</fri>
          <sat>true</sat>
          <startDaypart/>
          <endDaypart/>
          <originName>rdhost</originName>
          <weight>1</weight>
          <lastPlayDatetime>2015-03-24T10:23:55-04:00</lastPlayDatetime>
          <playCounter>49</playCounter>
          <localCounter>49</localCounter>
          <validity>2</validity>
          <codingFormat>0</codingFormat>
          <sampleRate>48000</sampleRate>
          <bitRate>0</bitRate>
          <channels>2</channels>
          <playGain>0</playGain>
          <startPoint>336</startPoint>
          <endPoint>244130</endPoint>
          <fadeupPoint>-1</fadeupPoint>
          <fadedownPoint>-1</fadedownPoint>
          <segueStartPoint>243024</segueStartPoint>
          <segueEndPoint>244104</segueEndPoint>
          <segueGain>-3000</segueGain>
          <hookStartPoint>-1</hookStartPoint>
          <hookEndPoint>-1</hookEndPoint>
          <talkStartPoint>-1</talkStartPoint>
          <talkEndPoint>0</talkEndPoint>
        </cut>
      </cutList>
  </cart>
</cartList>
*** snip snip ***

Cheers!


|----------------------------------------------------------------------|
| Frederick F. Gleason, Jr. |              Chief Developer             |
|                           |              Paravel Systems             |
|----------------------------------------------------------------------|
|          A room without books is like a body without a soul.         |
|                                         -- Cicero                    |
|----------------------------------------------------------------------|

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://caspian.paravelsystems.com/pipermail/rivendell-dev/attachments/20160614/a1a402b7/attachment.html>


More information about the Rivendell-dev mailing list