====== mAirListDB Library CSV Import/Export ====== This article explains the CSV file format used to import/export items from/to the mAirListDB Library. ===== General ===== ==== File Format ==== * Plain text format, comma-separated values (CSV). * Separator is comma or tab (ASCII 9). * Strings can be quoted with double-quotes. * Text encoding can be ANSI or UTF-8; for UTF-8, the file must have a valid BOM. ==== Columns ==== The CSV file contains one or more columns of values. The set of columns is not fixed, instead **the first line in the CSV file must contain the names of the columns** used in this file. Some "fixed" column names will be recognized and mapped to mAirList's internal fields. The other column names will be treated as additional columns for Attributes. === Fixed column names === ^ Column Name ^ Remark ^ | ID | With or without leading 0s | | ExternalID | | | Filename | | | Title | | | Artist | | | Comment | | | EndType | | | Duration | seconds.milliseconds | | EffectiveDuration | seconds.milliseconds (export only) | | CueIn | seconds.milliseconds | | FadeIn | seconds.milliseconds | | Ramp1 | seconds.milliseconds | | Ramp2 | seconds.milliseconds | | Ramp3 | seconds.milliseconds | | HookIn | seconds.milliseconds | | HookFade | seconds.milliseconds | | HookOut | seconds.milliseconds | | LoopIn | seconds.milliseconds | | LoopOut | seconds.milliseconds | | Outro | seconds.milliseconds | | StartNext | seconds.milliseconds | | FadeOut | seconds.milliseconds | | FadeEnd | seconds.milliseconds | | CueOut | seconds.milliseconds | | Anchor | seconds.milliseconds | | Amplification | dB (from v6.3) | | LevelPeak | dBFS (from v6.3) | | LevelTruePeak | dBTP (from v6.3) | | LevelLoudness | LUFS (from v6.3) | === Attribute columns === Additional columns found in the CSV file will be treated and imported as attributes. ==== Restrictions ==== Only the fixed columns and attributes columns can be used for import/export. You can **not** use CSV import/export to handle any of the following information: * Folder assignment * Playback options * Additional cue data * ... ===== Exporting Items ===== When exporting items as CSV from the mAirListDB Library, you have two file formats to choose from: * //CSV file//: Will export all columns, including ID and all attributes found in any of the items * //CSV file (without IDs)//: Will omit the ID column The latter can be used to import the items into another mAirListDB, where the items have a different ID. ===== Importing Items ===== CSV files can be used to update existing items in the Library, as well as adding new items. In either case, you can have as many or few columns in the CSV file as you like. Columns not found in the file will be ignored. For example, you can use a CSV file with only the //ID// and //Comment// columns to update only the comment of a particular set of items (identified by their ID), and leave all other fields untouched. ==== Updating Existing Items ==== To update existing items in the Library, mAirListDB will try to identify the item by one of the following columns: - ID - ExternalID - Filename So if the ''ID'' column is present and contains a value, the ID will be used to identify the item; otherwise, if the ''ExternalID'' is present and contains a value, mAirList will try to identify the item by its External ID; otherwise the filename will be used. If that fails as well, it will look for an item that matches both artist and title. If mAirListDB is unable to identify the item in any of these ways, the item will be treated as new (see below). The item will be updated using the data found in the remaining columns of the file. All other fields will remain untouched. If a column contains the special value ''-'', the field will remain untouched as well. ==== Adding New Items ==== CSV files can also be used to add new items to the Library. In this case, **the ''ID'' column must be empty**, and in case a value for ''ExternalID'' or ''Filename'' is given, there must be no other item in the Library with that External ID or filename already (otherwise mAirListDB would treat that line as an item update, not new item). When adding new **files**, the filename must be located inside any of the registered Storages. When no filename is given, or the ''Filename'' column is not present at all, the items will be treated as //Dummy// items. ===== TL;DR - An Example ===== ID,ExternalID,Filename,Title,Artist,Comment,EndType,Duration,CueIn,FadeIn,Ramp1,Ramp2,Ramp3,HookIn,HookFade,HookOut,LoopIn,LoopOut,Outro,StartNext,FadeOut,FadeEnd,CueOut,Anchor,Album,Top40,Track,Jahr,Genre 00005217,,"M:\Music\Yann Tiersen\Skyline\01 Another Shore.m4a","Another Shore","Yann Tiersen",,,293.907,,,,,,,,,,,,,293.906,,293.907,,Skyline,,1,, 00005206,,"M:\Music\Yann Tiersen\Good Bye Lenin\13 Birthday Preparations.mp3","Birthday Preparations","Yann Tiersen",,,151.000,,,,,,,,,,,,,147.905,,151.293,,"Good Bye Lenin",,13,2003,Soundtrack 00005196,,"M:\Music\Yann Tiersen\Good Bye Lenin\03 Childhood (1).mp3","Childhood (1)","Yann Tiersen",,,97.000,,,,,,,,,,,,,91.606,,97.533,,"Good Bye Lenin",,03,2003,Soundtrack 00005208,,"M:\Music\Yann Tiersen\Good Bye Lenin\15 Childhood (2).mp3","Childhood (2)","Yann Tiersen",,,104.000,,,,,,,,,,,,,97.762,,104.893,,"Good Bye Lenin",,15,2003,Soundtrack 00005195,,"M:\Music\Yann Tiersen\Good Bye Lenin\02 Coma.mp3",Coma,"Yann Tiersen",,,78.000,,,,,,,,,,,,,76.751,,78.400,,"Good Bye Lenin",,02,2003,Soundtrack 00005177,,"M:\Music\Yann Tiersen\Die fabelhafte Welt der Amelie\04 Comptine d'un Autre ete - L'apres-midi.mp3","Comptine d'un Autre ete - L'apres-midi","Yann Tiersen",,,138.000,0.249,,,,,,,,,,,,131.805,,138.710,,"Die fabelhafte Welt der Amelie",,04,2001,Soundtrack