23 KiB
Naming Templates
File and Folder names can be customized using Libation's built-in tag template naming engine. To edit how folder and file names are created, go to Settings > Download/Decrypt and edit the naming templates. If you're splitting your audiobook into multiple files by chapter, you can also use a custom template to set each chapter's title metadata tag by editing the template in Settings > Audio File Options.
These templates apply to both GUI and CLI.
Template Tags
These are the naming template tags currently supported by Libation.
Property Tags
These tags will be replaced in the template with the audiobook's values.
| Tag | Description | Type |
|---|---|---|
| <id> † | Audible book ID (ASIN) | Text |
| <title> | Full title with subtitle | Text |
| <title short> | Title. Stop at first colon | Text |
| <audible title> | Audible's title (does not include subtitle) | Text |
| <audible subtitle> | Audible's subtitle | Text |
| <author> | Author(s) | Name List |
| <first author> | First author | Name |
| <narrator> | Narrator(s) | Name List |
| <first narrator> | First narrator | Name |
| <series> | All series to which the book belongs (if any) | Series List |
| <first series> | First series | Series |
| <series#> | Number order in series (alias for <first series[{#}]> | Number |
| <bitrate> | Bitrate (kbps) of the last downloaded audiobook | Number |
| <samplerate> | Sample rate (Hz) of the last downloaded audiobook | Number |
| <channels> | Number of audio channels in the last downloaded audiobook | Number |
| <codec> | Audio codec of the last downloaded audiobook | Text |
| <file version> | Audible's file version number of the last downloaded audiobook | Text |
| <libation version> | Libation version used during last download of the audiobook | Text |
| <account> | Audible account of this book | Text |
| <account nickname> | Audible account nickname of this book | Text |
| <locale> | Region/country | Text |
| <year> | Year published | Number |
| <language> | Book's language | Text |
| <language short> † | Book's language abbreviated. Eg: ENG | Text |
| <file date> | File creation date/time. | DateTime |
| <pub date> | Audiobook publication date | DateTime |
| <date added> | Date the book added to your Audible account | DateTime |
| <ch count> ‡ | Number of chapters | Number |
| <ch title> ‡ | Chapter title | Text |
| <ch#> ‡ | Chapter number | Number |
| <ch# 0> ‡ | Chapter number with leading zeros | Number |
† Does not support custom formatting
‡ Only valid for Chapter Filename and Chapter Tile Metadata
To change how these properties are displayed, read about custom formatters
Conditional Tags
Anything between the opening tag (<tagname->) and closing tag (<-tagname>) will only appear in the name if the condition evaluates to true.
| Tag | Description | Type |
|---|---|---|
| <if series->...<-if series> | Only include if part of a book series or podcast | Conditional |
| <if podcast->...<-if podcast> | Only include if part of a podcast | Conditional |
| <if bookseries->...<-if bookseries> | Only include if part of a book series | Conditional |
| <if podcastparent->...<-if podcastparent>† | Only include if item is a podcast series parent | Conditional |
| <has PROPERTY->...<-has> | Only include if the PROPERTY has a value (i.e. not null or empty) | Conditional |
† Only affects the podcast series folder naming if "Save all podcast episodes to the series parent folder" option is checked.
For example, <if podcast-><series><-if podcast> will evaluate to the podcast's series name if the file is a podcast. For audiobooks that are not podcasts, that tag will be blank.
You can invert the condition (instead of displaying the text when the condition is true, display the text when it is false) by playing a ! symbol before the opening tag name.
| Inverted Tag | Description | Type |
|---|---|---|
| <!if series->...<-if series> | Only include if not part of a book series or podcast | Conditional |
| <!if podcast->...<-if podcast> | Only include if not part of a podcast | Conditional |
| <!if bookseries->...<-if bookseries> | Only include if not part of a book series | Conditional |
| <!if podcastparent->...<-if podcastparent>† | Only include if item is not a podcast series parent | Conditional |
| <!has PROPERTY->...<-has> | Only include if the PROPERTY does not have a value (i.e. is null or empty) | Conditional |
† Only affects the podcast series folder naming if "Save all podcast episodes to the series parent folder" option is checked.
As an example, this folder template will place all Liberated podcasts into a "Podcasts" folder and all liberated books (not podcasts) into a "Books" folder.
<if podcast->Podcasts<-if podcast><!if podcast->Books<-if podcast>\<title>
This example will add a number if the <series#\> tag has a value:
<has series#><series#><-has>
This example will put non-series books in a "Standalones" folder:
<!if series->Standalones/<-if series>
And this example will customize the title based on whether the book has a subtitle:
<audible title><has audible subtitle->-<audible subtitle><-has>
Tag Formatters
Text, Name List, Number, and DateTime tags can be optionally formatted using format text in square brackets after the tag name. Below is a list of supported formatters for each tag type.
Text Formatters
Text formatting can change length and case of the text. Use <#>, <#> or to specify one or both of these.
| Formatter | Description | Example Usage | Example Result |
|---|---|---|---|
| # | Cuts down the text to the specified number of characters | <title[14]> | A Study in Scar |
| L | Converts text to lowercase | <title[L]> | a study in scarlet꞉ a sherlock holmes novel |
| U | Converts text to uppercase | <title short[U]> | A STUDY IN SCARLET |
| t | Converts text to title case | <title[t]> | The Abc Murders |
| T | Converts text to title case where uppercase words are preserved | <title[T]> | The ABC Murders |
| <title[6T]> | The AB |
Series Formatters
| Formatter | Description | Example Usage | Example Result |
|---|---|---|---|
| {N | # | ID} | Formats the series using the series part tags. {N} = Series Name {#} = Number order in series {#:Number_Formatter} = Number order in series, formatted {ID} = Audible Series ID Default is {N} |
<first series><first series[{N}]><first series[{N}, {#}, {ID}]><first series[{N}, {ID}, {#:00.0}]> |
Sherlock Holmes Sherlock Holmes Sherlock Holmes, 1-6, B08376S3R2 Sherlock Holmes, B08376S3R2, 01.0-06.0 |
Series List Formatters
| Formatter | Description | Example Usage | Example Result |
|---|---|---|---|
| separator() | Speficy the text used to join multiple series names. Default is ", " |
<series[separator(; )]> |
Sherlock Holmes; Some Other Series |
| format({N | # | ID}) | Formats the series properties using the name series tags. See Series Formatter Usage above. |
<series[format({N}, {#})separator(; )]><series[format({ID}-{N}, {#:00.0})]> |
Sherlock Holmes, 1-6; Book Collection, 1 B08376S3R2-Sherlock Holmes, 01.0-06.0, B000000000-Book Collection, 01.0 |
| sort({N | # | ID}) | Sorts the series by name, number or ID. These terms define the primary, secondary, tertiary, … sorting order. You may combine multiple terms in sequence to specify multi‑level sorting. Sorting direction: uppercase = ascending lowercase = descending Default is unsorted |
<series[sort(N)separator(; )]> |
Book Collection, 1; Sherlock Holmes, 1-6 |
| max(#) | Only use the first # of series Default is all series |
<series[max(1)]> |
Sherlock Holmes |
Name Formatters
| Formatter | Description | Example Usage | Example Result |
|---|---|---|---|
| {T | F | M | L | S | ID} | Formats the human name using the name part tags. {T:Text_Formatter} = Title (e.g. "Dr.") {F:Text_Formatter} = First name {M:Text_Formatter} = Middle name {L:Text_Formatter} = Last Name {S:Text_Formatter} = Suffix (e.g. "PhD") {ID:Text_Formatter} = Audible Contributor ID Formatter parts are optional and introduced by the colon. If specified the string will be used to format the part using the correspoing formatter. Default is {T} {F} {M} {L} {S} |
<first narrator[{L}, {F:1}.]><first author[{L:u}, {F} _{ID}_]> |
Fry, S. DOYLE, Arthur _B000AQ43GQ_ |
Name List Formatters
| Formatter | Description | Example Usage | Example Result |
|---|---|---|---|
| separator() | Speficy the text used to join multiple people's names. Default is ", " |
<author[separator(; )]> |
Arthur Conan Doyle; Stephen Fry |
| format({T | F | M | L | S | ID}) | Formats the human name using the name part tags. See Name Formatter Usage above. |
<author[format({L:u}, {F})separator(; )]><author[format({L}, {F:1}._{ID}_) separator(; )]> |
DOYLE, Arthur; FRY, Stephen Doyle, A. _B000AQ43GQ_; Fry, S. _B000APAGVS_ |
| sort(T | F | M | L | S | ID) | Sorts the names by title, first, middle, or last name, suffix or Audible Contributor ID These terms define the primary, secondary, tertiary, … sorting order. You may combine multiple terms in sequence to specify multi‑level sorting. Sorting direction: uppercase = ascending lowercase = descending Default is unsorted |
<author[sort(M)]><author[sort(Fl)]><author[sort(L FM ID)]> |
Stephen Fry, Arthur Conan Doyle Stephen King, Stephen Fry John P. Smith _B000TTTBBB_, John P. Smith _B000TTTCCC_, John S. Smith _B000HHHVVV_ |
| max(#) | Only use the first # of names Default is all names |
<author[max(1)]> |
Arthur Conan Doyle |
Number Formatters
For more custom formatters and examples, see this guide from Microsoft.
| Formatter | Description | Example Usage | Example Result |
|---|---|---|---|
| [integer] | Zero-pads the number | <bitrate[4]> <series#[3]> <samplerate[6]> |
0128 001 044100 |
| 0 | Replaces the zero with the corresponding digit if one is present; otherwise, zero appears in the result string. |
<series#[000.0]> | 001.0 |
| # | Replaces the "#" symbol with the corresponding digit if one is present; otherwise, no digit appears in the result string |
<series#[00.##]> | 01 |
Date Formatters
Form more standard formatters, see this guide from Microsoft.
Standard DateTime Formatters
| Formatter | Description | Example Usage | Example Result |
|---|---|---|---|
| s | Sortable date/time pattern. | <file date[s]> | 2023-02-14T13:45:30 |
| Y | Year month pattern. | <file date[Y]> | February 2023 |
Custom DateTime Formatters
You can use custom formatters to construct customized DateTime string. For more custom formatters and examples, see this guide from Microsoft.
| Formatter | Description | Example Usage | Example Result |
|---|---|---|---|
| yyyy | 4-digit year | <file date[yyyy]> | 2023 |
| yy | 2-digit year | <file date[yy]> | 23 |
| MM | 2-digit month | <file date[MM]> | 02 |
| dd | 2-digit day of the month | <file date[yyyy-MM-dd]> | 2023-02-14 |
| HH mm |
The hour, using a 24-hour clock from 00 to 23 The minute, from 00 through 59. |
<file date[HH:mm]> | 14:45 |