Provided by: kid3-core_3.9.5-1build4_amd64 bug

NAME

       kid3, kid3-qt, kid3-cli - Kid3 ID3 Tagger

SYNOPSIS


       kid3 [--help | --author | --version | --license | --desktopfile FILE] [FILE...]

       kid3-qt [--portable] [Qt-options] [FILE...]

       kid3-cli [--portable] [--dbus] [-h | --help] [-c COMMAND1] [-c COMMAND2...] [FILE...]

OPTIONS

       --portable
           Store configuration in file kid3.ini inside application folder.

       FILE
           If FILE is the path to a folder, it will be opened. If one or more file paths are given, their common
           folder is opened and the files are selected.

   kid3
       --help
           Show help about options.

       --author
           Show author information.

       --version
           Show version information.

       --license
           Show license information.

       --desktopfile FILE
           The base file name of the desktop entry for this application.

   kid3-qt
       Qt-options
           See qt5options(7).

   kid3-cli
       --dbus
           Activate the D-Bus interface.

       -c
           Execute a command. Multiple -c options are possible, they are executed in sequence. See the section
           about kid3-cli for a description of the available commands.

       -h|--help
           Show help about options and commands.

INTRODUCTION

       Kid3 is an application to edit the ID3v1 and ID3v2 tags in MP3 files in an efficient way. These tags can
       be edited by most MP3 players, but not in a very comfortable and efficient way. Moreover the tags in
       Ogg/Vorbis, Opus, DSF, FLAC, MPC, APE, MP4/AAC, MP2, Speex, TrueAudio, WavPack, WMA, WAV, AIFF files and
       tracker modules (MOD, S3M, IT, XM) are supported too.

       Kid3 does not grab nor encode MP3 files, but it is targeted to edit the ID3 tags of all files of an album
       in an efficient way, i.e.  with as few mouse clicks and key strokes as possible. Where most other
       programs can edit either ID3v1 or ID3v2 tags, Kid3 has full control over both versions, can convert tags
       between the two formats and has access to all ID3v2 tags. Tags of multiple files can be set to the same
       value, e.g.  the artist, album, year and genre of all files of an album typically have the same values
       and can be set together. If the information for the tags is contained in the file name, the tags can be
       automatically set from the file name. It is also possible to set the file name according to the tags
       found in the file in arbitrary formats.

       The editing task is further supported by automatic replacement of characters or substrings, for instance
       to remove illegal characters from filenames. Automatic control of upper and lower case characters makes
       it easy to use a consistent naming scheme in all tags.

       The tag information for full albums can be taken from gnudb.org[1], MusicBrainz[2], Discogs[3], Amazon[4]
       or other sources of track lists. The import format is freely configurable by regular expressions.

       Please report any problems or feature requests to the author.

USING KID3

   Kid3 features
       •   Edit ID3v1.1 tags

       •   Edit all ID3v2.3 and ID3v2.4 frames

       •   Edit tags of multiple files

       •   Convert between ID3v1 and ID3v2 tags

       •   Edit MP3, Ogg/Vorbis, Opus, DSF, FLAC, MPC, APE, MP4/AAC, MP2, Speex, TrueAudio, WavPack, WMA, WAV
           and AIFF tags

       •   Generate tags from filename

       •   Generate tags from the contents of tag fields

       •   Generate filename from tags

       •   Generate and change folder names from tags

       •   Generate playlist file

       •   Automatic case conversion and string translation

       •   Import from gnudb.org[1], MusicBrainz[2], Discogs[3], Amazon[4] and other data sources

       •   Export as CSV, HTML, playlist, Kover XML and other formats. Exported CSV files can be imported again.

   Example Usage
       This section describes a typical session with Kid3. Let's assume we have a folder containing MP3 files
       with the tracks from the album "Let's Tag" from the band "One Hit Wonder". The folder is named in the
       "artist - album" format, in our case One Hit Wonder - Let's Tag. The folder contains the tracks in the
       "track title.mp3" format, which I think is useful because the filenames are short (important when using
       mobile MP3 players with small displays) and in the correct order when sorted alphabetically (important
       when using hardware MP3 players which play the tracks in alphabetical order or in the order in which they
       are burnt on CD and that order is alphabetical when using mkisofs). Besides this, the artist and album
       information is already in the folder name and does not have to be repeated in the filename. But back to
       our example, the folder listing looks like this:

       01 Intro.mp3

       02 We Only Got This One.mp3

       03 Outro.mp3

       These files have no tags yet and we want to generate them using Kid3. We use File → Open menu item (or
       toolbar button) and select one of the files in this folder. All files will be displayed in the file
       listbox. Lazy as we are, we want to use the information in the folder and file names to generate tags.
       Therefore we select all files, then click the To: Tag 1 button in the File section. This will set the
       title, artist, album and track values in all files. To set the year and genre values of all files, we
       keep all files selected and type in "2002" for the Date and select "Pop" from the Genre combobox. To set
       only these two values, their check boxes are automatically checked and all other check boxes are left
       unchecked. Now we change the selection by only selecting the first file and we see that all tags contain
       the correct values. The tags of the other files can be verified too by selecting them one by one. When we
       are satisfied with the tags, we use File → Save menu item (or toolbar button). Selecting File → Create
       Playlist menu item (or toolbar button) will generate a file One Hit Wonder - Let's Tag.m3u in the folder.

COMMAND REFERENCE

   The GUI Elements
       The Kid3 GUI is separated in six sections: At the left are the file and folder listboxes, the right side
       contains the File, Tag 1, Tag 2 and Tag 3 sections.

       To navigate between the different sections using the keyboard, several keyboard shortcuts are supported.
       In the tag sections, the shortcuts are active while not editing text or when being in the first column.

       •   Alt+Left: Go to previous section (Command+[ on macOS®)

       •   Alt+Right: Go to next section (Command+] on macOS®)

       •   Ctrl+Shift+V: From other tag

       •   Ctrl+C: Copy

       •   Ctrl+V: Paste

       •   Shift+Delete: Remove

       •   F2: Edit

       •   Insert: Add

       •   Delete: Delete

       File List

           The file list contains the names of all the files in the opened folder which match the selected file
           name filter (typically *.mp3 *.ogg *.opus *.dsf *.flac *.mpc *.aac *.m4a *.m4b *.m4p *.mp4 *.mp2
           *.spx *.tta *.wv *.wma *.wav *.aiff *.ape). A single or multiple files can be selected. To select no
           file, click into the empty area after the listbox entries. The selection determines the files which
           are affected by the operations which are available by using the buttons described below.

           Besides Name, also other columns Size, Type, Date Modified with file details can be displayed.
           Columns can be hidden by unchecking their name in the context menu of the list header. The order of
           the columns can be changed by drag and drop. The sort order can be toggled by clicking on the column
           header.

           The values of the standard tags can also be displayed and edited in columns of the file list.

           At the left of the names an icon can be displayed: a disc to show that the file has been modified or
           information about which tags are present (V1, V2, V1V2 or NO TAG, no icon is displayed if the file
           has not been read in yet).

           Folders are displayed with a folder icon. If a folder is opened, its files are displayed in a
           hierarchical tree. By selecting files from subfolders, operations can be executed on files in
           different folders, which is useful if the music collection is organized with a folder for each artist
           containing folders for albums of this artist.

           Clicking the right mouse button inside the file list opens a context menu with the following
           commands:

           •   Expand all: Expands all folder trees (only the current tree if the Shift key is pressed)

           •   Collapse all: Collapses all folder trees

           •   Rename: Changes the name of a file

           •   Move to Trash: Moves a file to the trash

           •   Play: Plays a file, see Play. If the selected file is a playlist, the files of the playlist will
               be played.

           •   Edit: Edit a playlist, see Edit Playlist.

           •   The subsequent entries are user commands, which can be defined in the User Actions tab of
               Configure Kid3. The playback on double click can also be activated there.

               When Select file on play is activated, the currently played track is automatically selected in
               the file list.

       Edit Playlist

           A playlist can be created empty or containing the tracks of a folder, see Create Playlist. The
           playlist file created in such a way can be edited by double click or using Edit from the file list
           context menu. A dialog with the entries of the playlist is shown. It is possible to open multiple
           playlists simultaneously.

           New entries can be added by drag and drop from the file list, a file manager or another playlist. If
           an entry is dragged from another playlist, it will be moved or copied depending on the system. To
           invoke the other operation, respectively, the Shift, Ctrl or Alt (to copy instead of move on macOS®)
           key has to be pressed. Reordering entries within the playlist is also possible via drag and drop.
           Alternatively, entries can be moved using the keyboard shortcuts Ctrl+Shift+Up and Ctrl+Shift+Down
           (on macOS® Command has to be pressed instead of Ctrl). An entry can be removed using the Delete key.

           Please note the following: To drag entries from the file list, they have to be held at the left side
           (near the icons), the same gesture at the right side will perform a multi selection, such an action
           is hereby still easily possible.

           When a playlist has been modified, the changes can be stored using Save or discarded using Cancel.
           When the window is closed, a confirmation prompt is shown if there are unsaved changes.

           Tracks selected in a playlist will be automatically selected in the file list, thereby making it
           possible to edit their tags.

           To execute actions on a playlist, its file must be selected in the file list.  Edit from the context
           menu will lead to the dialog described in this section, and Play will start the media player with the
           tracks from the playlist. User actions can act on playlists, for example Export Playlist Folder,
           which copies the files from a playlist into a folder.

       Folder List

           The folder list contains the names of the folders in the opened folder, as well as the current (.)
           and the parent (..) folder. It allows one to quickly change the folder without using the Open command
           or drag and drop.

           Column visibility, order and sorting can be configured as described in the section about the file
           list.

       File

           Shows information about the encoding (MP3, Ogg, Opus, DSF, FLAC, MPC, APE, MP2, MP4, AAC, Speex,
           TrueAudio, WavPack, WMA, WAV, AIFF), bit rate, sample rate, channels and the length of the file.

           The Name line edit contains the name of the file (if only a single file is selected). If this name is
           changed, the file will be renamed when the Save command is used.

           The Format combo box and line edit contains the format to be used when the filename is generated from
           the first or the second tag. The filename can contain arbitrary characters, even a folder part
           separated by a slash from the file name, but that folder must already exist for the renaming to
           succeed. The following special codes are used to insert tag values into the filename:

           •   %s %{title} Title (Song)

           •   %a %{artist} Artist

           •   %l %{album} Album

           •   %c %{comment} Comment

           •   %y %{year} Year

           •   %t %{track} Track (e.g.  01)

           •   %t %{track.n} Track with field width n (e.g.  001 for %{track.3})

           •   %T %{tracknumber} Track (without leading zeros, e.g.  1)

           •   %g %{genre} Genre

           •   %{ignore} Ignored when generating tags from the file name

           The format codes are not restricted to the examples given above. Any frame name can be used, for
           instance unified frame names like %{albumartist}, %{discnumber.1}, %{bpm} or format specific names
           like %{popm}.

           It is possible to prepend and append strings to the replacement for a format code by adding them in
           double quotes inside the curly braces of a format code. These strings will only be put into the
           resulting string if the format code yields a nonempty value. For example, if the file name shall both
           contain the title and the subtitle, one could use %{title} [%{subtitle}] in the format string. But
           this would result in a string ending with [] if no subtitle frame exists for a file. In order to omit
           the brackets if no subtitle is present, %{title}%{" ["subtitle"]"} shall be used instead. This will
           omit the brackets, the leading space and the subtitle if not subtitle exists.

           The list of available formats can be edited in the dialog which appears when clicking the Filename
           from tag button in the File tab of the settings.

           A second Format combo box (with arrow down) is used to generate the tags from the filename. If the
           format of the filename does not match this pattern, a few other commonly used formats are tried.

           Some commonly used filename formats are already available in the combo box, but it is also possible
           to type in some special format into the line edit.

           The list of available formats can be edited in the dialog which appears when clicking the Tag from
           filename button in the File tab of the settings.

           Internally, a regular expression is built from the format codes. If advanced regular expressions are
           required, the format to generate the tags from the filenames can be given as a complete regular
           expression with captures which are preceded by the format codes, e.g.  to extract the track numbers
           without removal of leading zeros, a format like "/%{track}(\d+) %{title}(.*)" could be used.

           From: Tag 1, Tag 2: Sets the filename using the selected format and the first tag or the second tag,
           respectively.

           To: Tag 1, Tag 2: The tags are set from the filename. First, the format specified in Format is used.
           If the existing filename does not match this format, the following formats are tried:

           •   Artist - Album/Track Song

           •   Album/Track - Artist - Song

           •   /Artist - Album - Track - Song

           •   Album/Artist - Track - Song

           •   Album/Artist - Song

           •   Artist/Album/Track Song

           If a single file is selected, the GUI controls are filled with the values extracted from the
           filename. If multiple files are selected, the tags of the files are directly set according to the
           filenames.

       Tag 1

           The line edit widgets for Title, Artist, Album, Comment, Date, Track Number and Genre are used to
           edit the corresponding value in the first tag of the selected files. The value will be changed when
           the file selection is altered or before operations like Save and Quit and when the corresponding
           check box at the left of the field name is checked. This is useful to change only some values and
           leave the other values unchanged.

           If a single file is selected, all check boxes are checked and the line edit widgets contain the
           values found in the tags of this file. If a tag is not found in the file, the corresponding empty
           value is displayed, which is an empty string for the Title, Artist, Album and Comment line edits, 0
           for the numerical Date and Track Number edits and an empty selected value for the Genre combo box.
           The values can be changed and if the corresponding check box is checked, they will be set for the
           selected file after the selection is changed. The file is then marked as modified by a disk symbol in
           the file listbox but remains unchanged until the Save command is used.

           If multiple files are selected, only the values which are identical in all selected files are
           displayed. In all other controls, the empty values as described above are displayed. All check boxes
           are unchecked to avoid unwanted changes. If a value has to be set for all selected files, it can be
           edited and the check box has to be set. The values will be set for all selected files when the
           selection is changed and can be saved using the Save command.

           The check boxes also control the operation of most commands affecting the tags, such as copy, paste
           and transfer between tags 1 and 2. To make it easier to use with multiple files where all check boxes
           are unchecked, these commands behave in the same way when all check boxes are checked and when all
           check boxes are unchecked.

           From Tag 2: The tag 1 fields are set from the corresponding values in tag 2. If a single file is
           selected, the GUI controls are filled with the values from tag 2. If multiple files are selected, the
           tags of the files are directly set.

           Copy: The copy buffer is filled with the Tag 1 values. Only values with checked check box will be
           used in subsequent Paste commands.

           Paste: Pastes the values from the copy buffer into the GUI controls.

           Remove: This will set all GUI controls to their empty values which results in removing all values.
           The saved file will then contain no tag 1.

       Tag 2

           The GUI controls function in the same way as described for the Tag 1 section, but the size of the
           strings is not limited.

           For the tag 2 Genre you can also use your own names besides the genres listed in the combo box, just
           type the name into the line edit.

           The tag 2 cannot only contain the same values as the tag 1, the format is built in a flexible way
           from several frames which are themselves composed of several fields. The tag 2 table shows all the
           frames which are available in the selected file.

           Edit: This will open a window which allows one to edit all fields of the selected frame. If multiple
           files are selected, the edited fields are applied to all selected files which contain such a frame.

           Add: A requester to select the frame type will appear and a frame of the selected type can be edited
           and added to the file. This works also to add a frame to multiple selected files.

           Delete: Deletes the selected frame in the selected files.

           Drag album artwork here is shown if the file does not contain embedded cover art. A picture can be
           added using drag and drop from a browser or file manager and will be displayed here. Picture frames
           can be edited or added by double clicking on this control.

       Tag 3

           Some files can have more than two tags, and a third tag section is visible. The following file types
           can have such a Tag 3 section:

           •   MP3 files can have an ID3v1.1 tag, an ID3v2 (2.3.0 or 2.4.0) tag and in the third section an APE
               tag. Such APE tags are used for replay gain information. In the Tag 3 section, this information
               is visible, and the APE tag can be removed with the Remove button.

           •   The RIFF INFO chunk of WAV files is available in the Tag 3 section because the Tag 1 section is
               dedicated to ID3v1.1 tags and handles their restrictions. The Tag 2 is still used for ID3v2.4.0
               tags, which are also supported for WAV files, but RIFF INFO chunks seem to be supported better.

           •   FLAC files normally use a Vorbis comment for their meta data. However, there are FLAC files which
               have ID3v1 and ID3v2 tags, which can be found in the Tag 1 and Tag 3 sections. ID3 tags in FLAC
               files are only supported by TagLib, therefore the OggFlacMetadata plugin has to be disabled in
               the Plugins tab of the settings.

           The GUI controls work in the same way as in the Tag 2 section.

       Synchronized Lyrics and Event Timing Codes

           For information synchronized with the audio data, a specific editor is available. These frames are
           supported for ID3v2.3.0 and ID3v2.4.0 tags. To add such a frame, the specific frame name has to be
           selected in the list which appears when the Add button is clicked - Synchronized Lyrics or Event
           Timing Codes, respectively. The editor is the same for both types, for the event timing codes, only a
           predefined set of events is available whereas for the synchronized lyrics, text has to be entered. In
           the following, editing synchronized lyrics is explained.

           A file having an ID3v2 tag is selected, the lyrics editor is entered using Add and selecting
           Synchronized Lyrics. For an existing Synchronized Lyrics frame, it is selected and Edit is clicked.
           The player is automatically opened with the current file so that the file can be played and paused to
           synchronize lyrics.

           The settings at the top of the SYLT editor normally do not have to be changed. If the lyrics contains
           characters which are not present in the Latin 1 character set, changing the text encoding to UTF16
           (or UTF8 for ID3v2.4.0) is advisable. For English lyrics and maximum compatibility, ISO-8859-1 should
           be used.

           The Lyrics section has five buttons at the top.  Add will add a new time event in the table. The time
           is taken from the position of the player, thus adding an entry while playing the track will add a
           line for the currently played position. The events in the table have to be chronologically ordered,
           therefore the row will be inserted accordingly. Entries with an invalid time are treated specially:
           If the currently selected row has an invalid time, its time stamp will be replaced by the current
           time instead of adding a new row. If the current time is not invalid, the first row with an invalid
           time will be used if present. This behavior should facilitate adding time stamps if the lyrics text
           is already in the table but the time stamps are missing (which is the case when importing
           unsynchronized lyrics). Note that the invalid time is represented as 00:00.00, i.e.  the same as the
           time at the absolute beginning of the track, which is not invalid. To make a time invalid, press the
           Delete key, or use Clear from the context menu. New rows inserted using Insert row from the context
           menu or created when importing unsynchronized lyrics with From Clipboard or Import also contain
           invalid time stamps. Rows in the table can be deleted by clicking the Delete button or using Delete
           rows from the context menu.

           Synchronized lyrics can be imported from a file using Import. The expected format is simple or
           enhanced LRC. If the selected file does not contain a square bracket in the first line, it is
           supposed to be a simple text file with unsynchronized lyrics. The lines from such a file are then
           imported having invalid time stamps. The time information can be added using the Add button or by
           manual entry. It is also possible to import lyrics via copy-paste using From Clipboard. Synchronized
           lyrics can be written to LRC files using Export. Note that only entries with valid time stamps will
           be exported and that the entries will be sorted by time. Entries with invalid time won't be stored in
           the SYLT frame either, so make sure to include all timing information before leaving the dialog.

           The ID3 specification[5] suggests a time stamp for each syllable. However most players only support
           the granularity of a line or sentence. To support both use cases, Kid3 follows the same conventions
           as SYLT Editor[6]. Text which is entered into the table is assumed to start a new line unless it
           starts with a space or a hyphen. Exceptions to this rule are possible by starting a line with an
           underscore ('_') to force continuation or a hash mark ('#') to force a new line. These escape
           characters are not stored inside the SYLT frame. Inside the SYLT frame, new lines start with a line
           feed character (hex 0A) whereas continuations do not. When reading SYLT frames, Kid3 checks if the
           first entry starts with a line feed. If this is not the case, it is assumed that all entries are new
           lines and that no syllable continuations are used.

           While the track is played, the row associated with the current playing position is highlighted, so
           that the correctness of the synchronization information can be verified. If an offset has to be added
           to one or more time stamps, this can be accomplished with the Add offset context menu. Negative
           values can be used to reduce the time. Using Seek to position in the context menu, it is possible to
           set the playing position to the time of the selected row.

           Recommended procedure to add new synchronized lyrics

           •   Get the unsynchronized lyrics, e.g.  using Lyrics → Embed Lyrics from the file list context menu.

           •   Copy the unsynchronized lyrics to the clipboard, just go to the Lyrics row in the frame table and
               press Ctrl+C.

           •   Add a synchronized lyrics frame (Add..., Synchronized Lyrics, OK), click From Clipboard.

           •   Now all lines from the unsynchronized lyrics are in the table, all time stamps are invalid
               (0:0:0.00). You can delete empty entries beforehand.

           •   Start playing the song by clicking the play button ► in the play toolbar at the bottom of the
               main window.

           •   When the next lyrics line with invalid timestamp comes, click Add or press Alt+A, the timestamp
               will be updated.

           •   Continue like this until all timestamps are set. If you missed something, stop playback and clear
               the timestamps using the Delete key or by selecting them and using Clear from the context menu.
               To restart playback from a given timestamp, use Seek to position from the context menu.

       Chapters in MP4 Files

           MP4 audiobooks typically have a .m4b extension and are rather large because they contain all chapters
           in a single file. To navigate in such files, they can contain chapter marks, which can be edited in
           Kid3 in a pseudo "Chapters" frame using the same editor which is used for synchronized lyrics. Note,
           however, that this feature is only available with the Mp4v2Metadata plugin, so make sure that it is
           activated and above the TaglibMetadata plugin in the Plugins tab of the settings if you have to edit
           MP4 chapters.

   The File Menu
       File → Open... (Ctrl+O)
           Opens a folder.  All files matching the selected file name filter will be displayed in the file
           listbox and the chosen file is selected.

       File → Open Recent
           Opens a recently opened folder.

       File → Open Folder... (Ctrl+D)
           Opens a folder.  All files matching the selected file name filter will be displayed in the file
           listbox.

       File → Reload (F5)
           Reload folder.  Modified files have to be saved before. Expanded subfolders will be collapsed.

       File → Save (Ctrl+S)
           Saves all changed files in the folder.  The changed files are marked with a disk symbol in the file
           listbox. If any file names have been changed, those files will be renamed.

       File → Revert
           Reverts the changes of one or multiple files.  If no files are selected in the file listbox, the
           changes of all files will be reverted, else only the changes of the selected files are reverted.

       File → Import...
           The Import dialog can be used to import data directly from a freedb.org server, from a MusicBrainz
           server, from Discogs, Amazon or other sources of album track lists in textual format.

           Import from a freedb.org server is possible using a dialog which appears when From Server: gnudb.org
           is selected. The artist and album name to search for can be entered in the two topmost fields, the
           albums which match the query will be displayed when Find is clicked and the results from
           www.gnudb.org[7] are received. Importing the track data for an album is done by double-clicking the
           album in the list. The freedb.org server to import from can be selected as well as the CGI path. The
           imported data is displayed in the preview table of the import dialog. When satisfied with the
           displayed tracks, they can be imported by terminating the import dialog with OK.

           If you already have a search result open in the web browser, you can enter the URL into the first
           search field. The result will then appear in the album list and can be directly imported into Kid3.

           A search on the Discogs server can be performed using Discogs. As in the gnudb.org dialog, you can
           enter artist and album and then choose from a list of releases. A Token can be entered to use the
           RESTful Discogs API instead of their web interface, which is often changed, thereby breaking the
           import parser. You have to register for an account on Discogs[8] and then generate a token on their
           web site (Settings/Developers, Generate new token). Don't forget to Save Settings after entering the
           token in order to use it in subsequent requests too. If Standard Tags is marked, the standard
           information is imported, e.g.  artist, album, and title. If Additional Tags is marked, more
           information is imported if available, e.g.  performers, arrangers, or the publisher. If Cover Art is
           marked, cover art will be downloaded if available.

           A search on Amazon can be performed using Amazon. As in the gnudb.org dialog, you can enter artist
           and album and then choose from a list of releases. If Additional Tags is marked, more information is
           imported if available, e.g.  performers, arrangers, or the publisher. If Cover Art is marked, cover
           art will be downloaded if available.

           You can search in the same way in the release database of MusicBrainz using From MusicBrainz Release.
           The workflow is the same as described for From gnudb.org.

           Import from a MusicBrainz server is possible using the dialog which appears when From MusicBrainz
           Fingerprint is selected. The Server can be selected as in the freedb import dialog. Below is a table
           displaying the imported track data. The right column shows the state of the MusicBrainz query, which
           starts with "Pending" when the dialog is opened. Then the fingerprint is looked up and if it does not
           yield a result, another lookup using the tags in the file is tried. Thus it can be helpful for a
           successful MusicBrainz query to store known information (e.g.  artist and album) in the tags before
           the import. If a result was found, the search ends in the state "Recognized", otherwise nothing was
           found or multiple ambiguous results and one of them has to be selected by the user.  OK and Apply use
           the imported data, Cancel closes the dialog. The closing can take a while since the whole MusicBrainz
           machinery has to be shut down.

           For the import of textual data, From File/Clipboard opens a subdialog, where several preconfigured
           import formats are available. The first two, "CSV unquoted" and "CSV quoted" can be used to import
           data which was exported by the Export dialog. The CSV data can be edited with a spreadsheet, and
           shall be written using tabs as delimiters. Import should then be possible using "CSV quoted", which
           is more flexible than "CSV unquoted". However, its fields cannot contain any double quotes. If you
           only export from Kid3 and import later, "CSV unquoted" can be used as a simple format for this
           purpose. Note that there are also "Export CSV" and "Import CSV" commands in the context menu of the
           file list, which use scripts to export and import CSV data in a more complete, powerful and flexible
           way.

           The next format, "freedb HTML text", can be used to copy information from an HTML page of
           freedb.org[9]. Search an album in freedb and if the desired information is displayed in the web
           browser, copy the contents to the clipboard. Then click the From Clipboard button and the imported
           tracks will be displayed in the preview table at the top of the dialog. If you are satisfied with the
           imported data, terminate the dialog with OK, which will insert the data into the tags of the current
           folder. The destination (Tag 1, Tag 2 or Tag 1 and Tag 2) can be selected with a combo box. The files
           in the current folder should be in the correct track order to get their tags assigned. This is the
           case if they are numbered.

           The next preconfigured import format, "freedb HTML source", can be used, if the data is available as
           an HTML document. Import is possible using the From File button, which opens a file selector, or
           copying its contents from an editor and then importing from clipboard. This format can be useful for
           offline import, although the HTML document could also be opened in a browser and then be imported in
           the first format via the clipboard.

           More preconfigured formats, e.g.  "Track Title Time", are available. An empty custom format can be
           created with Add to be set by the user. Two lines below the format name can be set with a regular
           expression to capture the fields from the import text. The first regular expression will be parsed
           once per document to gather per-album data such as artist, album, year and genre. The second line is
           tried to match from the start of the document to the end to get track data, usually number and title.
           The regular expressions include all the features offered by Qt(TM), which is most of the what Perl
           offers. Bracketing constructs "(..)" create capture buffers for the fields to import and are preceded
           by Kid3 specific codes to specify which field to capture. The codes are the same as used for the
           filename format, besides the codes listed below, any frame name is possible:

           •   %s %{title} Title (Song)

           •   %a %{artist} Artist

           •   %l %{album} Album

           •   %c %{comment} Comment

           •   %y %{year} Year

           •   %t %{track} Track

           •   %g %{genre} Genre

           •   %d %{duration} Duration

           For example, a track regular expression (second line) to import from an .m3u playlist could be
           "%{track}(\d+)\s+%{title}(\S[^\r\n]*)\.mp3[\r\n]". All formats can be changed by editing the regular
           expressions and the name and then clicking Save Settings. They will be stored in the kid3rc file in
           the configuration folder. This file can be directly edited to have more import formats or it can be
           deleted to revert to the default formats. Formats can be deleted using Remove.

           Accuracy shows an estimation of how good the imported information matches the given tracks. It uses
           track durations or file names to calculate the level of similarity in percent.  Cover Art shows the
           URL of the album cover image which will be downloaded.

           To check whether the imported tracks match the current set of files, the duration of the imported
           tracks can be compared with the duration of the files. This option can be enabled with the check box
           Check maximum allowable time difference (sec): and the maximum tolerated difference in time can be
           set in seconds. If a mismatch in a length is detected, the length is displayed with a red background
           in the preview table.

           If the files are ordered differently than the imported tracks, their assigned tracks have to be
           changed. This task can be facilitated using the Match with option with the buttons Length, Track, and
           Title, which will reorder the tracks according to the corresponding field. To correct the assignments
           manually, a track can be dragged with the left mouse button and the Ctrl key hold down, and then
           dropped at the new location.

           When the import dialog is opened, it contains the actual contents of the tags. The tag type (Tag 1,
           Tag 2, Tag 1 and Tag 2) can be selected using the Destination combo box. The button on the right of
           this combo box can be used to revert the table to the current contents of the tags. The check boxes
           in the first table column can be used to select the tracks which are imported. This can be useful if
           a folder contains the tracks of both CDs of a double CD and only the tracks of the second CD have to
           be imported.

           To identify the tracks which are imported, it is possible to display the file names or the full paths
           to the files using the context menu of the table header. The values in the import table can be
           edited. The revert-button to the right of the Destination combo box can be used to restore the
           contents of the tags, which can also be useful after changing the Destination.

           Almost all dialogs feature a Save Settings button, which can be used to store the dialog specific
           settings and the window size persistently.

           From Tags leads to a subdialog to set tag frames from the contents of other tag frames. This can be
           used to simply copy information between tags or extract a part from one frame and insert it in
           another.

           As in the import from file/clipboard dialog, there are freely configurable formats to perform
           different operations. Already preconfigured are formats to copy the Album value to Album Artist,
           Composer or Conductor, and to extract the Track Number from Title fields which contain a number.
           There is also a format to extract a Subtitle from a Title field.

           The following example explains how to add a custom format, which sets the information from the
           Subtitle field also in the Comment field. Create a new format using Add button and set a new name,
           e.g.  "Subtitle to Comment". Then enter "%{subtitle}" in Source and "%{comment}(.*)" for Extraction
           and click Save Settings.

           The expression in Source can contain format codes for arbitrary tag frames, multiple codes can be
           used to combine the contents from different frames. For each track, a text is generated from its tags
           using the Source format, and the regular expression from Extraction is applied to this text to set
           new values for the tags. Format codes are used before the capturing parentheses to specify the tag
           frame where the captured text shall be stored. It works in the same way as for the import from
           file/clipboard.

           Import from Tags...  is also directly available from the File menu. The difference between these two
           functions is that the import dialog subdialog operates on all files of the current folder whereas the
           menu function operates on the selected files (which can be in different folders). The menu function
           supports an additional code "%{__return}" to return the extracted value, which can be useful with the
           CLI and QML interfaces.

       File → Import from gnudb.org...
           Import from a freedb.org server using gnudb.org album search.  This menu item opens the same import
           dialog as Import..., but opens directly the gnudb.org dialog.

       File → Import from Discogs...
           Import from the Discogs server.  This menu item opens the same import dialog as Import..., but opens
           directly the From Discogs dialog.

       File → Import from Amazon...
           Import from Amazon.  This menu item opens the same import dialog as Import..., but opens directly the
           From Amazon dialog.

       File → Import from MusicBrainz Release...
           Import from the MusicBrainz release database.  This menu item opens the same import dialog as
           Import..., but opens directly the From MusicBrainz Release dialog.

       File → Import from MusicBrainz Fingerprint...
           Import from a MusicBrainz server.  This menu item opens the same import dialog as Import..., but
           opens directly the From MusicBrainz Fingerprint dialog.

       File → Import from Tags...
           Like From Tags, but the import is applied to the selected files.

       File → Automatic Import...
           Automatic Import allows one to import information for multiple albums from various web services. If
           folders are selected in the file list, track data for the selected folders will be imported. If no
           folder is selected, all folders in the file list will be imported.

           The tag type (Tag 1, Tag 2, Tag 1 and Tag 2) can be selected using the Destination combo box.

           Profiles determine which servers will be contacted to fetch album information. Some profiles are
           predefined (All, MusicBrainz, Discogs, Cover Art), custom profiles can be added using the Add button
           at the right of the Profile combo box.

           The table below shows the servers which will be used when importing album information using the
           selected profile. The import process for an album is finished if all required information has been
           found, so the order of the rows in the table is important. It can be changed using the Move Up and
           Move Down buttons.  Edit can be used to change an existing entry. The Server selection offers the
           same servers as can be used in the import functions.  Standard Tags, Additional Tags, Cover Art
           determine the information which shall be fetched from the server. Finally, Accuracy is the minimum
           accuracy which must be achieved to accept the imported data. If the accuracy is insufficient, the
           next server in the list will be tried. The same dialog containing the server properties appears when
           Add is clicked to add a new server entry. Existing entries can be deleted using Remove.

           To launch an automatic batch import with the selected profile, click Start. Details about the running
           import are displayed at the top of the dialog. The process can be aborted with the Abort button.

       File → Browse Cover Art...
           The Browse Cover Art dialog helps to find album cover art.  Artist/Album is filled from the tags if
           possible.  Source offers a variety of websites with album cover art. The URL with artist and album as
           parameters can be found beneath the name.  URL-encoded values for artist and album can be inserted
           using "%u{artist}" and "%u{album}", other values from the tags are possible too, as described in
           Configure Kid3, User Actions. More sources can be entered after the entry "Custom Source" by
           replacing "Custom Source" with the source's name, pressing Enter, then inserting the URL and finally
           pressing Save Settings. The resulting browser command is displayed at the top of the dialog and can
           be started by clicking Browse. The browser, which can be configured in the settings, is started with
           the selected source. A cover image can then be dragged from the browser into the Kid3 window and will
           be set in the picture frame of the selected files.

           Because not all browsers support drag and drop of images and the pictures on websites often have a
           URL, in such cases Kid3 will receive the URL and not the picture. If the URL points to a picture, it
           will be downloaded. However, if the URL refers to some other web resource, it has to be translated to
           the corresponding picture. Such mappings are defined in the table URL extraction. The left column
           Match contains a regular expression which is compared with the URL. If it matches, the captured
           expressions in parentheses are inserted into the pattern of the right Picture URL column (at the
           positions marked with \1 etc.). The replaced regular expression contains the URL of the picture. By
           this means cover art can be imported from Amazon, Google Images, etc.  using drag and drop. It is
           also possible to define your own mappings.

       File → Export...
           The Export Dialog is used to store data from the tags in a file or the clipboard. The editor at the
           top shows a preview of the data to export. If the export data contain tabulator characters, the
           export is displayed in a table. The data will be generated from the tags in the current folder
           according to the configured format.

           The format settings are similar as in the Import dialog: The topmost field contains the title (e.g.
           "CSV unquoted"), followed by the header, which will be generated at the begin of the file. The track
           data follows; it is used for every track. Finally, the trailer can be used to generate some finishing
           text.

           The format fields do not contain regular expressions as in the Import dialog, but only output format
           expressions with special %-expressions, which will be replaced by values from the tags. The whole
           thing works like the file name format, and the same codes are used plus some additional codes. Not
           only the codes listed below but all tag frame names can be used.

           •   %s %{title} Title (Song)

           •   %a %{artist} Artist

           •   %l %{album} Album

           •   %c %{comment} Comment

           •   %y %{year} Year

           •   %t %{track} Track (e.g.  01)

           •   %t %{track.n} Track with field width n (e.g.  001 for %{track.3})

           •   %T %{tracknumber} Track (without leading zeros, e.g.  1)

           •   %g %{genre} Genre

           •   %f %{file} File name

           •   %p %{filepath} Path

           •   %{modificationdate} Modification date

           •   %{creationdate} Creation date

           •   %u %{url} URL

           •   %{dirname} Folder name

           •   %d %{duration} Duration in minutes:seconds

           •   %D %{seconds} Duration in seconds

           •   %n %{tracks} Number of tracks of the album

           •   %e %{extension} File extension

           •   %O %{tag1} The format of tag 1 (ID3v1.1 or empty if not existing)

           •   %o %{tag2} The format of tag 2 (ID3v2.3.0, ID3v2.4.0, ID3v2.2.0, ID3v2.2.1, Vorbis, APE, MP4,
               ASF, or empty if not existing)

           •   %b %{bitrate} Bit rate in kbit/s

           •   %v %{vbr} VBR or empty (only for ID3v2.3 with id3lib)

           •   %r %{samplerate} Sample rate in Hz

           •   %m %{mode} Channel mode (Stereo or Joint Stereo)

           •   %h %{channels} Number of channels (1 or 2)

           •   %k %{codec} Codec (e.g.  MPEG 1 Layer 3, MP4, Ogg Vorbis, FLAC, MPC, APE, ASF, AIFF, WAV)

           A few formats are predefined. "CSV unquoted" separates the fields by tabs. Data in this format can be
           imported again into Kid3 using the import format with the same name. "CSV quoted" additionally
           encloses the fields by double quotes, which eases the import into spreadsheet applications. However,
           the fields shall not contain any double quotes when this format is used. "Extended M3U" and "Extended
           PLS" generate playlists with extended attributes and absolute path names. "HTML" can be used to
           generate an HTML page with hyperlinks to the tracks. "Kover XML" creates a file which can be imported
           by the cover printing program Kover. "Technical Details" provides information about bit rate, sample
           rate, channels, etc.  Finally, "Custom Format" is left empty for definition of a custom format. You
           can define more formats of your own by adding lines in the file kid3rc in the configuration folder.
           The other formats can be adapted to your needs.

           The Source of the tags to generate the export data (Tag 1 or Tag 2) can be selected with a combo box.
           Pushing To File or To Clipboard stores the data in a file or on the clipboard.  OK and Cancel close
           the dialog, whereas OK accepts the current dialog settings.

       File → Create Playlist...
           Creates a playlist.  The format and contents of the playlist can be set by various options.

           The name of the playlist can be the Same as folder name or use a Format with values from the tags,
           e.g.  "%{artist} - %{album}" to have the artist and album name in the playlist file name. The format
           codes are the same as for Export. The list of available formats can be edited in the Format section
           of the Files tab in the settings.  Create new empty playlist will make an empty playlist with the
           given name. The extension depends on the playlist format.

           The location of the generated playlist is determined by the selection of the Create in combo box.

           Current folder
               The playlist is created in the current folder and contains only files of the current folder. The
               current folder is the folder where the current file is located. If multiple files are selected,
               the current file is probably the last selected file.

           Every folder
               A playlist is created in every folder which contains listed files, and each playlist contains the
               files of that folder.

           Top-level folder
               Only one playlist is created in the top-level folder (i.e.  the folder of the file list) and it
               contains the listed files of the top-level folder and all of its sub-folders.

           The Format of the playlist can be M3U, PLS or XSPF.

           If Include only the selected files is checked, only the selected files will be included in the
           playlist. If a folder is selected, all of its files are selected. If this check box is not activated,
           all audio files are included in the playlist.

           Sort by file name selects the usual case where the files are ordered by file name. With Sort by tag
           field, it is possible to sort by a format string with values from tag fields. For instance,
           "%{track.3}" can be used to sort by track number (the ".3" is used to get three digits with leading
           zeros because strings are used for sorting). It is also possible to use multiple fields, e.g.
           "%{genre}%{year}" to sort using a string composed of genre and year.

           The playlist entries will have relative or absolute file paths depending on whether Use relative path
           for files in playlist or Use full path for files in playlist is set.

           When Write only list of files is set, the playlist will only contain the paths to the files. To
           generate an extended playlist with additional information, a format string can be set using the Write
           info using control.

       File → Quit (Ctrl+Q)
           Quits the application.

   The Edit Menu
       Edit → Select All (Alt+A)
           Selects all files.

       Edit → Deselect (Ctrl+Shift+A)
           Deselects all files.

       Edit → Select All in Folder
           Selects all files of the current folder.

       Edit → Previous File (Alt+Up)
           Selects the previous file.

       Edit → Next File (Alt+Down)
           Selects the next file.

       Edit → Find... (Ctrl+F)
           Find strings in the file names and the tags. The Find dialog is a subset of the Replace dialog, which
           is described below.

       Edit → Replace... (Ctrl+R)
           This function opens a dialog to find and replace strings in the file names and the tags. The set of
           frames where the search is performed can be restricted by deactivating the Select all check box and
           selecting the frames which shall be searched. There are also search options available to search
           backwards, case sensitively, and to use regular expressions.

           Depending on the number of files, the search might take some time, therefore it can be aborted by
           closing the dialog.

   The Tools Menu
       Tools → Apply Filename Format
           When Automatically apply format is switched off for the filename format in the configuration dialog,
           this menu item can be used to apply the configured format to the names of the selected files. This
           can also be used to check whether the file names conform with the configured format by applying the
           format to all saved files and then checking if any files were changed (and therefore marked with a
           disk symbol in the file listbox).

       Tools → Apply Tag Format
           When Automatically apply format is switched off for the tag format in the configuration dialog, this
           menu item can be used to apply the configured format to the tags of the selected files. This can also
           be used to check whether the tags conform with the configured format by applying the format to all
           saved files and then checking if any files were changed (and therefore marked with a disk symbol in
           the file listbox).

       Tools → Apply Text Encoding
           Sets the Text encoding selected in Settings → Configure Kid3... → Tags section → Tag 2 tab for all
           selected files. If UTF8 is selected, UTF16 will be used for ID3v2.3.0 tags because UTF8 is not
           supported for this format.

       Tools → Rename Folder...
           This dialog offers the possibility to automatically rename the currently open folder according to the
           tags in the files. Several formats are preconfigured to include information about artist, album and
           year in the folder name. It is also possible to set a custom format and Edit the list of available
           formats. The following special codes are used to insert tag values into the folder name:

           •   %s %{title} Title (Song)

           •   %a %{artist} Artist

           •   %l %{album} Album

           •   %c %{comment} Comment

           •   %y %{year} Year

           •   %t %{track} Track (e.g.  01)

           •   %t %{track.n} Track with field width n (e.g.  001 for %{track.3})

           •   %T %{tracknumber} Track (without leading zeros, e.g.  1)

           •   %g %{genre} Genre

           •   %{dirname} Folder name (e.g.  %{year" "}%{dirname} will prepend the year to the current folder
               name)

           •   %{max-year} The maximum year value found for this folder, can also be used with other codes than
               "year"

           •   %{min-year} The minimum year value found for this folder

           •   %{unq-year} The unique year value found for this folder or empty if not unique

           If a folder separator "/" is found in the format, multiple folders are created. If you want to create
           a new folder instead of renaming the current folder, in the Action combo box select Create Folder
           instead of Rename Folder. The Source of the tag information can be chosen between Tag 1 and Tag 2,
           Tag 1 and Tag 2. A preview for the rename operation performed on the first file can be seen in the
           From and To sections of the dialog.

           Multiple folders can be renamed by selecting them.

       Tools → Number Tracks...
           If the track numbers in the tags are not set or have the wrong values, this function can number the
           tracks automatically in ascending order. The start number can be set in the dialog. If only part of
           the tracks have to be numbered, they must be selected.

           When Total number of tracks is checked, the number of tracks will also be set in the tags.

           It is possible to number the tracks over multiple folders. The folders have to be expanded and
           selected.

           If Reset counter for each folder is checked, track numbering is restarted with the given number for
           each folder when multiple folders are selected.

           The number tracks dialog can also be used to format existing track numbers without changing the
           values when the check box left to Start number is deactivated. The total number of tracks will be
           added if the corresponding check box is active, which can be used to set the total for all selected
           tracks. If only formatting of the existing numbers is desired, this check box has to be deactivated
           too.

       Tools → Filter...
           The filter can be used to display only those files which match certain criteria. This is helpful if
           you want to organize a large collection and only edit those files which are not in the desired
           scheme. The expression defining which files to display uses the same format codes which are used in
           the file name format, import and export.

           •   %s %{title} Title (Song)

           •   %a %{artist} Artist

           •   %l %{album} Album

           •   %c %{comment} Comment

           •   %y %{year} Year

           •   %t %{track} Track (e.g.  01)

           •   %t %{track.n} Track with field width n (e.g.  001 for %{track.3})

           •   %T %{tracknumber} Track (without leading zeros, e.g.  1)

           •   %g %{genre} Genre

           •   %f %{file} File name

           •   %p %{filepath} Absolute path to file

           •   %e %{extension} File extension

           •   %O %{tag1} The format of tag 1 (ID3v1.1 or empty if not existing)

           •   %o %{tag2} The format of tag 2 (ID3v2.3.0, ID3v2.4.0, ID3v2.2.0, ID3v2.2.1, Vorbis, APE, MP4,
               ASF, or empty if not existing)

           •   %b %{bitrate} Bit rate in kbit/s

           •   %v %{vbr} VBR or empty (only for ID3v2.3 with id3lib)

           •   %r %{samplerate} Sample rate in Hz

           •   %m %{mode} Channel mode (Stereo or Joint Stereo)

           •   %h %{channels} Number of channels (1 or 2)

           •   %k %{codec} Codec (e.g.  MPEG 1 Layer 3, MP4, Ogg Vorbis, FLAC, MPC, APE, ASF, AIFF, WAV)

           •   %w %{marked} Marked, is 1 if the file is marked (e.g.  because of truncation or standard
               violation), empty otherwise

           •   %1a %1{artist}, ... Use the prefix 1 to get values of tag 1

           •   %2a %2{artist}, ... Use the prefix 2 to get values of tag 2

           These codes are replaced with the values for the file, and the resulting strings can be compared with
           the following operations:

           •   s1 equals s2: true if s1 and s2 are equal.

           •   s1 contains s2: true if s1 contains s2, i.e.  s2 is a substring of s1.

           •   s matches re: true if s matches the regular expression re.

           True expressions are replaced by 1, false by 0. True values are represented by 1, true, on and yes,
           false values by 0, false, off and no. Boolean operations are not, and, or (in this order of
           precedence) and can be grouped by parentheses.

           Some filter rules are predefined and can serve as examples for your own expressions:

           All
               When the file list is filtered - this is shown by "[filtered]" in the window title - and all
               files shall be displayed again, the filtering can be reverted using this filter. It uses an empty
               expression, but a true value would have the same effect.

           Filename Tag Mismatch
                not (%{filepath} contains "%{artist} - %{album}/%{track} %{title}")

               Tests if the file path conforms with the file name format. This rule is automatically adapted if
               the file name format changes.

           No Tag 1
                %{tag1} equals ""

               Displays only files which do not have a tag 1.

           No Tag 2
                %{tag2} equals ""

               Displays only files which do not have a tag 2.

           ID3v2.3.0 Tag
                %{tag2} equals "ID3v2.3.0"

               Displays only files which have an ID3v2.3.0 tag.

           ID3v2.4.0 Tag
                %{tag2} equals "ID3v2.4.0"

               Displays only files which have an ID3v2.4.0 tag.

           Tag 1 != Tag 2
                not (%1{title} equals %2{title} and %1{album} equals %2{album} and %1{artist} equals %2{artist}
               and %1{comment} equals %2{comment} and %1{year} equals %2{year} and %1{track} equals %2{track}
               and %1{genre} equals %2{genre})

               Displays files with differences between tag 1 and tag2.

           Tag 1 == Tag 2
                %1{title} equals %2{title} and %1{album} equals %2{album} and %1{artist} equals %2{artist} and
               %1{comment} equals %2{comment} and %1{year} equals %2{year} and %1{track} equals %2{track} and
               %1{genre} equals %2{genre}

               Displays files with identical tag 1 and tag 2.

           Incomplete
                %{title} equals "" or %{artist} equals "" or %{album} equals "" or %{year} equals "" or
               %{tracknumber} equals "" or %{genre} equals ""

               Displays files with empty values in the standard tags (title, artist, album, date, track number,
               genre).

           No Picture
                %{picture} equals ""

               Displays only files which do not have a picture.

           Marked
                not (%{marked} equals "")

               Displays only files which are marked because they violate the ID3 standard, are truncated or the
               picture is too large.

           Custom Filter
               To add your own filter, select this entry. For instance, if you want to have a filter for artists
               starting with "The", replace "Custom Filter" with the name "The Bands" and press Enter. Then
               insert the following expression into the line edit:

                %{artist} matches "The.*"

               Then click Save Settings. Click Apply to filter the files. All files processed are displayed in
               the text view, with a "+" for those who match the filter and a "-" for the others. When finished,
               only the files with an artist starting with "The" are displayed, and the window title is marked
               with "[filtered]".

       Tools → Convert ID3v2.3 to ID3v2.4
           If there are any ID3v2.3 tags in the selected files, they will be converted to ID3v2.4 tags. Frames
           which are not supported by TagLib will be discarded. Only files without unsaved changes will be
           converted.

       Tools → Convert ID3v2.4 to ID3v2.3
           If there are any ID3v2.4 tags in the selected files, they will be converted to ID3v2.3 tags. Only
           files without unsaved changes will be converted.

       Tools → Play
           This opens a simple toolbar to play audio files. It contains buttons for the basic operations
           (Play/Pause, Stop playback, Previous Track, Next Track, Close), sliders for position and volume and a
           display of the current position. If multiple files are selected, the selected tracks are played, else
           all files will be played.

           The time displayed can be toggled between elapsed and remaining time by clicking on the display.

   The Settings Menu
       Settings → Show Toolbar
           Toggles displaying of the toolbar.

       Settings → Show Statusbar
           Toggles displaying of the statusbar, which displays longer actions such as opening or saving a
           folder.

       Settings → Show Picture
           Toggles displaying of the album cover art preview picture.

       Settings → Auto Hide Tags
           Empty tags are automatically hidden if this option is active. The File, Tag 1 and Tag 2 sections can
           be manually collapsed and expanded by clicking on the corresponding -/+ buttons.

       Settings → Configure Shortcut keys...
           Opens a dialog to assign keyboard shortcuts for most of the program functions. There are even
           functions without corresponding menu or button available, e.g.  next file, previous file, select all.

       Settings → Configure Kid3...
           Opens the configuration dialog, which consists of pages for tags, files, user actions, and network
           settings.

           Tag specific options can be found on the Tags page, which is itself separated into four tabs for Tag
           1, Tag 2, Tag 3, and All Tags.

           If Mark truncated fields is checked, truncated ID3v1.1 fields will be marked red. The text fields of
           ID3v1.1 tags can only have 30 characters, the comment only 28 characters. Also the genre and track
           numbers are restricted, so that fields can be truncated when imported or transferred from ID3v2.
           Truncated fields and the file will be marked red, and the mark will be removed after the field has
           been edited.

           With Text encoding for ID3v1 it is possible to set the character set used in ID3v1 tags. This
           encoding is supposed to be ISO-8859-1, so it is recommended to keep this default value. However,
           there are tags around with different encoding, so it can be set here and the ID3v1 tags can then be
           copied to ID3v2 which supports Unicode.

           The check box Use track/total number of tracks format controls whether the track number field of
           ID3v2 tags contains simply the track number or additionally the total number of tracks in the folder.

           When Genre as text instead of numeric string is checked, all ID3v2 genres will be stored as a text
           string even if there is a corresponding code for ID3v1 genres. If this option is not set, genres for
           which an ID3v1 code exists are stored as the number of the genre code (in parentheses for ID3v2.3).
           Thus the genre Metal is stored as "Metal" or "(9)" depending on this option. Genres which are not in
           the list of ID3v1 genres are always stored as a text string. The purpose of this option is improved
           compatibility with devices which do not correctly interpret genre codes.

           When WAV files with lowercase id3 chunk is checked, the RIFF chunk used to store ID3v2 tags in WAV
           files will be named "id3 " instead of "ID3 ". By default, Kid3 and other applications using TagLib
           accept both the lowercase and the uppercase variant when reading WAV files, but they use "ID3 " when
           writing ID3v2 tags to WAV files. As there exist other applications which only accept "id3 " (e.g.
           JRiver Media Center and foobar2000), this option can be used to create tags which can be read by such
           applications.

           When Mark standard violations is checked, ID3v2 fields which violate the standard will be marked red.
           Details about the violation are shown in a tooltip:

           •   Must be unique

           •   New line is forbidden

           •   Carriage return is forbidden

           •   Owner must be non-empty

           •   Must be numeric

           •   Must be numeric or number/total

           •   Format is DDMM

           •   Format is HHMM

           •   Format is YYYY

           •   Must begin with a year and a space character

           •   Must be ISO 8601 date/time

           •   Must be musical key, 3 characters, A-G, b, #, m, o

           •   Must have ISO 639-2 language code, 3 lowercase characters

           •   Must be ISRC code, 12 characters

           •   Must be list of strings separated by '|'

           •   Has excess white space

           The ID3 standard documents are available online:

           •   ID3 tag version 2.3.0[10]

           •   ID3 tag version 2.4.0 - Main Structure[11]

           •   ID3 tag version 2.4.0 - Native Frames[5]

           Text encoding defines the default encoding used for ID3v2 frames and can be set to ISO-8859-1, UTF16,
           or UTF8.  UTF8 is not valid for ID3v2.3.0 frames; if it is set, UTF16 will be used instead. For
           ID3v2.4.0 frames, all three encodings are possible.

           Version used for new tags determines whether new ID3v2 tags are created as version 2.3.0 or 2.4.0.

           Track number digits is the number of digits in Track Number fields. Leading zeros are used to pad.
           For instance, with a value of 2 the track number 5 is set as "05".

           The combo box Comment field name is only relevant for Ogg/Vorbis and FLAC files and sets the name of
           the field used for comments. Different applications seem to use different names, "COMMENT" for
           instance is used by XMMS, whereas Amarok uses "DESCRIPTION".

           The format of pictures in Ogg/Vorbis files is determined by Picture field name, which can be
           "METADATA_BLOCK_PICTURE" or "COVERART". The first is the official standard and uses the same format
           as pictures in FLAC tags. "COVERART" is an earlier unofficial way to include pictures in Vorbis
           comments. It can be used for compatibility with legacy players.

           If the Mark if larger than (bytes) check box is activated, files containing embedded album cover art
           exceeding the given size in bytes are marked red. This can be used to find files containing oversized
           pictures which are not accepted by some applications and players. The default value is 131072 bytes
           (128 KB).

           Custom Genres can be used to define genres which are not available in the standard genre list, e.g.
           "Gothic Metal". Such custom genres will appear in the Genre combo box of Tag 2. For ID3v1.1 tags,
           only the predefined genres can be used.

           The list of custom genres can also be used to reduce the number of genres available in the Genre
           combo box to those typically used. If your collection mostly contains music in the genres Metal,
           Gothic Metal, Ancient and Hard Rock, you can enter those genres and mark Show only custom genres. The
           Tag 2 Genre combo box will then only contain those four genres and you will not have to search
           through the complete genres list for them. In this example, only Metal and Hard Rock will be listed
           in the tag 1 genres list, because those two custom genres entries are standard genres. If Show only
           custom genres is not active, the custom genres can be found at the end of the genres list.

           In Custom Frames, up to eight custom frame names can be defined, which can then be used like the
           unified frames, for example as quick access frames.

           Quick Access Frames defines which frame types are always shown in the Tag 2 section. Such frames can
           then be added without first using the Add button. The order of these quick access frames can be
           changed by dragging and dropping items.

           The combo box Track number field name is only relevant for RIFF INFO and sets the name of the field
           used for track numbers. Track numbers are not specified in the original RIFF standard, there are
           applications which use "ITRK", others use "IPRT".

           Tag Format contains options for the format of the tags. When Automatically apply format is checked,
           the format configuration is automatically used while editing text in the line edits.  Validation
           enables validators in the controls with track/total and date/time values. The Case conversion can be
           set to No changes, All lowercase, All uppercase, First letter uppercase or All first letters
           uppercase. To use locale-aware conversion between lowercase and uppercase characters, a locale can be
           selected in the combobox below. The string replacement list can be set to arbitrary string mappings.
           To add a new mapping, select the From cell of a row and insert the text to replace, then go to the To
           column and enter the replacement text. When the text to replace starts and ends with a slash ("/"), a
           regular expression is used. For regular expressions containing capturing groups, occurrences of \1,
           \2, ... in To are replaced with the string captured by the corresponding capturing group. To remove a
           mapping set the From cell to an empty value (e.g.  by first typing space and then backspace).
           Inserting and deleting rows is also possible using a context menu which appears when the right mouse
           button is clicked. Replacement is only active, if the String replacement check box is checked.

           The table in Rating contains the mapping of star ratings to the effective values stored in the tag.
           The frames with rating information are listed in the Rating row of the frame list. For these frames,
           the rating can be set by giving a number of stars out of five stars. Different tag formats and
           different applications use different values to map the star rating to the value stored in the tag. In
           order to display the correct number of stars, Kid3 will look up a map in this table. The key to look
           up the mapping is the frame name, for example "RATING" as used for Vorbis comments or "IRTD" for RIFF
           INFO. For ID3v2 tags, a combined key is used consisting of the frame ID "POPM" of the Popularimeter
           frame and its "Email" field, separated by a dot. Therefore, different keys for ID3v2 exist, e.g.
           "POPM.Windows Media Player 9 Series" for the mapping used by Windows Media Player and Explorer, and
           simply "POPM" for POPM frames with an empty "Email" field. As multiple entries for "POPM" can exist,
           their order is important. When Kid3 adds a new Popularimeter frame, it will use the first "POPM"
           entry to determine the value to be written into the "Email" field. This value will then specify the
           mapping to be used for star ratings. The first entry is also used if no key was found, it is
           therefore the default entry.

           Besides the Name column containing the keys, the table has columns 1 to 5 for the values to be stored
           when the corresponding number of stars is given. The other way round, the values determine the number
           of stars which are displayed for the value stored in the frame. For instance, the row in the table
           below contains the values 1, 64, 128, 196, 255. The thresholds for the number of stars to be
           displayed lay between these values and are compatible with what the Windows® Explorer uses.

           Table 1. Entry in Rating Table
           ┌───────┬──────┬───────┬────────┬─────────┬─────────┐
           │ Name12345       │
           ├───────┼──────┼───────┼────────┼─────────┼─────────┤
           │ POPM  │ 1    │ 64    │ 128    │ 196     │ 255     │
           ├───────┼──────┼───────┼────────┼─────────┼─────────┤
           │ Range │ 1-31 │ 32-95 │ 96-159 │ 160-223 │ 224-255 │
           └───────┴──────┴───────┴────────┴─────────┴─────────┘

           On the page Files the check box Load last-opened files can be marked so that Kid3 will open and
           select the last selected file when it is started the next time.  Preserve file timestamp can be
           checked to preserve the file modification time stamp.  Filename for cover sets the name which is
           suggested when an embedded image is exported to a file. With Text encoding (Export, Playlist) the
           encoding used when writing files can be set. The default System can be changed for example if
           playlists have to be used on a different device.

           If Mark changes is active, changed fields are marked with a light gray label background.

           The section File List determines which files are displayed in the file list. A Filter can be used to
           restrict the items in this list to files with supported extensions. To explicitly specify which
           folders to display in the file list or exclude certain folders, the options Include folders and
           Exclude folders can be used. They can contain wildcard expressions, for instance */Music/* to include
           only the Music folder, or */iTunes/* to exclude the iTunes folder from the file list. If multiple
           such expressions have to be used, they can be separated by spaces or semicolons.

           The buttons Filename from tag and Tag from filename in section Format open dialogs to edit the
           formats which are available in the Format combo boxes (with arrows up and down), which can be found
           in the File section of the main window.

           The Playlist button can be used to edit the file name formats available in the Create Playlist
           dialog.

           Filename Format contains options for the format of the filenames. The same options as in Tag Format
           are available.

           Additionally, the Maximum length allowed for file names can be set. Most modern file systems have a
           limit of 255 characters, but if you want to burn the files to CD, you should set the limit to 64. If
           Use for playlist and folder names is checked, the file name format is also used when creating
           playlists and renaming folders.

           The User Actions page contains a table with the commands which are available in the context menu of
           the file list. For critical operations such as deleting files, it is advisable to mark Confirm to pop
           up a confirmation dialog before executing the command.  Output can be marked to see the output
           written by console commands (standard output and standard error).  Name is the name displayed in the
           context menu.  Command is the command line to be executed. Arguments can be passed using the
           following codes:

           •   %F %{files} File paths (a list if multiple files selected)

           •   %f %{file} File path to single file

           •   %uF %{urls} URLs (a list if multiple files selected)

           •   %uf %{url} URL to single file

           •   %d %{directory} Folder

           •   %s %{title} Title (Song)

           •   %a %{artist} Artist

           •   %l %{album} Album

           •   %c %{comment} Comment

           •   %y %{year} Year

           •   %t %{track} Track (e.g.  01)

           •   %t %{track.n} Track with field width n (e.g.  001 for %{track.3})

           •   %T %{tracknumber} Track (without leading zeros, e.g.  1)

           •   %g %{genre} Genre

           •   %b %{browser} Command to start the web browser

           •   %q %{qmlpath} Base folder of provided QML files

           The special code @separator can be set as a command to insert a separator into the user actions
           context menu. Menu items can be put into a submenu by enclosing them with @beginmenu and @endmenu
           commands. The name of the submenu is determined by the Name column of the @beginmenu command.

           To execute QML scripts, @qml is used as a command name. The path to the QML script is passed as a
           parameter. The provided scripts can be found in the folder %{qmlpath}/script/ (on Linux® typically
           /usr/share/kid3/qml/script/, on Windows qml/script/ inside the installation folder, and on macOS® in
           the app folder kid3.app/Contents/Resources/qml/script/). Custom scripts can be stored in any folder.
           If the QML code uses GUI components, @qmlview shall be used instead of @qml. Additional parameters
           are passed to the QML script where they will be available via the getArguments() function. An
           overview of some functions and properties which are available in QML can be found in the appendix QML
           Interface.

           The command which will be inserted with %{browser} can be defined in the Web browser line edit above.
           Commands starting with %{browser} can be used to fetch information about the audio files from the
           web, for instance

               %{browser} http://lyricwiki.org/%u{artist}:%u{title}

           will query the lyrics for the current song in LyricWiki[12]. The "u" in %u{artist} and %u{title} is
           used to URL-encode the artist %{artist} and song %{title} information. It is easy to define your own
           queries in the same way, e.g.  an image search with Google[13]:

               %{browser} http://images.google.com/images?q=%u{artist}%20%u{album}

           To add album cover art to tag 2, you can search for images with Google or Amazon using the commands
           described above. The picture can be added to the tag with drag and drop. You can also add an image
           with Add, then select the Picture frame and import an image file or paste from the clipboard. Picture
           frames are supported for ID3v2, MP4, FLAC, Ogg and ASF tags.

           To add and delete entries in the table, a context menu can be used.

           The Network page contains only a field to insert the proxy address and optionally the port, separated
           by a colon. The proxy will be used when importing from an Internet server when the check box is
           checked.

           In the Plugins page, available plugins can be enabled or disabled. The plugins are separated into two
           sections. The Metadata Plugins & Priority list contains plugins which support audio file formats. The
           order of the plugins is important because they are tried from top to bottom. Some formats are
           supported by multiple plugins, so files will be opened with the first plugin supporting them. The
           TaglibMetadata supports most formats, if it is at the top of the list, it will open most of the
           files. If you want to use a different plugin for a file format, make sure that it is listed before
           the TaglibMetadata plugin. Details about the metadata plugin and why you may want to use them instead
           of TagLib are listed below.

           •   Id3libMetadata: Uses id3lib[14] for ID3v1.1 and ID3v2.3 tags in MP3, MP2, AAC files. Supports a
               few more frame types than TagLib.

           •   OggFlacMetadata: Uses libogg[15], libvorbis, libvorbisfile[16] for Ogg files, and additionally
               libFLAC++ and libFLAC[17] for FLAC files. These are the official libraries for these formats.

           •   TaglibMetadata: Uses TagLib[18] which supports a lot of audio file formats. It can be used for
               all audio files supported by Kid3.

           •   Mp4v2Metadata: mp4v2[19] was originally used by Kid3 to support M4A files. Can be used in case of
               problems with the M4A support of TagLib.

           The Available Plugins section lists the remaining plugins. Their order is not important, but they can
           be enabled or disabled using the check boxes.

           •   AmazonImport: Used for the Import from Amazon...  function.

           •   DiscogsImport: Used for the Import from Discogs...  function.

           •   FreedbImport: Used for the Import from gnudb.org...  function.

           •   MusicBrainzImport: Used for the Import from MusicBrainz Release...  function.

           •   AcoustidImport: Used for the Import from MusicBrainz Fingerprint...  function, which depends on
               the Chromaprint[20] and libav[21] libraries.

           Plugins which are disabled will not be loaded. This can be used to optimize resource usage and
           startup time. The settings on this page take only effect after a restart of Kid3.

   The Help Menu
       Help → Kid3 Handbook
           Opens this handbook.

       Help → About Kid3
           Displays a short information about Kid3.

KID3-CLI

   Commands
       kid3-cli offers a command-line-interface for Kid3. If a folder path is used, the folder is opened. If one
       or more file paths are given, the common folder is opened and the files are selected. Subsequent commands
       will then work on these files. Commands are specified using -c options. If multiple commands are passed,
       they are executed in the given order. If files are modified by the commands, they will be saved at the
       end. If no command options are passed, kid3-cli starts in interactive mode. Commands can be entered and
       will operate on the current selection. The following sections list all available commands.

       Help

           help [COMMAND-NAME]

           Displays help about the parameters of COMMAND-NAME or about all commands if no command name is given.

       Timeout

           timeout [default | off | TIME]

           Overwrite the default command timeout. The CLI commands abort after a command specific timeout is
           expired. This timeout is 10 seconds for ls and albumart, 60 seconds for autoimport and filter, and 3
           seconds for all other commands. If a huge number of files has to be processed, these timeouts may be
           too restrictive, thus the timeout for all commands can be set to TIME ms, switched off altogether or
           be left at the default values.

       Quit application

           exit [force]

           Exit application. If there are modified unsaved files, the force parameter is required.

       Change folder

           cd [FOLDER]

           If no FOLDER is given, change to the home folder. If a folder is given, change into the folder. If
           one or more file paths are given, change to their common folder and select the files.

       Print the filename of the current folder

           pwd

           Print the filename of the current working folder.

       Folder list

           ls

           List the contents of the current folder. This corresponds to the file list in the Kid3 GUI. Five
           characters before the file names show the state of the file.

           •   > File is selected.

           •   * File is modified.

           •   1 File has a tag 1, otherwise '-' is displayed.

           •   2 File has a tag 2, otherwise '-' is displayed.

           •   3 File has a tag 3, otherwise '-' is displayed.

               kid3-cli> ls
                 1-- 01 Intro.mp3
               > 12- 02 We Only Got This One.mp3
                *1-- 03 Outro.mp3

           In this example, all files have a tag 1, the second file also has a tag 2 and it is selected. The
           third file is modified.

       Save the changed files

           save

       Select file

           select [all | none | first | previous | next | FILE...]

           To select all files, enter select all, to deselect all files, enter select none. To traverse the
           files in the current folder start with select first, then go forward using select next or backward
           using select previous. Specific files can be added to the current selection by giving their file
           names. Wildcards are possible, so select *.mp3 will select all MP3 files in the current folder.

               kid3-cli> select first
               kid3-cli> ls
               > 1-- 01 Intro.mp3
                 12- 02 We Only Got This One.mp3
                *1-- 03 Outro.mp3
               kid3-cli> select next
               kid3-cli> ls
                 1-- 01 Intro.mp3
               > 12- 02 We Only Got This One.mp3
                *1-- 03 Outro.mp3
               kid3-cli> select *.mp3
               kid3-cli> ls
               > 1-- 01 Intro.mp3
               > 12- 02 We Only Got This One.mp3
               >*1-- 03 Outro.mp3

       Select tag

           tag [TAG-NUMBERS]

           Many commands have an optional TAG-NUMBERS parameter, which specifies whether the command operates on
           tag 1, 2, or 3. If this parameter is omitted, the default tag numbers are used, which can be set by
           this command. At startup, it is set to 12 which means that information is read from tag 2 if
           available, else from tag 1; modifications are done on tag 2. The TAG-NUMBERS can be set to 1, 2, or 3
           to operate only on the corresponding tag. If the parameter is omitted, the current setting is
           displayed.

       Get tag frame

           get [all | FRAME-NAME] [TAG-NUMBERS]

           This command can be used to read the value of a specific tag frame or get information about all tag
           frames (if the argument is omitted or all is used). Modified frames are marked with a '*'.

               kid3-cli> get
               File: MPEG 1 Layer 3 192 kbps 44100 Hz Joint Stereo
                 Name: 01 Intro.mp3
               Tag 1: ID3v1.1
                 Title         Intro
                 Artist        One Hit Wonder
                 Album         Let's Tag
                 Date          2013
                 Track Number  1
                 Genre         Pop
               kid3-cli> get title
               Intro

           To save the contents of a picture frame to a file, use

               get picture:'/path/to/folder.jpg'

           To save synchronized lyrics to an LRC file, use

               get SYLT:'/path/to/lyrics.lrc'

           It is possible to get only a specific field from a frame, for example get POPM.Email for the Email
           field of a Popularimeter frame. If a file has multiple frames of the same kind, the different frames
           can be indexed with brackets, for example the first performer from a Vorbis comment can be retrieved
           using get performer[0], the second using get performer[1].

           The pseudo field name "selected" can be used to check if a frame is selected, for example get
           artist.selected will return 1 if the artist frame is selected, else 0.

           The pseudo frame name "ratingstars" can be used to get the value of the "rating" frame as the format
           specific value corresponding to the number of stars (0 to 5). When using "rating", the internal value
           is returned.

       Set tag frame

           set {FRAME-NAME} {FRAME-VALUE} [TAG-NUMBERS]

           This command sets the value of a specific tag frame. If FRAME-VALUE is empty, the frame is deleted.

               kid3-cli> set remixer 'O.H. Wonder'

           To set the contents of a picture frame from a file, use

               set picture:'/path/to/folder.jpg' 'Picture Description'

           To set synchronized lyrics from an LRC file, use

               set SYLT:'/path/to/lyrics.lrc' 'Lyrics Description'

           To set a specific field of a frame, the field name can be given after a dot, e.g.  to set the Counter
           field of a Popularimeter frame, use

               set POPM.Counter 5

           An application for field specifications is the case where you want a custom TXXX frame with "rating"
           description instead of a standard Popularimeter frame (this seems to be used by some plugins). You
           can create such a TXXX rating frame with kid3-cli, however, you have to first create a TXXX frame
           with description "rating" and then set the value of this frame to the rating value.

               kid3-cli> set rating ""
               kid3-cli> set TXXX.Description rating
               kid3-cli> set rating 5

           The first command will delete an existing POPM frame, because if such a frame exists, set rating 5
           would set the POPM frame and not the TXXX frame. Another possibility would be to use set TXXX.Text 5,
           but this would only work if there is no other TXXX frame present.

           To set multiple frames of the same kind, an index can be given in brackets, e.g.  to set multiple
           performers in a Vorbis comment, use

               kid3-cli> set performer[0] 'Liza don Getti (soprano)'
               kid3-cli> set performer[1] 'Joe Barr (piano)'

           To select certain frames before a copy, paste or remove action, the pseudo field name "selected" can
           be used. Normally, all frames are selected, to deselect all, use set '*.selected' 0, then for example
           set artist.selected 1 to select the artist frame.

           The pseudo frame name "ratingstars" can be used to set the value of the "rating" frame to the format
           specific value corresponding to the number of stars (0 to 5). The frame name "rating" can be used to
           set the internal value.

           Setting "ratingstars" on multiple files having different tag formats will not work because the frame
           with the value mapped from the star count is created for the first file and then used for all files.
           So instead of kid3-cli -c "set ratingstars 2" * you should rather use for f in *; do kid3-cli -c "set
           ratingstars 2" "$f"; done.

       Revert

           revert

           Revert all modifications in the selected files (or all files if no files are selected).

       Import from file

           import {FILE} {FORMAT-NAME} [TAG-NUMBERS]

           Tags are imported from the file FILE in the format with the name FORMAT-NAME (e.g.  "CSV unquoted",
           see Import).

           If tags is given for FILE, tags are imported from other tags. Instead of FORMAT-NAME parameters
           SOURCE and EXTRACTION are required, see Import from Tags. To apply the import from tags on the
           selected files, use tagsel instead of tags. This function also supports output of the extracted value
           by using an EXTRACTION with the value %{__return}(.+).

       Automatic import

           autoimport [PROFILE-NAME] [TAG-NUMBERS]

           Batch import using profile PROFILE-NAME (see Automatic Import, "All" is used if omitted).

       Download album cover artwork

           albumart {URL} [all]

           Set the album artwork by downloading a picture from URL. The rules defined in the Browse Cover Art
           dialog are used to transform general URLs (e.g.  from Amazon) to a picture URL. To set the album
           cover from a local picture file, use the set command.

               kid3-cli> albumart
               http://www.amazon.com/Versus-World-Amon-Amarth/dp/B000078DOC

       Export to file

           export {FILE} {FORMAT-NAME} [TAG-NUMBERS]

           Tags are exported to file FILE in the format with the name FORMAT-NAME (e.g.  "CSV unquoted", see
           Export).

       Create playlist

           playlist

           Create playlist in the format set in the configuration, see Create Playlist.

       Apply filename format

           filenameformat

           Apply file name format set in the configuration, see Apply Filename Format.

       Apply tag format

           tagformat

           Apply tag name format set in the configuration, see Apply Tag Format.

       Apply text encoding

           textencoding

           Apply text encoding set in the configuration, see Apply Text Encoding.

       Rename folder

           renamedir [FORMAT] [create | rename | dryrun] [TAG-NUMBERS]

           Rename or create folders from the values in the tags according to a given FORMAT (e.g.  %{artist} -
           %{album}, see Rename Folder), if no format is given, the format defined in the Rename folder dialog
           is used. The default mode is rename; to create folders, create must be given explicitly. The rename
           actions will be performed immediately, to just see what would be done, use the dryrun option.

       Number tracks

           numbertracks [TRACK-NUMBER] [TAG-NUMBERS]

           Number the selected tracks starting with TRACK-NUMBER (1 if omitted).

       Filter

           filter [FILTER-NAME | FILTER-FORMAT]

           Filter the files so that only the files matching the FILTER-FORMAT are visible. The name of a
           predefined filter expression (e.g.  "Filename Tag Mismatch") can be used instead of a filter
           expression, see Filter.

               kid3-cli> filter '%{title} contains "tro"'
               Started
                 /home/urs/One Hit Wonder - Let's Tag
               + 01 Intro.mp3
               - 02 We Only Got This One.mp3
               + 03 Outro.mp3
               Finished
               kid3-cli> ls
                 1-- 01 Intro.mp3
                 1-- 03 Outro.mp3
               kid3-cli> filter All
               Started
                 /home/urs/One Hit Wonder - Let's Tag
               + 01 Intro.mp3
               + 02 We Only Got This One.mp3
               + 03 Outro.mp3
               Finished
               kid3-cli> ls
                 1-- 01 Intro.mp3
                 12- 02 We Only Got This One.mp3
                 1-- 03 Outro.mp3

       Convert ID3v2.3 to ID3v2.4

           to24

       Convert ID3v2.4 to ID3v2.3

           to23

       Filename from tag

           fromtag [FORMAT] [TAG-NUMBERS]

           Set the file names of the selected files from values in the tags, for example fromtag '%{track} -
           %{title}' 1. If no format is specified, the format set in the GUI is used.

       Tag from filename

           totag [FORMAT] [TAG-NUMBERS]

           Set the tag frames from the file names, for example totag '%{albumartist} - %{album}/%{track}
           %{title}' 2. If no format is specified, the format set in the GUI is used. If the format of the
           filename does not match this pattern, a few other commonly used formats are tried.

       Tag to other tag

           syncto {TAG-NUMBER}

           Copy the tag frames from one tag to the other tag, e.g.  to set the ID3v2 tag from the ID3v1 tag, use
           syncto 2.

       Copy

           copy [TAG-NUMBER]

           Copy the tag frames of the selected file to the internal copy buffer. They can then be set on another
           file using the paste command.

           To copy only a subset of the frames, use the "selected" pseudo field with the set command. For
           example, to copy only the disc number and copyright frames, use

               set '*.selected' 0
               set discnumber.selected 1
               set copyright.selected 1
               copy

       Paste

           paste [TAG-NUMBER]

           Set tag frames from the contents of the copy buffer in the selected files.

       Remove

           remove [TAG-NUMBER]

           Remove a tag.

           It is possible to remove only a subset of the frames by selecting them as described in the copy
           command.

       Configure Kid3

           config [OPTION] [VALUE]

           Query or set a configuration option.

           The OPTION consists of a group name and a property name separated by a dot. When no OPTION is given,
           all available groups are displayed. If only a group name is given, all available properties of the
           group are displayed. For a given group and property, the currently configured value is displayed. To
           change the setting, the new value can be passed as a second argument.

           If the value of a setting is a list, all list elements have to be given as arguments. This means that
           to append an element to an existing list of elements, all existing elements have to be passed
           followed by the new element. In such a situation, it is easier to use the JSON mode, where the
           current list can be copied with the new element appended.

       Execute program or QML script

           execute [@qml] {FILE} [ARGS]

           Execute a QML script or an executable.

           Without @qml a program is executed with arguments. When @qml is given as the first argument, the
           following arguments are the QML script and its arguments. For example, the tags of a folder can be
           exported to the file export.csv with the following command.

               kid3-cli -c "execute @qml
               /usr/share/kid3/qml/script/ExportCsv.qml export.csv"
               /path/to/folder/

           Here export.csv is the argument for the ExportCsv.qml script, whereas /path/to/folder/ is the FILE
           argument for kid3-cli.

   Examples
       Set title containing an apostrophe. Commands passed to kid3-cli with -c have to be in quotes if they do
       not only consist of a single word. If such a command itself has an argument containing spaces, that
       argument has to be quoted too. In UNIX® shells single or double quotes can be used, but on the Windows
       Command Prompt, it is important that the outer quoting is done using double quotes and inside these
       quotes, single quotes are used. If the text inside the single quotes contains a single quote, it has to
       be escaped using a backslash character, as shown in the following example:

           kid3-cli -c "set title 'I\'ll be there for you'" /path/to/folder

       Set album cover in all files of a folder using the batch import function:

           kid3-cli -c "autoimport 'Cover Art'" /path/to/folder

       Remove comment frames and apply the tag format in both tags of all MP3 files of a folder:

           kid3-cli -c "set comment '' 1" -c "set comment '' 2" \
           -c "tagformat 1" -c "tagformat 2" /path/to/folder/*.mp3

       Automatically import tag 2, synchronize to tag 1, set file names from tag 2 and finally create a
       playlist:

           kid3-cli -c autoimport -c "syncto 1" -c fromtag -c playlist \
             /path/to/folder/*.mp3

       For all files with an ID3v2.4.0 tag, convert to ID3v2.3.0 and remove the arranger frame:

           kid3-cli -c "filter 'ID3v2.4.0 Tag'" -c "select all" -c to23 \
             -c "set arranger ''" /path/to/folder

       This Python script uses kid3-cli to generate iTunes Sound Check iTunNORM frames from replay gain
       information.

           #!/usr/bin/env python3
           # Generate iTunes Sound Check from ReplayGain.
           import os, sys, subprocess

           def rg2sc(dirpath):
             for root, dirs, files in os.walk(dirpath):
               for name in files:
                 if name.endswith(('.mp3', '.m4a', '.aiff', '.aif')):
                   fn = os.path.join(root, name)
                   rg = subprocess.check_output([
                     'kid3-cli', '-c', 'get "replaygain_track_gain"',
                      fn]).strip()
                   if rg.endswith(b' dB'):
                     rg = rg[:-3]
                   try:
                     rg = float(rg)
                   except ValueError:
                     print('Value %s of %s in not a float' % (rg, fn))
                     continue
                   sc = (' ' + ('%08X' % int((10 ** (-rg / 10)) * 1000) )) * 10
                   subprocess.call([
                     'kid3-cli', '-c', 'set iTunNORM "%s"' % sc, fn])

           if __name__ == '__main__':
             rg2sc(sys.argv[1])

   JSON Format
       In order to make it easier to parse results from kid3-cli, it is possible to get the output in JSON
       format. When the request is in JSON format, the response will also be JSON. A compact format of the
       request will also give a compact representation of the response. If the request contains an "id" field,
       it is assumed to be a JSON-RPC request and the response will contain a "jsonrpc" field and the "id" of
       the request. The request format uses the same commands as the standard CLI, the "method" field contains
       the command and the parameters (if any) are given in the "params" list. The response contains a "result"
       object, which can also be null if the corresponding kid3-cli command does not return a result. In case of
       an error, an "error" object is returned with "code" and "message" fields as used in JSON-RPC.

           kid3-cli> {"method":"set","params":["artist","An Artist"]}
           {"result":null}
           kid3-cli> {"method":"get","params":["artist",2]}
           {"result":"An Artist"}
           kid3-cli> {"method": "get", "params": ["artist"]}
           {
               "result": "An Artist"
           }

           kid3-cli> {"jsonrpc":"2.0","id":"123","method":"get","params":["artist"]}
           {"id":"123","jsonrpc":"2.0","result":"An Artist"}

CREDITS AND LICENSE

       Kid3

       Program written by Urs Fleisch <ufleisch at users.sourceforge.net>

       FDL[22]

       GPL[23]

INSTALLATION

   How to obtain Kid3
       Kid3 can be found at https://kid3.kde.org.

   Requirements
       Kid3 needs Qt(TM)[24].  KDE[25] is recommended but not necessary, as Kid3 can also be compiled as a
       Qt(TM) application.  Kid3 can be compiled for systems where these libraries are available, e.g.  for
       GNU/Linux®, Windows® and macOS®. To tag Ogg/Vorbis files, libogg[15], libvorbis and libvorbisfile[16] are
       required, for FLAC files libFLAC++ and libFLAC[17].  id3lib[14] is used for MP3 files. These four formats
       are also supported by TagLib[18], which can also handle Opus, MPC, APE, MP2, Speex, TrueAudio, WavPack,
       WMA, WAV, AIFF files and tracker modules. To import from acoustic fingerprints, Chromaprint[20] and
       libav[21] are used.

       Kid3 is available for most Linux® distributions, Windows® and macOS®. Links can be found on
       https://kid3.kde.org.

   Compilation and Installation
       You can compile Kid3 with or without KDE. Without KDE, Kid3 is a simple Qt(TM) application and lacks some
       configuration and session features.

       For a KDE version, go into the top folder and type

           % cmake .
           % make
           % make install

       To compile for different versions of Qt(TM) or KDE, set the corresponding cmake options.

       If not all libraries are present, Kid3 is built with reduced functionality. So you should take care to
       have all desired development packages installed. On the other side, cmake-options control which libraries
       are compiled in. The default is -DWITH_TAGLIB:BOOL=ON -DWITH_MP4V2:BOOL=OFF -DWITH_ID3LIB:BOOL=ON
       -DWITH_CHROMAPRINT:BOOL=ON -DWITH_VORBIS:BOOL=ON -DWITH_FLAC:BOOL=ON . These options can be disabled
       using OFF.

       To build Kid3 as a Qt(TM) application without KDE, use the cmake option -DWITH_APPS=Qt. To build both a
       KDE and a Qt(TM) application, set -DWITH_APPS="Qt;KDE".

       To use a specific Qt(TM) installation, set -DQT_QMAKE_EXECUTABLE=/path/to/qmake.

       Generation of RPM-Packages is supported by the file kid3.spec, for Debian® Packages, run build.sh deb.

       The Qt(TM) application can also be compiled for Windows® and macOS®. The script build.sh can be used to
       download and build all required libraries and create a Kid3 package.

   Configuration
       With KDE, the settings are stored in .config/kid3rc, the application state in
       .local/share/kid3/kid3staterc. As a Qt(TM) application, this file is in .config/Kid3/Kid3.conf. On
       Windows®, the configuration is stored in the registry. on macOS® in a plist file.

       The environment variable KID3_CONFIG_FILE can be used to set the path of the configuration file.

D-BUS INTERFACE

   D-Bus Examples
       On Linux® a D-Bus-interface can be used to control Kid3 by scripts. Scripts can be written in any
       language with D-Bus-bindings (e.g.  in Python) and can be added to the User Actions to extend the
       functionality of Kid3.

       The artist in tag 2 of the current file can be set to the value "One Hit Wonder" with the following code:

       Shell

               dbus-send --dest=org.kde.kid3 --print-reply=literal \
               /Kid3 org.kde.Kid3.setFrame int32:2 string:'Artist' \
               string:'One Hit Wonder'

           or easier with Qt(TM)'s qdbus (qdbusviewer can be used to explore the interface in a GUI):

               qdbus org.kde.kid3 /Kid3 setFrame 2 Artist \
               'One Hit Wonder'

       Python

               import dbus
               kid3 = dbus.SessionBus().get_object(
                 'org.kde.kid3', '/Kid3')
               kid3.setFrame(2, 'Artist', 'One Hit Wonder')

       Perl

               use Net::DBus;
               $kid3 = Net::DBus->session->get_service(
                 "org.kde.kid3")->get_object(
                 "/Kid3", "org.kde.Kid3");
               $kid3->setFrame(2, "Artist", "One Hit Wonder");

   D-Bus API
       The D-Bus API is specified in org.kde.Kid3.xml. The Kid3 interface has the following methods:

       Open file or folder

           boolean openDirectory(string path);

           path
               path to file or folder

           Returns true if OK.

       Unload the tags of all files which are not modified or selected

           unloadAllTags(void);

       Save all modified files

           boolean save(void);

           Returns true if OK.

       Get a detailed error message provided by some methods

           string getErrorMessage(void);

           Returns detailed error message.

       Revert changes in the selected files

           revert(void);

       Start an automatic batch import

           boolean batchImport(int32 tagMask, string profileName);

           tagMask
               tag mask (bit 0 for tag 1, bit 1 for tag 2)

           profileName
               name of batch import profile to use

       Import tags from a file

           boolean importFromFile(int32 tagMask, string path, int32 fmtIdx);

           tagMask
               tag bit (1 for tag 1, 2 for tag 2)

           path
               path of file

           fmtIdx
               index of format

           Returns true if OK.

       Import tags from other tags

           importFromTags(int32 tagMask, string source, string extraction);

           tagMask
               tag bit (1 for tag 1, 2 for tag 2)

           source
               format to get source text from tags

           extraction
               regular expression with frame names and captures to extract from source text

       Import tags from other tags on selected files

           array importFromTagsToSelection(int32 tagMask, string source, string extraction);

           tagMask
               tag bit (1 for tag 1, 2 for tag 2)

           source
               format to get source text from tags

           extraction
               regular expression with frame names and captures to extract from source text

           returnValues
               extracted value for "%{__return}(.+)"

       Download album cover art

           downloadAlbumArt(string url, boolean allFilesInDir);

           url
               URL of picture file or album art resource

           allFilesInDir
               true to add the image to all files in the folder

       Export tags to a file

           boolean exportToFile(int32 tagMask, string path, int32 fmtIdx);

           tagMask
               tag bit (1 for tag 1, 2 for tag 2)

           path
               path of file

           fmtIdx
               index of format

           Returns true if OK.

       Create a playlist

           boolean createPlaylist(void);

           Returns true if OK.

       Get items of a playlist

           array getPlaylistItems(string path);

           path
               path to playlist file

           Returns list of absolute paths to playlist items.

       Set items of a playlist

           boolean setPlaylistItems(string path, array items);

           path
               path to playlist file

           items
               list of absolute paths to playlist items

           Returns true if OK, false if not all items were found and added or saving failed.

       Quit the application

           quit(void);

       Select all files

           selectAll(void);

       Deselect all files

           deselectAll(void);

       Set the first file as the current file

           boolean firstFile(void);

           Returns true if there is a first file.

       Set the previous file as the current file

           boolean previousFile(void);

           Returns true if there is a previous file.

       Set the next file as the current file

           boolean nextFile(void);

           Returns true if there is a next file.

       Select the first file

           boolean selectFirstFile(void);

           Returns true if there is a first file.

       Select the previous file

           boolean selectPreviousFile(void);

           Returns true if there is a previous file.

       Select the next file

           boolean selectNextFile(void);

           Returns true if there is a next file.

       Select the current file

           boolean selectCurrentFile(void);

           Returns true if there is a current file.

       Expand or collapse the current file item if it is a folder

           boolean expandDirectory(void);

           A file list item is a folder if getFileName() returns a name with '/' as the last character.

           Returns true if current file item is a folder.

       Apply the file name format

           applyFilenameFormat(void);

       Apply the tag format

           applyTagFormat(void);

       Apply text encoding

           applyTextEncoding(void);

       Set the folder name from the tags

           boolean setDirNameFromTag(int32 tagMask, string format, boolean create);

           tagMask
               tag mask (bit 0 for tag 1, bit 1 for tag 2)

           format
               folder name format

           create
               true to create, false to rename

           Returns true if OK, else the error message is available using getErrorMessage().

       Set subsequent track numbers in the selected files

           numberTracks(int32 tagMask, int32 firstTrackNr);

           tagMask
               tag mask (bit 0 for tag 1, bit 1 for tag 2)

           firstTrackNr
               number to use for first file

       Filter the files

           filter(string expression);

           expression
               filter expression

       Convert ID3v2.3 tags to ID3v2.4

           convertToId3v24(void);

       Convert ID3v2.4 tags to ID3v2.3

           convertToId3v23(void);

           Returns true if OK.

       Get path of folder

           string getDirectoryName(void);

           Returns absolute path of folder.

       Get name of current file

           string getFileName(void);

           Returns true absolute file name, ends with "/" if it is a folder.

       Set name of selected file

           setFileName(string name);

           name
               file name

           The file will be renamed when the folder is saved.

       Set format to use when setting the filename from the tags

           setFileNameFormat(string format);

           format
               file name format

       Set the file names of the selected files from the tags

           setFileNameFromTag(int32 tagMask);

           tagMask
               tag bit (1 for tag 1, 2 for tag 2)

       Get value of frame

           string getFrame(int32 tagMask, string name);

           tagMask
               tag bit (1 for tag 1, 2 for tag 2)

           name
               name of frame (e.g.  "artist")

           To get binary data like a picture, the name of a file to write can be added after the name, e.g.
           "Picture:/path/to/file". In the same way, synchronized lyrics can be exported, e.g.
           "SYLT:/path/to/file".

           Returns value of frame.

       Set value of frame

           boolean setFrame(int32 tagMask, string name, string value);

           tagMask
               tag bit (1 for tag 1, 2 for tag 2)

           name
               name of frame (e.g.  "artist")

           value
               value of frame

           For tag 2 (tagMask 2), if no frame with name exists, a new frame is added, if value is empty, the
           frame is deleted. To add binary data like a picture, a file can be added after the name, e.g.
           "Picture:/path/to/file". "SYLT:/path/to/file" can be used to import synchronized lyrics.

           Returns true if OK.

       Get all frames of a tag

           array of string getTag(int32 tagMask);

           tagMask
               tag bit (1 for tag 1, 2 for tag 2)

           Returns list with alternating frame names and values.

       Get technical information about file

           array of string getInformation(void);

           Properties are Format, Bitrate, Samplerate, Channels, Duration, Channel Mode, VBR, Tag 1, Tag 2.
           Properties which are not available are omitted.

           Returns list with alternating property names and values.

       Set tag from file name

           setTagFromFileName(int32 tagMask);

           tagMask
               tag bit (1 for tag 1, 2 for tag 2)

       Set tag from other tag

           setTagFromOtherTag(int32 tagMask);

           tagMask
               tag bit (1 for tag 1, 2 for tag 2)

       Copy tag

           copyTag(int32 tagMask);

           tagMask
               tag bit (1 for tag 1, 2 for tag 2)

       Paste tag

           pasteTag(int32 tagMask);

           tagMask
               tag bit (1 for tag 1, 2 for tag 2)

       Remove tag

           removeTag(int32 tagMask);

           tagMask
               tag bit (1 for tag 1, 2 for tag 2)

       Reparse the configuration

           reparseConfiguration(void);

           Automated configuration changes are possible by modifying the configuration file and then reparsing
           the configuration.

       Plays the selected files

           playAudio(void);

QML INTERFACE

   QML Examples
       QML scripts can be invoked via the context menu of the file list and can be set in the tab User Actions
       of the settings dialog. The scripts which are set there can be used as examples to program custom
       scripts. QML uses JavaScript, here is the obligatory "Hello World":

           import Kid3 1.0

           Kid3Script {
             onRun: {
               console.log("Hello world, folder is", app.dirName)
               Qt.quit()
             }
           }

       If this script is saved as /path/to/Example.qml, the user command can be defined as @qml
       /path/to/Example.qml with name QML Test and Output checked. It can then be started using the QML Test
       item in the file list context menu, and the output will be visible in the window.

       Unfortunately, starting the QML scripts using the qml (e.g.  qml -apptype widget -I
       /usr/lib/kid3/plugins/imports /path/to/Example.qml) is broken in recent versions of Qt. But kid3-cli
       offers an alternative way to run a QML script from the command line using its execute command.

           kid3-cli -c "execute @qml /path/to/Example.qml"

       To list the titles in the tags 2 of all files in the current folder, the following script could be used:

           import Kid3 1.0

           Kid3Script {
             onRun: {
               app.firstFile()
               do {
                 if (app.selectionInfo.tag(Frame.Tag_2).tagFormat) {
                   console.log(app.getFrame(tagv2, "title"))
                 }
               } while (app.nextFile())
             }
           }

       If the folder contains many files, such a script might block the user interface for some time. For longer
       operations, it should therefore have a break from time to time. The alternative implementation below has
       the work for a single file moved out into a function. This function invokes itself with a timeout of 1 ms
       at the end, given that more files have to be processed. This will ensure that the GUI remains responsive
       while the script is running.

           import Kid3 1.0

           Kid3Script {
             onRun: {
               function doWork() {
                 if (app.selectionInfo.tag(Frame.Tag_2).tagFormat) {
                   console.log(app.getFrame(tagv2, "title"))
                 }
                 if (!app.nextFile()) {
                   Qt.quit()
                 } else {
                   setTimeout(doWork, 1)
                 }
               }

               app.firstFile()
               doWork()
             }
           }

       When using app.firstFile() with app.nextFile(), all files of the current folder will be processed. If
       only the selected files shall be affected, use firstFile() and nextFile() instead, these are convenience
       functions of the Kid3Script component. The following example is a script which copies only the disc
       number and copyright frames of the selected file.

           import Kid3 1.1

           Kid3Script {
             onRun: {
               function doWork() {
                 if (app.selectionInfo.tag(Frame.Tag_2).tagFormat) {
                   app.setFrame(tagv2, "*.selected", false)
                   app.setFrame(tagv2, "discnumber.selected", true)
                   app.setFrame(tagv2, "copyright.selected", true)
                   app.copyTags(tagv2)
                 }
                 if (!nextFile()) {
                   Qt.quit()
                 } else {
                   setTimeout(doWork, 1)
                 }
               }

               firstFile()
               doWork()
             }
           }

       More example scripts come with Kid3 and are already registered as user commands.

       •   ReplayGain to SoundCheck (ReplayGain2SoundCheck.qml): Create iTunNORM SoundCheck information from
           replay gain frames.

       •   Resize Album Art (ResizeAlbumArt.qml): Resize embedded cover art images which are larger than 500x500
           pixels.

       •   Extract Album Art (ExtractAlbumArt.qml): Extract all embedded cover art pictures avoiding duplicates.

       •   Embed Album Art (EmbedAlbumArt.qml): Embed cover art found in image files into audio files in the
           same folder.

       •   Embed Lyrics (EmbedLyrics.qml): Fetch unsynchronized lyrics from web service.

       •   Text Encoding ID3v1 (ShowTextEncodingV1.qml): Helps to find the encoding of ID3v1 tags by showing the
           tags of the current file in all available character encodings.

       •   ID3v1 to ASCII (Tag1ToAscii.qml): Transliterate extended latin characters in the ID3v1 tag to ASCII.

       •   English Title Case (TitleCase.qml): Formats text in the tags to English title case.

       •   Rewrite Tags (RewriteTags.qml): Rewrite all tags in the selected files.

       •   Export CSV (ExportCsv.qml): Export recursively all tags of all files to a CSV file.

       •   Import CSV (ImportCsv.qml): Import recursively all tags of all files from a CSV file.

       •   Export JSON (ExportJson.qml): Export recursively all tags of all files to a JSON file.

       •   Import JSON (ImportJson.qml): Import recursively all tags of all files from a JSON file.

       •   Export Playlist Folder (ExportPlaylist.qml): Copy all files from a playlist into a folder and rename
           them according to their position.

       •   QML Console (QmlConsole.qml): Simple console to play with Kid3's QML API.

   QML API
       The API can be easily explored using the QML Console, which is available as an example script with a user
       interface.

       Kid3Script

           Kid3Script is a regular QML component located inside the plugin folder. You could use another QML
           component just as well. Using Kid3Script makes it easy to start the script function using the onRun
           signal handler. Moreover it offers some functions:

               onRun: Signal handler which is invoked when the script is started
               tagv1, tagv2, tagv2v1: Constants for tag parameters
               script: Access to scripting functions
               configs: Access to configuration objects
               getArguments(): List of script arguments
               isStandalone(): true if the script was not started from within Kid3
               setTimeout(callback, delay): Starts callback after delay ms
               firstFile(): To first selected file
               nextFile(): To next selected file

       Scripting Functions

           As JavaScript and therefore QML too has only a limited set of functions for scripting, the script
           object has some additional methods, for instance:

               script.properties(obj): String with Qt properties
               script.writeFile(filePath, data): Write data to file, true if OK
               script.readFile(filePath): Read data from file
               script.removeFile(filePath): Delete file, true if OK
               script.fileExists(filePath): true if file exists
               script.fileIsWritable(filePath): true if file is writable
               script.getFilePermissions(filePath): Get file permission mode bits
               script.setFilePermissions(filePath, modeBits): Set file permission mode bits
               script.classifyFile(filePath): Get class of file (folder "/", symlink "@", exe "*",
                 file " ")
               script.renameFile(oldName, newName): Rename file, true if OK
               script.copyFile(source, dest): Copy file, true if OK
               script.makeDir(path): Create folder, true if OK
               script.removeDir(path): Remove folder, true if OK
               script.tempPath(): Path to temporary folder
               script.musicPath(): Path to music folder
               script.listDir(path, [nameFilters], [classify]): List folder entries
               script.system(program, [args], [msecs]): Synchronously start a system command,
                 [exit code, standard output, standard error] if not timeout
               script.systemAsync(program, [args], [callback]): Asynchronously start a system
               command, callback will be called with [exit code, standard output, standard
               error]
               script.getEnv(varName): Get value of environment variable
               script.setEnv(varName, value): Set value of environment variable
               script.getQtVersion(): Qt version string, e.g. "5.4.1"
               script.getDataMd5(data): Get hex string of the MD5 hash of data
               script.getDataSize(data): Get size of byte array
               script.dataToImage(data, [format]): Create an image from data bytes
               script.dataFromImage(img, [format]): Get data bytes from image
               script.loadImage(filePath): Load an image from a file
               script.saveImage(img, filePath, [format]): Save an image to a file, true if OK
               script.imageProperties(img): Get properties of an image, map containing
                 "width", "height", "depth" and "colorCount", empty if invalid image
               script.scaleImage(img, width, [height]): Scale an image, returns scaled image

       Application Context

           Using QML, a large part of the Kid3 functions are accessible. The API is similar to the one used for
           D-Bus. For details, refer to the respective notes.

               app.openDirectory(path): Open folder
               app.unloadAllTags(): Unload all tags
               app.saveDirectory(): Save folder
               app.revertFileModifications(): Revert
               app.importTags(tag, path, fmtIdx): Import file
               app.importFromTags(tag, source, extraction): Import from tags
               app.importFromTagsToSelection(tag, source, extraction): Import from tags of selected files
               app.downloadImage(url, allFilesInDir): Download image
               app.exportTags(tag, path, fmtIdx): Export file
               app.writePlaylist(): Write playlist
               app.getPlaylistItems(path): Get items of a playlist
               app.setPlaylistItems(path, items): Set items of a playlist
               app.selectAllFiles(): Select all
               app.deselectAllFiles(): Deselect
               app.firstFile([select], [onlyTaggedFiles]): To first file
               app.nextFile([select], [onlyTaggedFiles]): To next file
               app.previousFile([select], [onlyTaggedFiles]): To previous file
               app.selectCurrentFile([select]): Select current file
               app.selectFile(path, [select]): Select a specific file
               app.getSelectedFilePaths([onlyTaggedFiles]): Get paths of selected files
               app.requestExpandFileList(): Expand all
               app.applyFilenameFormat(): Apply filename format
               app.applyTagFormat(): Apply tag format
               app.applyTextEncoding(): Apply text encoding
               app.numberTracks(nr, total, tag, [options]): Number tracks
               app.applyFilter(expr): Filter
               app.convertToId3v23(): Convert ID3v2.4.0 to ID3v2.3.0
               app.convertToId3v24(): Convert ID3v2.3.0 to ID3v2.4.0
               app.getFilenameFromTags(tag): Filename from tags
               app.getTagsFromFilename(tag): Filename to tags
               app.getAllFrames(tag): Get object with all frames
               app.getFrame(tag, name): Get frame
               app.setFrame(tag, name, value): Set frame
               app.getPictureData(): Get data from picture frame
               app.setPictureData(data): Set data in picture frame
               app.copyToOtherTag(tag): Tags to other tags
               app.copyTags(tag): Copy
               app.pasteTags(tag): Paste
               app.removeTags(tag): Remove
               app.playAudio(): Play
               app.readConfig(): Read configuration
               app.applyChangedConfiguration(): Apply configuration
               app.dirName: Folder name
               app.selectionInfo.fileName: File name
               app.selectionInfo.filePath: Absolute file path
               app.selectionInfo.detailInfo: Format details
               app.selectionInfo.tag(Frame.Tag_1).tagFormat: Tag 1 format
               app.selectionInfo.tag(Frame.Tag_2).tagFormat: Tag 2 format
               app.selectionInfo.formatString(tag, format): Substitute codes in format string
               app.selectFileName(caption, dir, filter, saveFile): Open file dialog to
               select a file
               app.selectDirName(caption, dir): Open file dialog to select a folder

           For asynchronous operations, callbacks can be connected to signals.

               function automaticImport(profile) {
                 function onAutomaticImportFinished() {
                   app.batchImporter.finished.disconnect(onAutomaticImportFinished)
                 }
                 app.batchImporter.finished.connect(onAutomaticImportFinished)
                 app.batchImport(profile, tagv2)
               }

               function renameDirectory(format) {
                 function onRenameActionsScheduled() {
                   app.renameActionsScheduled.disconnect(onRenameActionsScheduled)
                   app.performRenameActions()
                 }
                 app.renameActionsScheduled.connect(onRenameActionsScheduled)
                 app.renameDirectory(tagv2v1, format, false)
               }

       Configuration Objects

           The different configuration sections are accessible via methods of configs. Their properties can be
           listed in the QML console.

               script.properties(configs.networkConfig())

           Properties can be set:

               configs.networkConfig().useProxy = false

               configs.batchImportConfig()
               configs.exportConfig()
               configs.fileConfig()
               configs.filenameFormatConfig()
               configs.filterConfig()
               configs.findReplaceConfig()
               configs.guiConfig()
               configs.importConfig()
               configs.mainWindowConfig()
               configs.networkConfig()
               configs.numberTracksConfig()
               configs.playlistConfig()
               configs.renDirConfig()
               configs.tagConfig()
               configs.tagFormatConfig()
               configs.userActionsConfig()

AUTHOR

       Urs Fleisch <ufleisch at users.sourceforge.net>
           Software development

COPYRIGHT

       Copyright © 2024 Urs Fleisch

       FDL

NOTES

        1. gnudb.org
           http://gnudb.org

        2. MusicBrainz
           http://musicbrainz.org

        3. Discogs
           http://discogs.com

        4. Amazon
           http://www.amazon.com

        5. ID3 specification
           http://id3.org/id3v2.4.0-frames

        6. SYLT Editor
           http://www.compuphase.com/software_sylteditor.htm

        7. www.gnudb.org
           http://www.gnudb.org

        8. Discogs
           https://www.discogs.com/

        9. freedb.org
           http://freedb.org

       10. ID3 tag version 2.3.0
           http://id3.org/id3v2.3.0

       11. ID3 tag version 2.4.0 - Main Structure
           http://id3.org/id3v2.4.0-structure

       12. LyricWiki
           http://www.lyricwiki.org

       13. Google
           http://www.google.com

       14. id3lib
           http://id3lib.sourceforge.net

       15. libogg
           http://xiph.org/ogg/

       16. libvorbis, libvorbisfile
           http://xiph.org/vorbis/

       17. libFLAC++ and libFLAC
           http://flac.sourceforge.net

       18. TagLib
           http://taglib.github.io/

       19. mp4v2
           https://mp4v2.org/

       20. Chromaprint
           http://acoustid.org/chromaprint

       21. libav
           http://libav.org/

       22. FDL
           http://www.gnu.org/licenses/licenses.html#FDL

       23. GPL
           http://www.gnu.org/licenses/licenses.html#GPL

       24. Qt(TM)
           https://www.qt.io

       25. KDE
           http://www.kde.org

3.9.5                                              2024-02-24                                            KID3(1)