# Руководство пользователя Kid3

### Urs Fleisch

Разработка программного обеспечения

`<ufleisch at users.sourceforge.net>`

### Мария Шикунова

Перевод на русский язык

`<translation-team@basealt.ru>`

3.8.6

Авторские права © 2021 Urs Fleisch

FDL

Аннотация

Kid3 — это приложение для эффективного редактирования тегов ID3v1 и ID3v2 в MP3-файлах, поддерживающее также теги файлов Ogg/Vorbis, Opus, DSF, FLAC, MPC, APE, MP4/AAC, MP2, Speex, TrueAudio, WavPack, WMA, WAV, AIFF и модулей трекеров (MOD, S3M, IT, XM). Приложение позволяет легко указывать значения для тегов в разных файлах (например, название альбома, исполнителя, год и жанр во всех файлах внутри одного альбома) и создавать теги из имён файлов и наоборот.

Список таблиц

3.1. Привязки унифицированных названий фреймов в различных форматах
3.2. Запись в таблице оценок

# Обзор

`kid3` [ `--help` | `--author` | `--version` | `--license` | `--desktopfile `ФАЙЛ`` ] [`ФАЙЛ`...]

`kid3-qt` [`--portable`] [`Параметры Qt`] [`ФАЙЛ`...]

`kid3-cli` [`--portable`] [`--dbus`] [ `-h` | `--help` ] [`-c КОМАНДА1`] [`-c КОМАНДА2`...] [`ФАЙЛ`...]

# Параметры

`--portable`

  Сохранить параметры в файл `kid3.ini` в каталоге приложения.

`ФАЙЛ`

  Если ``ФАЙЛ`` — это путь к каталогу, то он будет открыт. Если указан один или несколько путей к файлам, откроется общий каталог, а файлы будут выделены.

## kid3

`--help`

  Показать справку о параметрах.

`--author`

  Показать сведения об авторах приложения.

`--version`

  Показать сведения о версии приложения.

`--license`

  Показать сведения о лицензии приложения.

`--desktopfile `ФАЙЛ``

  Имя файла .desktop (без пути) для этого приложения.

## kid3-qt

`Параметры Qt`

  Смотрите qt5options(7).

## kid3-cli

`--dbus`

  Активировать интерфейс D-Bus.

`-c`

  Выполнить команду. Предусмотрена возможность использования нескольких параметров `-c` для одной команды, и они будут выполняться последовательно. Описание доступных команд приводится в разделе «kid3-cli».

`-h`|`--help`

  Показать справку о параметрах и командах.

# Глава 1. Введение

Kid3 — это приложение для эффективного редактирования тегов ID3v1 и ID3v2 в MP3-файлах. Большинство MP3-проигрывателей позволяют редактировать эти теги, но не настолько комфортным и простым способом. Более того, приложение поддерживает теги в файлах Ogg/Vorbis, Opus, DSF, FLAC, MPC, APE, MP4/AAC, MP2, Speex, TrueAudio, WavPack, WMA, WAV, AIFF и модулях трекеров (MOD, S3M, IT, XM).

Kid3 не создаёт и не кодирует файлы в формате MP3, это приложение предназначено для редактирования тегов ID3 во всех файлах в альбоме с помощью нескольких щелчков кнопкой мыши или нажатий комбинаций клавиш. Большинство других программ позволяют редактировать теги только одного типа (либо ID3v1, либо ID3v2), в то время как Kid3 предоставляет возможность свободного редактирования и преобразования тегов обоих типов, а также позволяет получить доступ ко всем тегам ID3v2. Возможно установить одинаковые значения для тегов сразу в нескольких файлах, например, указать одинаковые значения для записей исполнителя, альбома, года и жанра для всех файлов в альбоме. Если информация для тегов содержится в имени файла, теги могут быть автоматически установлены на основе имени файла. Также возможно установить имя файла в соответствии с любыми тегами, найденными в этом файле.

Функции редактирования также включают автоматическую замену символов или подстрок, например, изъятие некорректных символов из названий файлов. Автоматическое определение регистра символов упрощает использование однородной схемы именования для всех тегов.

Данные тегов полных альбомов доступны на gnudb.org, MusicBrainz, Discogs, Amazon, а также на других ресурсах. Формат импорта возможно настраивать произвольным образом с помощью регулярных выражений.

Чтобы сообщить о найденной ошибке или предложить новую функцию, обратитесь к автору программы.

# Глава 2. Работа с Kid3

## Возможности Kid3

- Редактирование тегов ID3v1.1

- Редактирование всех фреймов ID3v2.3 и ID3v2.4

- Одновременное редактирование тегов нескольких файлов

- Преобразование тегов ID3v1 и ID3v2 между собой

- Редактирование тегов MP3, Ogg/Vorbis, Opus, DSF, FLAC, MPC, APE, MP4/AAC, MP2, Speex, TrueAudio, WavPack, WMA, WAV и AIFF

- Создание тегов на основе имени файла

- Создание тегов по содержимому полей тегов

- Создание названий файлов по тегам

- Создание и изменение имён каталогов по тегам

- Создание файлов списков воспроизведения

- Автоматическое преобразование регистра и переноса строк

- Импорт данных из gnudb.org, MusicBrainz, Discogs, Amazon и других источников

- Экспорт данных в форматах CSV, HTML, списков воспроизведения, Kover XML и других. Экспортированные файлы в формате CSV возможно заново импортировать

## Пример использования

Этот раздел описывает обычный сеанс работы в Kid3. Предположим, что есть каталог, в котором содержатся файлы в формате MP3 с дорожками из альбома «Let's Tag» группы «One Hit Wonder». Каталог с файлами назван в формате «Исполнитель - Альбом», в этом примере — «`One Hit Wonder - Let's Tag`». В каталоге содержатся файлы дорожек в формате «название дорожки.mp3», что довольно удобно, так как названия файлов остаются короткими (это важно для мобильных MP3-проигрывателей с небольшими дисплеями) и располагаются в надлежащем порядке при упорядочении списка по алфавиту (это важно при использовании аппаратного MP3-проигрывателя, который воспроизводит дорожки в алфавитном порядке или в том порядке, в котором они записаны на компакт-диске; этот порядок будет алфавитным в случае выполнения команды mkisofs). Кроме этого, информация об исполнителе и альбоме уже содержится в названии каталога, и её не обязательно дублировать в названии файла. В этом примере список файлов в каталоге будет выглядеть так:

`01 Intro.mp3`

`02 We Only Got This One.mp3`

`03 Outro.mp3`

Этим файлам ещё не присвоены теги, их нужно создать с помощью Kid3. Для этого следует воспользоваться пунктом меню Файл → Открыть (или кнопкой на панели инструментов) и выделить один из файлов в этом каталоге. Все файлы будут отображаться в списке файлов. Чтобы не усложнять себе задачу, для создания тегов воспользуемся данными из названия каталога и имён файлов. Для этого следует выделить все файлы, а затем нажать кнопку В: Тег 1 в разделе Файл. Будут установлены значения заголовка, исполнителя, альбома и дорожки для всех файлов. Чтобы установить значение года и жанра для всех файлов, следует, не снимая выделения, ввести «2002» в поле Дата и выбрать, например, «Pop» в раскрывающемся списке Жанр. Чтобы установить только эти два значения, приложение автоматически установит флажки только на эти два пункта. Далее возможно изменить выделение, выделив только первый файл: как можно убедиться, всем тегам присвоены корректные значения. Чтобы проверить теги остальных файлов, их следует выделить один за другим. Если теги установлены корректно, воспользуйтесь пунктом меню Файл → Сохранить (или кнопкой на панели инструментов). Пункт меню Файл → Создать список воспроизведения (или кнопка на панели инструментов) позволяет создать файл под названием «`One Hit Wonder - Let's Tag.m3u`» в том же каталоге.

# Глава 3. Список команд

## Элементы графического интерфейса

Графический интерфейс Kid3 состоит из шести разделов: слева расположены списки файлов и каталогов, а справа находятся разделы Файл, Тег 1, Тег 2 и Тег 3.

Определённые комбинации клавиш позволяют перемещаться между разделами с помощью клавиатуры. В разделах тегов комбинации клавиш возможно использовать, если не выполняется редактирование текста или если курсор находится в первом столбце таблицы.

- Alt+Влево: перейти к предыдущему разделу (Command+[ в macOS®)

- Alt+Вправо: перейти к следующему разделу (Command+] в macOS®)

- Ctrl+Shift+V: из другого тега

- Ctrl+C: копировать

- Ctrl+V: вставить

- Shift+Delete: удалить

- F2: изменить

- Insert: добавить

- Delete: удалить

### Список файлов

Список файлов содержит имена всех файлов в открытом каталоге, которые соответствуют выбранному фильтру имён (обычно это `*.mp3 *.ogg *.opus *.dsf *.flac *.mpc *.aac *.m4a *.m4b *.m4p *.mp4 *.mp2 *.spx *.tta *.wv *.wma *.wav *.aiff *.ape`). Возможно выбрать один или несколько файлов. Чтобы снять выделение, щёлкните левой кнопкой мыши в пустом месте под пунктами списка. Выделение определяет файлы, над которыми будут выполняться действия после нажатия кнопок, описание которых приводится далее.

Параметры файла отображаются не только в столбце Имя, но и в столбцах Размер, Тип, Дата изменения. Чтобы скрыть эти столбцы, снимите флажок в соответствующем пункте контекстного меню строки заголовков списка. Чтобы изменить порядок столбцов, воспользуйтесь функцией перетаскивания. Порядок сортировки файлов переключается щелчком левой кнопкой мыши по заголовку столбца.

Слева от названий может отображаться значок дискеты, указывающий на наличие изменений в файле, либо значок, отображающий информацию о том, какие теги используются (V1, V2, V1V2 или NO TAG; значок не будет отображаться, если чтение данных из файла ещё не было произведено).

Каталоги отображаются со значком в виде папки. При открытии каталога его содержимое отображается в виде иерархического дерева. При выборе файлов из вложенных каталогов возможно выполнять действия над файлами, которые хранятся в разных каталогах. Это удобно, когда музыкальная коллекция организована так, что каталог каждого исполнителя содержит вложенные каталоги с его альбомами.

При щелчке правой кнопкой мыши внутри списка файлов появится контекстное меню, содержащее следующие команды:

- Развернуть все: разворачивает всё дерево каталога (при нажатой клавише Shift развернёт дерево текущего каталога)

- Свернуть все: сворачивает всё дерево каталога

- Переименовать: меняет имя файла

- Переместить в корзину: перемещает файл в корзину

- Воспроизвести: воспроизводит файл; подробнее об этом пункте контекстного меню рассказано в описании функции «Воспроизведение». Если выбранный файл — это список воспроизведения, будут воспроизводиться все файлы списка воспроизведения.

- Редактировать: позволяет отредактировать список воспроизведения, подробные сведения об этом пункте контекстного меню приводятся в разделе «Редактирование списка воспроизведения».

- Остальные пункты являются пользовательскими командами, которые возможно указать на вкладке Команды пользователя диалогового окна настройки Kid3. В этом же разделе находится функция воспроизведения по двойному щелчку.

### Редактирование списка воспроизведения

Возможно создать как пустой список воспроизведения, так и уже содержащий дорожки из определённого каталога, подробные сведения об этом доступны в описании функции «Создать список воспроизведения». Чтобы изменить список воспроизведения, созданный таким образом, дважды щёлкните по нему левой кнопкой мыши, либо воспользуйтесь пунктом контекстного меню списка файлов Правка. Отобразится диалог с содержимым списка воспроизведения. Возможно открывать сразу несколько разных списков воспроизведения.

Чтобы добавить новые записи, перетащите нужные файлы из списка файлов, диспетчера файлов или из другого списка воспроизведения. Если перетащить запись из другого списка воспроизведения, в зависимости от системы, она будет либо перемещена, либо скопирована. Чтобы вызвать другие действия, нажмите клавишу Shift, Ctrl или Alt (в macOS® — для копирования вместо перемещения). Чтобы упорядочить записи в списке воспроизведения, также воспользуйтесь функцией перетаскивания. Кроме того, для перемещения записей в списке предусмотрены комбинации клавиш Ctrl+Shift+Вверх и Ctrl+Shift+Вниз (в macOS® вместо клавиши Ctrl следует использовать Command). Чтобы удалить запись, нажмите клавишу Delete.

Обратите внимание на следующее: чтобы перетащить записи из списка файлов, их следует захватывать с левой стороны (рядом со значком), так как захват с правой стороны выполняет функцию выделения нескольких файлов. Поэтому, чтобы перетащить сразу несколько файлов, потребуется выполнить оба этих действия.

После внесения изменений в список воспроизведения нажмите кнопку Сохранить для сохранения изменений или кнопку Отмена для их отмены. При закрытии окна приложения будет предложено сохранить несохранённые изменения, если таковые имеются.

Выделенные в списке воспроизведения дорожки также автоматически выделяются в списке файлов, что позволяет сразу же приступить к редактированию присвоенных им тегов.

Чтобы выполнить те или иные действия над списком воспроизведения, следует выделить его файл в списке файлов. Пункт контекстного меню Изменить открывает диалог, описанный в этом разделе, а пункт Воспроизвести запустит проигрыватель с дорожками из списка воспроизведения. Над списками воспроизведения возможно выполнять пользовательские действия, например, Экспорт списка воспроизведения для копирования файлов из списка воспроизведения в каталог.

### Список каталогов

В списке каталогов содержатся названия подкаталогов открытого каталога, а также пункты текущего (`.`) и родительского (`..`) каталога. Этот список позволяет быстро сменить каталог без использования кнопки Открыть или функции перетаскивания.

Сведения о настройке видимости столбцов, порядка столбцов и сортировки записей в столбцах доступны в разделе о списке файлов.

### Файл

Отображает информацию о кодировке (MP3, Ogg, Opus, DSF, FLAC, MPC, APE, MP2, MP4, AAC, Speex, TrueAudio, WavPack, WMA, WAV, AIFF), скорости передачи, частоте дискретизации, каналах и длине файла.

Поле для редактирования Имя содержит название файла (только если выделен один файл). При изменении имени файла для сохранения следует использовать команду сохранения изменений.

Раскрывающийся список Формат и поле для редактирования содержат информацию о формате, который будет использоваться при создании имени файла из первого или второго тега. Имя файла может содержать произвольные символы, даже часть каталога, отделённую от имени файла косой чертой (но переименование будет успешно выполнено только в том случае, если эта папка уже существует). Следующие специальные коды используются для вставки значений тегов в имя файла:

- %s %{title} Заголовок (композиции)

- %a %{artist} Исполнитель

- %l %{album} Альбом

- %c %{comment} Комментарий

- %y %{year} Год

- %t %{track} Номер дорожки (например, 01)

- %t %{track.n} Номер дорожки с шириной поля n (например, 001 для %{track.3})

- %T %{tracknumber} Номер дорожки (без нулей в начале, например, 1)

- %g %{genre} Жанр

- %{ignore} Игнорируется при создании тегов из имени файла

Коды формата не ограничены приведёнными выше примерами. Возможно использовать любые названия фреймов, например, унифицированные названия фреймов наподобие `%{albumartist}`, `%{discnumber.1}`, `%{bpm}` или специфичные для форматов названия наподобие `%{popm}`.

Чтобы добавить строки к началу или концу строки для замены кода формата, следует добавить соответствующие строки в двойных кавычках внутри фигурных скобок кода формата. Такие строки добавляются в строку-результат, только если код формата имеет непустое значение. Например, если имя файла содержит как заголовок, так и подзаголовок, используйте в строке формата запись `%{title} [%{subtitle}]`. Но использование такой записи приведёт к завершению строки символами `[]`, если в файле отсутствует фрейм подзаголовка. Чтобы избежать добавления таких пустых квадратных скобок, следует использовать запись вида `%{title}%{" ["subtitle"]"}`. В этом случае скобки, начальный пробел и подзаголовок будут опущены, если подзаголовка не существует.

Настройка списка доступных форматов осуществляется в диалоге, вызываемом кнопкой Имя файла из тега на вкладке Файлы окна настройки параметров.

Второй раскрывающийся список Формат (со стрелкой вниз) используется для создания тегов из имени файла. Если формат имени файла не соответствует этому шаблону, будет предпринята попытка использовать другие распространённые форматы.

В раскрывающемся списке перечислено несколько стандартных форматов названий файлов, но также возможно ввести свой собственный формат в строку редактирования.

Настройка списка доступных форматов осуществляется в диалоге, вызываемом кнопкой Тег из имени файла на вкладке Файлы окна настройки параметров.

На внутреннем уровне регулярное выражение состоит из кодов формата. Если требуются расширенные регулярные выражения, формат для создания тегов из имён файлов может быть задан как полное регулярное выражение с частями, которым предшествуют коды формата. Например, для извлечения номеров дорожек без удаления нулей в начале следует использовать формат наподобие «`/%{track}(\d+) %{title}(.*)`».

Из: Тег 1, Тег 2: установка имени файла с использованием выбранного формата и, соответственно, первого или второго тега.

В: Тег 1, Тег 2: создание тегов из имени файла. Сначала используется формат, указанный в поле Формат. Если существующее имя файла не соответствует этому формату, предпринимается попытка использовать следующие форматы:

- `Исполнитель - Альбом/Дорожка Композиция`

- `Альбом/Дорожка - Исполнитель - Композиция`

- `/Исполнитель - Альбом - Дорожка - Композиция`

- `Альбом/Исполнитель - Дорожка - Композиция`

- `Альбом/Исполнитель - Композиция`

- `Исполнитель/Альбом/Дорожка Композиция`

Если выбран один файл, пункты графического интерфейса будут заполнены значениями, полученными из названия этого файла. Если выбрано несколько файлов, теги файлов устанавливаются непосредственно в соответствии с именами файлов.

### Тег 1

Строки редактирования Заголовок, Исполнитель, Альбом, Комментарий, Дата, Номер дорожки и Жанр используются для изменения соответствующего значения первого тега выделенных файлов. Значение будет изменено при изменении выделения файлов, перед такими действиями, как Сохранить и Выход, а также при установке соответствующего флажка слева от имени поля. Это позволяет изменить только некоторые значения, оставив остальные значения без изменений.

Если выбран один файл, будут установлены все флажки, а строки будут заполнены данными, полученными из тегов этого файла. Если теги отсутствуют, будет отображаться соответствующее пустое значение: пустая строка в текстовых полях Заголовок, Исполнитель, Альбом и Комментарий, 0 в числовых полях Дата и Номер дорожки и пустое значение в раскрывающемся списке Жанр. Эти значения возможно изменить, и, если установлен соответствующий флажок, они будут установлены для выбранного файла после изменения выделения. В таком случае файл в списке файлов будет отмечен значком дискеты, но изменения не будут применены, пока не будет выполнена команда Сохранить.

Если выбрано несколько файлов, будут отображены только значения, идентичные во всех файлах. Во всех остальных полях будут показаны пустые значения, как было описано выше. Все флажки будут сняты во избежание нежелательных изменений. Если требуется установить значение для всех выделенных файлов, отредактируйте его, и приложение автоматически установит соответствующий флажок. Значения для выбранных файлов будут установлены при изменении выделения, и эти изменения будет возможно сохранить с помощью команды Сохранить.

Флажки позволяют управлять большинством команд, включая копирование, вставку и перенос данных между тегами 1 и 2. Чтобы упростить одновременную работу с несколькими файлами, когда все флажки сняты, эти команды работают одинаково независимо от того, установлены или сняты все флажки.

Из тега 2: значения полей тега 1 устанавливаются из соответствующих значений тега 2. Если выбран один файл, пункты графического интерфейса будут заполнены значениями из тега 2. Если выбрано несколько файлов, устанавливаются непосредственно теги этих файлов.

Копировать: скопировать в буфер обмена значения тега 1. В следующих командах вставки будут использоваться только значения из пунктов с установленным флажком.

Вставить: вставить данные из буфера обмена в пункты графического интерфейса.

Убрать: очистить все значения пунктов графического интерфейса. Если после этого действия сохранить редактируемый файл, в нём будет отсутствовать тег 1.

### Тег 2

Графический интерфейс позволяет управлять этим параметром таким же способом, который описан в разделе Тег 1, но при этом размеры строк не ограничены.

При заполнении поля тега 2 Жанр также возможно использовать собственные названия помимо жанров, указанных в раскрывающемся списке; достаточно просто ввести название жанра в строку редактирования.

Тег 2 не может содержать только те же значения, что и тег 1. Формат гибко строится из нескольких фреймов, которые сами состоят из нескольких полей. Таблица тега 2 показывает все фреймы, которые доступны в выбранном файле.

Изменить: открывает окно, позволяющее редактировать все поля выделенного фрейма. Если выбрано несколько файлов, изменения значений полей будут применяться ко всем выбранным файлам, которые содержат этот фрейм.

Добавить: открывает окно для указания типа фрейма, который можно будет изменить и добавить в файл. Эта функция также работает при выборе нескольких файлов.

Удалить: удаляет выбранный фрейм в выбранных файлах.

Надпись Перетащите сюда обложку альбома отобразится в том случае, если в файле отсутствует встроенная обложка альбома. Чтобы добавить изображение, перетащите его мышью из браузера или диспетчера файлов; после этого оно отобразится вместо надписи. Чтобы изменить или добавить фрейм, дважды щёлкните левой кнопкой мыши по соответствующему полю.

### Тег 3

Некоторые файлы могут содержать более двух тегов. В этом случае будет отображаться раздел третьего тега. Раздел Тег 3 могут иметь следующие типы файлов:

- Файлы в формате MP3 могут иметь тег ID3v1.1, ID3v2 (2.3.0 или 2.4.0) и в третьем разделе тег APE. Такие теги предназначены для хранения информации о выравнивании громкости. Эта информация отображается в разделе Тег 3, а тег APE возможно удалить с помощью кнопки Убрать.

- Фрагменты RIFF INFO в файлах WAV хранятся в разделе Тег 3 , потому что раздел Тег 1 предназначен для тегов ID3v1.1 с соответствующими ограничениями. Раздел Тег 2 используется для тегов ID3v2.4.0, поддержка которых также предусмотрена в файлах WAV, но поддержка фрагментов RIFF INFO, по всей видимости, реализована лучше.

- Файлы в формате FLAC обычно используют комментарии Vorbis для своих метаданных. Однако существуют файлы в формате FLAC, которые содержат теги ID3v1 и ID3v2, находящиеся в разделах Тег 1 и Тег 3. Теги ID3 в файлах формата FLAC поддерживаются только библиотекой TagLib, поэтому модуль OggFlacMetadata должен быть отключён (вкладка Модули в окне настройки параметров Kid3).

Пункты графического интерфейса работают так же, как и в разделе Тег 2.

### Список фреймов

Kid3 позволяет редактировать большинство фреймов для всех поддерживаемых типов файлов. Определение некоторых фреймов производится с помощью унифицированных имён, что позволяет обмениваться данными между файлами разных форматов. Не унифицированные фреймы определяются как фреймы, специфичные для формата.

Таблица 3.1. Привязки унифицированных названий фреймов в различных форматах

Унифицированное имя | ID3v2.3 | ID3v2.4 | MP4 | ASF | Vorbis | RIFF
--- | --- | --- | --- | --- | --- | ---
Заголовок | `TIT2` | `TIT2` | `©nam` | `Title` | `TITLE` | `INAM`
Исполнитель | `TPE1` | `TPE1` | `©ART` | `Author` | `ARTIST` | `IART`
Альбом | `TALB` | `TALB` | `©alb` | `WM/AlbumTitle` | `ALBUM` | `IPRD`
Комментарий | `COMM` | `COMM` | `©cmt` | `Description` | `COMMENT` | `ICMT`
Дата | `TYER` | `TDRC` | `©day` | `WM/Year` | `DATE` | `ICRD`
Номер дорожки | `TRCK` | `TRCK` | `trkn` | `WM/TrackNumber` | `TRACKNUMBER` | `IPRT` или `ITRK`
Жанр | `TCON` | `TCON` | `©gen` | `WM/Genre` | `GENRE` | `IGNR`
Исполнитель альбома | `TPE2` | `TPE2` | `aART` | `WM/AlbumArtist` | `ALBUMARTIST` |
Аранжировщик | `IPLS` | `TIPL` | `ARRANGER` | `WM/Producer` | `ARRANGER` | `IENG`
Автор | `TOLY` | `TOLY` | `AUTHOR` |  | `AUTHOR` |
BPM | `TBPM` | `TBPM` | `tmpo` | `WM/BeatsPerMinute` | `BPM` | `IBPM`
Номер по каталогу | `TXXX:CATALOGNUMBER` | `TXXX:CATALOGNUMBER` |  |  | `CATALOGNUMBER` |
Сборник | `TCMP` | `TCMP` | `cpil` |  | `COMPILATION` |
Композитор | `TCOM` | `TCOM` | `©wrt` | `WM/Composer` | `COMPOSER` | `IMUS`
Дирижёр | `TPE3` | `TPE3` | `CONDUCTOR` | `WM/Conductor` | `CONDUCTOR` |
Авторские права | `TCOP` | `TCOP` | `cprt` | `Copyright` | `COPYRIGHT` | `ICOP`
Описание | `TIT3` | `TIT3` | `desc` | `WM/SubTitleDescription` | `DESCRIPTION` |
Номер диска | `TPOS` | `TPOS` | `disk` | `WM/PartOfSet` | `DISCNUMBER` |
Кодировщик | `TENC` | `TENC` | `©enc` | `WM/EncodedBy` | `ENCODED-BY` | `ITCH`
Параметры кодировщика | `TSSE` | `TSSE` | `©too` | `WM/EncodingSettings` | `ENCODERSETTINGS` | `ISFT`
Время кодирования |  | `TDEN` |  | `WM/EncodingTime` | `ENCODINGTIME` | `IDIT`
Группировка | `GRP1` | `GRP1` | `©grp` |  | `GROUPING` |
Начальная тональность | `TKEY` | `TKEY` |  | `WM/InitialKey` | `INITIALKEY` |
ISRC | `TSRC` | `TSRC` | `ISRC` | `WM/ISRC` | `ISRC` | `ISRC`
Язык | `TLAN` | `TLAN` | `LANGUAGE` | `WM/Language` | `LANGUAGE` | `ILNG`
Автор текста | `TEXT` | `TEXT` | `LYRICIST` | `WM/Writer` | `LYRICIST` | `IWRI`
Текст песни | `USLT` | `USLT` | `©lyr` | `WM/Lyrics` | `LYRICS` |
Носители | `TMED` | `TMED` | `SOURCEMEDIA` |  | `SOURCEMEDIA` | `IMED`
Настроение |  | `TMOO` |  | `WM/Mood` | `MOOD` |
Исходный альбом | `TOAL` | `TOAL` | `ORIGINALALBUM` | `WM/OriginalAlbumTitle` | `ORIGINALALBUM` |
Исходный исполнитель | `TOPE` | `TOPE` | `ORIGINALARTIST` | `WM/OriginalArtist` | `ORIGINALARTIST` |
Исходная дата | `TORY` | `TDOR` | `ORIGINALDATE` | `WM/OriginalReleaseYear` | `ORIGINALDATE` |
Исполнитель | `IPLS` | `TMCL` | `PERFORMER` |  | `PERFORMER` | `ISTR`
Изображение | `APIC` | `APIC` | `covr` | `WM/Picture` | `METADATA_BLOCK_PICTURE` |
Издатель | `TPUB` | `TPUB` | `PUBLISHER` | `WM/Publisher` | `PUBLISHER` | `IPUB`
Оценка | `POPM` | `POPM` | `rate` | `WM/SharedUserRating` | `RATING` | `IRTD`
Страна выпуска | `TXXX:RELEASECOUNTRY` | `TXXX:RELEASECOUNTRY` |  |  | `RELEASECOUNTRY` | `ICNT`
Дата выпуска |  | `TDRL` | `RELEASEDATE` |  | `RELEASEDATE` |
Ремиксер | `TPE4` | `TPE4` | `REMIXER` | `WM/ModifiedBy` | `REMIXER` | `IEDT`
Упорядочить по альбомам | `TSOA` | `TSOA` | `soal` | `WM/AlbumSortOrder` | `ALBUMSORT` |
Упорядочить по исполнителям альбомов | `TSO2` | `TSO2` | `soaa` |  | `ALBUMARTISTSORT` |
Упорядочить по исполнителям | `TSOP` | `TSOP` | `soar` | `WM/ArtistSortOrder` | `ARTISTSORT` |
Упорядочить по композиторам | `TSOC` | `TSOC` | `soco` |  | `COMPOSERSORT` |
Упорядочить по именам | `TSOT` | `TSOT` | `sonm` | `WM/TitleSortOrder` | `TITLESORT` |
Подзаголовок |  | `TSST` | `SUBTITLE` | `WM/SubTitle` | `SUBTITLE` | `PRT1`
Сайт | `WOAR` | `WOAR` | `WEBSITE` | `WM/AuthorURL` | `WEBSITE` | `IBSU`
Работа | `TIT1` | `TIT1` | `©wrk` | `WM/ContentGroupDescription` | `WORK` |
Веб-страница аудиофайла | `WOAF` | `WOAF` |  | `WM/AudioFileURL` | `WWWAUDIOFILE` |
Веб-страница источника аудио | `WOAS` | `WOAS` |  | `WM/AudioSourceURL` | `WWWAUDIOSOURCE` |

Заметки по поводу привязок унифицированных названий фреймов:

- Количество унифицированных названий фреймов ограничено возможностью установки надёжных соответствий для всех поддерживаемых форматов файлов. Большинство тегов поддерживает фреймы с произвольными названиями; такие будут использованы в случае, если не будет доступен тот или иной особый фрейм (например, имена в верхнем регистре в столбце MP4). Если такой возможности нет, некоторые типы фреймов могут не поддерживаться для определённого формата, например, «Автор» и «Исполнитель» для ASF (WMA).

- Привязки выбираются не случайным образом, они ориентированы на использование фреймов в других приложениях и устройствах. Например, фрейм тега ID3v2 «TPE2 - Группа/оркестр/аккомпанемент» не предполагает использование в поле исполнителя альбома, но такое использование довольно распространено. С другой стороны, фактическое назначение ID3v2 обуславливает использование этого фрейма для поля оркестра при импорте (например, из Discogs), хоть это и может казаться несколько странным для других форматов тегов.

- Привязки не всегда взаимно однозначны. Например, ID3v2.3 использует фрейм IPLS как для поля «Аранжировщик», так и для поля «Исполнитель». При обратном преобразовании оба фрейма будут отображаться как «Аранжировщик».

- Фреймы «Аранжировщик» и «Исполнитель» используют определённый формат для своего содержимого: «вклад 1|автор 1|вклад 2|автор 2|...», например, «Хормейстер|Ernst Dunshirn|Сопрано-вокал|Анна Нетребко». Будут созданы фреймы IPLS (ID3v2.3) или TIPL/TMCL (ID3v2.4) со списком строк в указанном формате (разделителем строк будет символ «|») . Значения в этом формате также устанавливаются при импорте данных с серверов, предоставляющих эту информацию.

- Чтобы явно использовать конкретное название фрейма, которое конфликтует с унифицированным названием, добавьте перед самим названием восклицательный знак. Например, добавление к комментарию Vorbis фрейма «`Media`» приведёт к созданию фрейма под названием «`SOURCEMEDIA`» из-за привязки к унифицированному типу. Чтобы добавить именно фрейм «`MEDIA`» (а не «`SOURCEMEDIA`»), следует указать «`!MEDIA`»; это позволит принудительно задать именно такое название фрейма.

### Синхронизация текста песни с временными кодами событий

Для изменения информации, синхронизирующейся с аудиоданными, предусмотрен специальный редактор. Эти фреймы поддерживаются в тегах ID3v2.3.0 и ID3v2.4.0. Чтобы добавить такой фрейм, выберите его название из списка, который появляется после нажатия кнопки Добавить — Синхронизированный текст или Коды привязки ко времени событий, соответственно. Для обоих типов используется один и тот же редактор, однако для кодов привязки ко времени событий предусмотрен только предварительно определённый набор событий, а для синхронизированного текста песни придётся ввести сам текст. Далее рассматривается пример редактирования синхронизированного текста песни.

Допустим, выбран файл с тегом ID3v2 и с помощью кнопки Добавить запущен редактор текста с опцией Синхронизированный текст. Если синхронизированный текст уже существует, выберите его и нажмите кнопку Изменить. После этого текущий файл будет автоматически открыт в проигрывателе, что позволит воспроизводить его и синхронизировать текст.

Параметры в верхней части окна редактора SYLT, как правило, не требуют внесения изменений. Если текст песни содержит символы, которых нет в наборе символов «Латиница 1», рекомендуется изменить кодировку текста на UTF16 (или UTF8 для ID3v2.4.0). Если текст песни написан на английском языке и требуется сохранить максимальную совместимость, рекомендуется использовать кодировку ISO-8859-1.

Раздел Текст содержит шесть кнопок в верхней части окна. Кнопка Добавить позволяет добавить в таблицу новое временное событие. Значение времени берётся из позиции в проигрывателе, поэтому добавление записи во время воспроизведения дорожки добавит строку для текущей позиции воспроизведения. События в таблице должны располагаться в хронологическом порядке, поэтому строки будут добавляться соответствующим образом. Записи с некорректными метками времени обрабатываются особым образом: если текущая выделенная строка содержит некорректное время, будет выполнена замена этой метки на текущее время, а не добавление новой строки. Если текущее время является корректным, будет использоваться первая строка с некорректным временем, если таковая имеется. Такой принцип работы должен упростить добавление меток времени, если в таблице уже есть текст песни, но отсутствуют метки (так происходит при импорте несинхронизированного текста). Обратите внимание, что некорректное время обозначается как 00:00.00, то есть так же, как и время самого начала дорожки, которое не является некорректным. Чтобы сделать время некорректным, нажмите клавишу Delete или воспользуйтесь пунктом вызываемого правой кнопкой мыши контекстного меню Очистить. Новые строки, созданные путём вставки с помощью пункта контекстного меню Вставить строку или при импорте несинхронизированного текста с помощью кнопок Из буфера обмена или Импорт..., также содержат некорректные метки времени. Чтобы удалить строки из таблицы, воспользуйтесь кнопкой Удалить или пунктом контекстного меню Удалить строки.

Чтобы импортировать синхронизированный текст из файла, воспользуйтесь кнопкой Импорт.... Ожидаемым форматом файла является простой или усовершенствованный формат LRC. Если первая строка в выбранном файле начинается не с квадратной скобки, приложение распознает файл как простой текстовый файл с несинхронизированным текстом. Строки из такого файла будут импортированы с некорректными метками времени. Данные времени возможно добавить с помощью кнопки Добавить или ввести вручную. Также возможно импортировать текст путём копирования со вставкой с помощью кнопки Из буфера обмена. Чтобы записать синхронизированный текст в файл формата LRC, воспользуйтесь кнопкой Экспорт.... Обратите внимание, что экспортируются лишь записи с корректными метками времени, при этом сами записи будут упорядочены по времени. Записи с некорректными метками времени не сохраняются во фрейме SYLT, поэтому перед закрытием диалогового окна убедитесь, что указаны все данные времени.

Спецификация ID3 предлагает использование метки времени для каждого слога. Однако большинство проигрывателей поддерживают только разделение текста на уровне строки или предложения. Чтобы обеспечить поддержку обоих способов использования, Kid3 следует тем же принципам, что и редактор SYLT. Введённый в таблицу текст считается началом новой строки, если он не начинается с пробела или дефиса. Из этого правила есть исключения: возможно начать строку с символа подчёркивания («_») для принудительного продолжения строки или с символа решётки («#») для принудительного разрыва строки. Эти спецсимволы не сохраняются во фрейме SYLT. Внутри фрейма SYLT новые строки начинаются с символа перевода строки (шестнадцатеричного 0A), а продолжение строк — нет. При чтении фреймов SYLT Kid3 проверяет, начинается ли первая запись с символа перевода строки. Если это не так, приложение предполагает, что все записи являются отдельными строками, а продолжение по слогам не используется.

При воспроизведении дорожки будет подсвечиваться строка, соответствующая воспроизводимой позиции, что позволяет проверить правильность синхронизации информации. Если требуется добавить смещение на одну или несколько меток времени, воспользуйтесь пунктом вызываемого правой кнопкой мыши контекстного меню Добавить смещение.... Отрицательные значения позволяют уменьшить значения меток времени. Пункт контекстного меню Прокрутка до положения позволяет установить позицию воспроизведения в значение времени выбранной строки.

Рекомендуемый порядок действий для синхронизации текста песни

- Получите несинхронизированный текст, например, с помощью функции Lyrics → Embed Lyrics в контекстном меню списка файлов.

- Скопируйте несинхронизированный текст в буфер обмена, перейдите к строке Текст в таблице фреймов и нажмите комбинацию клавиш Ctrl+C.

- Добавьте фрейм синхронизированного текста (Добавить..., Синхронизированный текст, OK), затем нажмите кнопку Из буфера обмена.

- После этого в таблицу будут добавлены все строки несинхронизированного текста, при этом все метки времени будут некорректными (0:0:0.00). Перед продолжением возможно удалить пустые записи.

- Запустите воспроизведение песни с помощью кнопки ► на панели воспроизведения в нижней части главного окна.

- Когда появится следующая строка текста с некорректной меткой времени, нажмите кнопку Добавить или комбинацию клавиш Alt+A, и метка будет обновлена.

- Повторяйте это действие, пока не будут установлены все метки времени. Если что-то оказалось пропущено, остановите воспроизведение и очистите метки с помощью клавиши Delete или путём выделения меток и выбора пункта Очистить в контекстном меню. Чтобы возобновить воспроизведение с определённой метки, воспользуйтесь функцией контекстного меню Прокрутка до положения.

## Меню «Файл»

Файл → Открыть... (Ctrl+O)

  Открывает каталог. В списке файлов будут отображаться все файлы, соответствующие выбранному фильтру имён файлов, а выбранный файл будет выделен.

Файл → Последние файлы

  Открывает последний открытый каталог.

Файл → Открыть каталог... (Ctrl+D)

  Открывает каталог. В списке файлов будут отображаться все файлы, соответствующие выбранному фильтру имён файлов.

Файл → Обновить (F5)

  Обновляет каталог. Перед обновлением следует сохранить изменённые файлы. Развёрнутые вложенные папки будут свёрнуты.

Файл → Сохранить (Ctrl+S)

  Сохраняет все изменённые файлы в каталоге. Изменённые файлы отмечены значком дискеты в списке файлов. Если были изменены названия файлов, файлы будут соответствующим образом переименованы.

Файл → Отменить изменения

  Отменяет изменения одного или нескольких файлов. Если в списке файлов не было выделено ни одного файла, будут отменены изменения всех файлов. Если же в списке имеются выделенные файлы, будут отменены изменения только этих файлов.

File → Импорт...

  Диалог импорта позволяет импортировать данные непосредственно с сервера freedb.org, сервера MusicBrainz, Discogs, Amazon или из других источников списков воспроизведения в альбомах, которые предоставляют данные в текстовом формате.

  Чтобы импортировать данные с сервера freedb.org, в диалоге импорта выберите в меню С сервера... вариант gnudb.org. В появившемся диалоговом окне введите в два верхних поля данные для поиска исполнителя и названия альбома; альбомы, соответствующие запросу, будут отображены после нажатия кнопки Найти и получения результатов с сайта www.gnudb.org. Импорт данных дорожек для альбома выполняется двойным щелчком левой кнопкой мыши по альбому в списке. Для импорта данных возможно выбрать как сервер freedb.org, так и путь CGI. Импортированные данные будут отображаться в таблице предварительного просмотра диалога импорта. Если отображаемые результаты удовлетворяют требованиям, запустите процесс импорта, закрыв диалоговое окно с помощью кнопки OK.

  Чтобы выполнить поиск на сервере Discogs, выберите в раскрывающемся списке вариант Discogs. Как и в диалоге поиска gnudb.org, следует указать исполнителя и название альбома, а затем выбрать нужный вариант из списка альбомов. Возможно ввести Токен, чтобы использовать программный интерфейс RESTful Discogs API вместо веб-интерфейса, который часто меняется, тем самым нарушая работу анализатора импорта. Потребуется создать учётную запись на сайте Discogs, затем там же сгенерировать токен (Настройки/Разработчикам, Сгенерировать токен). Не забудьте нажать кнопку Сохранить параметры после ввода токена, чтобы использовать его и в последующих запросах. Если установлен флажок Стандартные теги, будет импортирована стандартная информация, например, об исполнителе, альбоме и названиях дорожек. Если установлен флажок Дополнительные теги, будет также импортирована доступная дополнительная информация, например, об аккомпанементе, аранжировщиках или издателе. Если установлен флажок Обложка, также будет загружено изображение обложки альбома (если оно доступно).

  Чтобы выполнить поиск на Amazon, выберите в раскрывающемся списке вариант Amazon. Как и в диалоге поиска gnudb.org, следует указать исполнителя и название альбома, а затем выбрать нужный вариант из списка альбомов. Если установлен флажок Дополнительные теги, будет импортирована доступная дополнительная информация, например, об аккомпанементе, аранжировщиках или издателе. Если установлен флажок Обложка, также будет загружено изображение обложки альбома (если оно доступно).

  Таким же образом производится поиск в базе данных альбомов MusicBrainz (выберите в раскрывающемся списке вариант MusicBrainz (релиз)). Рабочий процесс аналогичен процессу, описанному для функции импорта с сервера gnudb.org.

  Чтобы импортировать данные с сервера MusicBrainz, воспользуйтесь диалогом, который появляется при выборе в меню варианта MusicBrainz (отпечаток). Выбор сервера аналогичен выбору в диалоге импорта из freedb. Ниже располагается таблица, отображающая импортированные данные дорожек. Правый столбец содержит состояние запроса MusicBrainz (при первом открытии диалога — «В ожидании»). Производится поиск отпечатка, и, если результата не будет, приложение попробует провести другой поиск с использованием тегов файла. Таким образом, для успешного поиска в MusicBrainz желательно сохранить имеющиеся данные (например, данные об исполнителе и альбоме) в метках перед импортом. Если соответствующая запросу запись была найдено, поиск завершится с состоянием «Распознано». Если же найти такую запись не удастся, будет показано уведомление об отсутствии результатов или несколько неточных соответствий, из которых пользователю потребуется выбрать нужный вариант. Кнопки OK и Применить позволяют использовать импортированные данные, а кнопка Отмена закрывает диалог. Закрытие может занять некоторое время, так как потребуется отключить весь механизм MusicBrainz.

  Для импорта текстовых данных предназначен вложенный диалог, который вызывается нажатием кнопки Из файла или буфера обмена.... В этом диалоге доступны несколько предустановленных форматов импорта. Первые два, «CSV unquoted» и «CSV quoted», используются для импорта данных, которые ранее были экспортированы с помощью диалога экспорта. Эти данные возможно редактировать с помощью электронной таблицы. Они должны быть сохранены с использованием символов табуляции в качестве разделителей. После такой обработки данные возможно импортировать с использованием формата «CSV quoted». Этот формат позволяет выполнять более тонкую настройку, чем «CSV unquoted», однако его поля не должны содержать двойных кавычек. Если производится только экспорт из Kid3 для дальнейшего импорта, рекомендуется использовать формат «CSV unquoted». Обратите внимание, что в контекстном меню списка файлов также есть пункты «Экспорт CSV» и «Импорт CSV», предусматривающие использование сценариев для более полной, эффективной и гибкой обработки данных CSV при экспорте и импорте.

  Ещё один формат, «freedb HTML text», используется для копирования информации с HTML-страницы freedb.org. Найдите альбом во freedb и, если нужная информация отобразится в браузере, скопируйте содержимое в буфер обмена. Затем нажмите кнопку Из буфера обмена, и в таблице предварительного просмотра в верхней части диалога будут отображены импортированные дорожки. Если импортированные данные соответствуют ожидаемому результату, закройте диалог с помощью кнопки OK, что позволит вставить данные в теги в текущем каталоге. Место назначения (Тег 1, Тег 2 или Тег 1 и тег 2) указывается с помощью раскрывающегося списка. Для корректного присваивания тегов файлы должны быть расположены в правильном порядке. Обеспечить такой порядок возможно путём нумерации файлов.

  Следующий предустановленный формат импорта — это «freedb HTML source». Этот формат возможно использовать, когда данные хранятся в формате HTML. Импорт производится с помощью кнопки Из файла, которая открывает окно выбора файла, или путём копирования содержимого файла из редактора с последующим импортом из буфера обмена. Этот формат может быть полезен для автономного импорта, хотя документ HTML также возможно открыть в браузере, а затем импортировать в первом формате с помощью буфера обмена.

  Доступны и другие предустановленные форматы, например, «Track Title Time». Чтобы создать собственный формат и позже настроить его, воспользуйтесь кнопкой Добавить. В двух строках под названием формата возможно указать регулярные выражения для захвата полей из импортируемого текста. Первое регулярное выражение будет проанализировано один раз для каждого документа для получения таких данных о каждом альбоме, как имя исполнителя, название альбома, год выхода и жанр. Вторая строка анализируется с начала документа и до конца, чтобы получить данные дорожки (её номер и заголовок). Регулярные выражения включают в себя все функции, предоставляемые Qt™, то есть большинство возможностей регулярных выражений Perl. Использование скобок «(..)» позволяет создать буферы захвата для полей для импорта. Перед ними возможно указывать специальные коды Kid3 для захвата конкретных полей. Эти коды аналогичны кодам для формата имён файлов, и помимо кодов, перечисленных далее, возможно использовать любое название фрейма:

  - %s %{title} Заголовок (композиции)

  - %a %{artist} Исполнитель

  - %l %{album} Альбом

  - %c %{comment} Комментарий

  - %y %{year} Год

  - %t %{track} Дорожка

  - %g %{genre} Жанр

  - %d %{duration} Длительность

  Например, регулярное выражение дорожки (вторая строка) для импорта из списка воспроизведения `.m3u` может выглядеть как «`%{track}(\d+)\s+%{title}(\S[^\r\n]*)\.mp3[\r\n]`». Все форматы возможно изменить путём редактирования регулярных выражений и названия и последующего нажатия кнопки Сохранить параметры. Они будут храниться в файле `kid3rc` в каталоге конфигурации. Этот файл возможно отредактировать напрямую для получения большего количества форматов импорта или удалить для возврата к форматам по умолчанию. Чтобы удалить форматы, воспользуйтесь кнопкой Убрать.

  Параметр Точность отображает оценку того, насколько хорошо импортированные данные соответствуют заданным дорожкам. Степень соответствия в процентах основана на длительности дорожек или названиях файлов. Параметр Обложки показывает URL-адреса изображений обложек альбомов, которые будут загружены.

  Чтобы проверить, соответствуют ли импортированные данные дорожек текущему набору файлов, следует сравнить длительность импортированных дорожек с длительностью этих файлов. Для этого служит флажок Проверять максимальную допустимую разницу во времени (в секундах):, который позволяет указать максимально допустимую погрешность в секундах. Если приложение обнаружит несоответствие длительности, данные о длительности будут обозначены красным фоном в таблице предварительного просмотра.

  Если файлы расположены не в же порядке, что и импортированные дорожки, потребуется изменить назначенные этим файлам дорожки. Эту задачу упрощает опция Сопоставлять с: с кнопками Длительность, Дорожка и Название. Эти кнопки позволяют переупорядочить дорожки в соответствии с нужным полем. Чтобы отредактировать порядок дорожек вручную, перетащите дорожку на новое место с помощью левой кнопки мыши в сочетании с клавишей Ctrl.

  Открытый диалог импорта содержит данные тегов. Тип тега («Тег 1», «Тег 2», «Тег 1 и тег 2») выбирается в раскрывающемся списке Место назначения. Кнопка справа от раскрывающегося списка позволяет отменить изменения, чтобы вновь показать в таблице текущее содержимое тегов. Флажки в первом столбце таблицы позволяют выбрать дорожки, для которых будут импортированы данные. Это может быть полезно, например, если папка содержит дорожки с обоих компакт-дисков двойного компакт-диска, а импортировать следует только данные второго компакт-диска.

  Чтобы идентифицировать дорожки, данные которых будут импортированы, возможно включить показ названий файлов или полного пути к файлам с помощью контекстного меню заголовка таблицы. Значения в таблице импорта доступны для редактирования. Кнопка отмены изменений, расположенная справа от раскрывающегося списка Место назначения, служит для восстановления содержимого тегов. Ей также возможно воспользоваться после изменения содержания пункта Место назначения.

  Почти во всех диалогах присутствует кнопка Сохранить параметры, позволяющая сохранить параметры конкретного диалога и размеры окна.

  Кнопка Из тегов... открывает вложенный диалог для заполнения данных фреймов тегов на основе других фреймов тегов. Эта функция позволяет просто скопировать информацию из одного тега в другой или извлечь часть фрейма и вставить её в другой фрейм.

  Как и в диалоге импорта из файла или буфера обмена, здесь представлены легко настраиваемые форматы для выполнения различных действий. Предусмотрены предустановленные форматы для копирования значения названия альбома в поля исполнителя, композитора или дирижёра, а также для извлечения номера дорожки из полей заголовка, содержащих число. Также предусмотрен формат для получения значения подзаголовка из поля заголовка.

  Следующий пример описывает алгоритм добавления пользовательского формата, который будет вставлять информацию из поля «Подзаголовок» в поле «Комментарий». Создайте новый формат с помощью кнопки Добавить и укажите новое название, например, «Подзаголовок в комментарий». Затем введите «`%{subtitle}`» в поле Источник и «`%{comment}(.*)`» в Извлечение, а затем нажмите кнопку Сохранить параметры.

  Выражение в поле Источник может содержать коды формата для произвольных фреймов тегов. Использование нескольких кодов позволяет комбинировать содержимое разных фреймов. Для каждой дорожки текст генерируется из её тегов с использованием формата Источник, а затем к этому тексту применяется регулярное выражение из поля Извлечение для установки новых значений тегов. Коды формата используются перед захватывающими круглыми скобками, чтобы указать фрейм тега, в котором будет сохранён захваченный текст. Всё это работает таким же образом, как и в функции импорта из файла или буфера обмена.

  Функцией Импорт из тегов... также возможно воспользоваться непосредственно в меню Файл. Разница между этими двумя инструментами заключается в том, что вложенный диалог функции импорта работает со всеми файлами в текущем каталоге, тогда как функция в меню работает с выбранными файлами (которые могут находиться в разных каталогах). Функция в меню поддерживает дополнительный код «`%{__return}`» для возврата полученного значения, что может быть полезно при работе с интерфейсами командной строки и QML.

Файл → Импорт из gnudb.org...

  Импорт с сервера freedb.org с помощью поиска по альбомам в gnudb.org. Этот пункт меню открывает то же окно импорта, что и пункт меню Импорт..., но при этом сразу появляется диалог gnudb.org.

Файл → Импорт из Discogs...

  Импорт с сервера Discogs. Этот пункт меню открывает то же окно импорта, что и пункт меню Импорт..., но при этом сразу появляется диалог Discogs.

Файл → Импорт из Amazon...

  Импорт из Amazon. Этот пункт меню открывает то же окно импорта, что и пункт меню Импорт..., но при этом сразу появляется диалог Amazon.

Файл → Импорт из MusicBrainz (релиз)...

  Импорт из базы данных альбомов MusicBrainz. Этот пункт меню открывает то же окно импорта, что и пункт меню Импорт..., но при этом сразу появляется диалог MusicBrainz (релиз).

Файл → Импорт из MusicBrainz (отпечаток)...

  Импорт с сервера MusicBrainz. Этот пункт меню открывает то же окно импорта, что и пункт меню Импорт..., но при этом сразу появляется диалог MusicBrainz (отпечаток).

Файл → Импорт из тегов...

  Аналогично кнопке «Из тегов...», но импорт применяется к выделенным файлам.

Файл → Автоматический импорт...

  Автоматический импорт позволяет импортировать данные для нескольких альбомов с различных веб-сервисов. Если в списке файлов выбраны каталоги, будут импортированы данные дорожек для выделенных каталогов. Если не выделен ни один каталог, будут импортированы данные для всех каталогов в списке файлов.

  Тип тега («Тег 1», «Тег 2», «Тег 1 и тег 2») выбирается в раскрывающемся списке Место назначения.

  Профили указывают, к каким серверам следует обратиться, чтобы получить информацию об альбоме. Некоторые профили предустановлены («All», «MusicBrainz», «Discogs», «Cover Art»); чтобы добавить дополнительные профили, воспользуйтесь кнопкой Добавить, расположенной справа от раскрывающегося списка Профиль.

  В таблице ниже приведён список серверов, которые будут использоваться при импорте информации об альбоме с помощью выбранного профиля. Процесс импорта данных альбома завершается после получения всей необходимой информации, поэтому порядок строк в таблице имеет значение. Изменить порядок позволяют кнопки Переместить вверх и Переместить вниз. Кнопка Изменить... позволяет внести изменения в существующую запись. В столбце Сервер представлены те же серверы, что и в функциях импорта. Флажки Стандартные теги, Дополнительные теги, Обложки определяют информацию, которая будет получена с сервера. В столбце Точность указывается точность, которой требуется достичь при импорте данных. Если заданный уровень точности не будет достигнут, приложение попытается получить данные со следующего сервера. Аналогичный диалог со свойствами сервера появляется при нажатии кнопки Добавить... для добавления новой записи сервера. Кнопка Убрать позволяет удалить существующие записи.

  Чтобы запустить автоматический пакетный импорт с выбранным профилем, нажмите кнопку Начать. Подробные сведения о запущенном импорте отображаются в верхней части диалогового окна. Чтобы прервать процесс, нажмите кнопку Прервать.

Файл → Найти обложки...

  Диалог «Найти обложки» позволяет найти и загрузить обложки альбомов. Поля Исполнитель и альбом заполняются автоматически, если в тегах доступны соответствующие данные. В разделе Источник доступно большое количество веб-сайтов с обложками. Под названием источника расположена URL-ссылка, в которой в качестве параметров указаны исполнитель и альбом. Чтобы вставить значения артиста и альбома в кодировке URL, воспользуйтесь командами «`%u{artist}`» и «`%u{album}`». Команды для вставки других значений из тегов доступны в разделе «Настройка Kid3» (описание вкладки Команды пользователя). Чтобы добавить дополнительные источники обложек, замените запись «Custom Source» названием нового источника и нажмите клавишу Enter; после этого следует указать URL-адрес и нажать кнопку Сохранить параметры. Результат будет отображён в верхней части диалога, а чтобы открыть соответствующий адрес в браузере по умолчанию, указанном в параметрах, воспользуйтесь кнопкой Браузер. Изображение обложки возможно перетащить из окна браузера в окно Kid3, после чего оно будет сохранено во фрейме изображения выбранных файлов.

  Так как не все браузеры поддерживают функцию перетаскивания изображений, а многие изображения на веб-сайтах представлены в виде URL-адресов, в таких случаях Kid3 получит не изображение, а его URL-адрес. Если URL-адрес указывает на изображение, оно будет загружено, но, если URL-адрес указывает на какой-либо интернет-источник, его придётся преобразовать в соответствующее изображение. Такие привязки указаны в таблице Извлечение URL-адреса. Левый столбец Соответствие содержит регулярные выражения, которые сравниваются с URL-адресами. Если программе удаётся установить соответствие, захваченные выражения в скобках вставляются в шаблон в правый столбец URL-адрес изображения (в позиции, указанные заменителями \1 и так далее). Заменённое регулярное выражение содержит URL-адрес изображения. Такой способ позволяет импортировать обложки из Amazon, Google Images и так далее. Также возможно указать собственные соответствия.

Файл → Экспорт...

  Диалог экспорта используется для сохранения данных из тегов в файле или в буфере обмена. В верхней части окна редактора доступен предварительный просмотр данных для экспорта. Если данные экспорта содержат символы табуляции, данные будут показаны в виде таблицы. Данные генерируются из тегов в текущем каталоге в соответствии с настроенным форматом.

  Параметры форматирования аналогичны параметрам диалога «Импорт»: верхнее поле содержит название формата (например, «CSV unquoted»), следом идёт заголовок, который будет создан в начале файла. Далее следуют данные дорожки (используются для каждой дорожки). Последнее поле позволяет создать какой-либо завершающий текстовый фрагмент.

  В полях форматирования не должно содержаться регулярных выражений, как в диалоговом окне «Импорт»; там должны быть только выражения форматирования результата со специальными заменителями с символом «%», которые будут заменены значениями из соответствующих тегов. Всё это работает так же, как форматирование названия файла, то есть используются те же коды вместе с дополнительными. Могут использоваться не только коды, перечисленные далее, но и коды с названиями фреймов тегов.

  - %s %{title} Заголовок (композиции)

  - %a %{artist} Исполнитель

  - %l %{album} Альбом

  - %c %{comment} Комментарий

  - %y %{year} Год

  - %t %{track} Номер дорожки (например, 01)

  - %t %{track.n} Номер дорожки с шириной поля n (например, 001 для %{track.3})

  - %T %{tracknumber} Номер дорожки (без нулей в начале, например, 1)

  - %g %{genre} Жанр

  - %f %{file} Имя файла

  - %p %{filepath} Путь

  - %{modificationdate} Дата изменения

  - %{creationdate} Дата создания

  - %u %{url} URL-адрес

  - %{dirname} Имя каталога

  - %d %{duration} Длительность в минутах:секундах

  - %D %{seconds} Длительность в секундах

  - %n %{tracks} Количество дорожек в альбоме

  - %e %{extension} Расширение файла

  - %O %{tag1} Формат тега 1 (ID3v1.1 или пустое значение, если не существует)

  - %o %{tag2} Формат тега 2 (ID3v2.3.0, ID3v2.4.0, ID3v2.2.0, ID3v2.2.1, Vorbis, APE, MP4, ASF, или пустое значение, если не существует)

  - %b %{bitrate} Скорость передачи в кбит/с

  - %v %{vbr} Переменная скорость или пустое значение (только для ID3v2.3 с id3lib)

  - %r %{samplerate} Частота дискретизации в Гц

  - %m %{mode} Режим каналов (cтерео или объединённое стерео)

  - %h %{channels} Количество каналов (1 или 2)

  - %k %{codec} Кодек (например, MPEG 1 Layer 3, MP4, Ogg Vorbis, FLAC, MPC, APE, ASF, AIFF, WAV)

  Предустановлено несколько форматов. В формате «CSV unquoted» поля разделяются символами табуляции. Данные в этом формате возможно снова импортировать в Kid3 с использованием одноимённого формата импорта. В формате «CSV quoted» поля дополнительно заключаются в двойные кавычки, что упрощает импорт в приложения для работы с таблицами. Однако, если используется этот формат, эти поля не должны содержать двойные кавычки. Форматы «Extended M3U» и «Extended PLS» позволяют создавать списки воспроизведения с расширенными атрибутами и абсолютными путями к файлам. Формат «HTML» позволяет создавать HTML-страницы с гиперссылками на дорожки. Формат «Kover XML» создаёт файл, который возможно импортировать в программу для печати обложек компакт-дисков Kover. Формат «Technical Details» позволяет предоставить информацию о скорости передачи, частоте дискретизации, каналах и так далее. Наконец, пункт «Custom Format» намеренно оставлен пустым для определения пользовательского формата. Дополнительные пользовательские форматы задаются путём добавления строк в файл `kid3rc` в каталоге конфигурации. Остальные форматы возможно изменить в соответствии с потребностями пользователя.

  Источник тегов для создания экспортируемых данных (Тег 1 или Tег 2) выбирается в раскрывающемся списке. Кнопки В файл... или В буфер обмена позволяют поместить данные в файл или буфер обмена. Кнопки OK и Отмена закрывают диалог, при этом кнопка OK позволяет сохранить текущие параметры диалога.

Файл → Создать список воспроизведения...

  Создаёт список воспроизведения. Формат и содержимое списка воспроизведения возможно настроить с помощью различных параметров.

  Чтобы указать название списка воспроизведения, выберите вариант Совпадает с именем каталога или Формат со значениями из тегов, например, «`%{artist} - %{album}`» (в этом случае название списка воспроизведения будет складываться из имени исполнителя и названия альбома). Коды формата аналогичны кодам для экспорта. Кнопка-переключатель Создать список воспроизведения позволяет создать пустой список воспроизведения с заданным названием. Расширение зависит от указанного формата списка воспроизведения.

  Расположение создаваемого списка воспроизведения указывается в раскрывающемся списке Создать в.

  Текущем каталоге

    Список воспроизведения создаётся в текущем каталоге и содержит только файлы текущего каталога. Текущий каталог — это каталог, в котором расположен текущий файл. Если выделено несколько файлов, текущим файлом, вероятно, будет являться последний выделенный файл.

  Каждом каталоге

    Список воспроизведения создаётся в каждом каталоге, который содержит указанные файлы, и каждый список воспроизведения содержит файлы из соответствующего каталога.

  Каталоге верхнего уровня

    Создаётся только один список воспроизведения в каталоге верхнего уровня (то есть в каталоге со списком файлов). Этот список содержит файлы из каталога верхнего уровня и файлы из всех вложенных каталогов.

  Формат списка воспроизведения может быть следующим: M3U, PLS или XSPF.

  Если установлен флажок Включать только выбранные файлы, в список воспроизведения будут включены только выделенные файлы. Если выделен каталог, будут выделены все файлы, содержащиеся в нём. Если этот флажок не установлен, в список воспроизведения будут включены все аудиофайлы.

  Параметр Упорядочить по имени файла представляет собой обычный метод сортировки, когда файлы упорядочиваются по имени в алфавитном порядке. Параметр Упорядочить по полю тега позволяет отсортировать файлы по строке формата со значениями из полей тега. Например, «`%{track.3}`» позволит упорядочить файлы по номеру дорожки («`.3`» используется для получения трёх цифр с нулями в начале, потому что строки используются для сортировки). Также возможно указать несколько полей, например, «`%{genre}%{year}`» для сортировки на основе строки с жанром и годом.

  Записи в списке воспроизведения могут содержать относительные или абсолютные пути к файлам в зависимости от того, какой параметр установлен: Использовать относительный путь для файлов в списке воспроизведения или Использовать абсолютный путь для файлов в списке воспроизведения.

  Когда выбрана опция Записать только список файлов, список воспроизведения будет содержать только пути к файлам. Чтобы создать расширенный список воспроизведения с дополнительной информацией, укажите строку формата с помощью параметра Записать информацию, используя.

Файл → Выход (Ctrl+Q)

  Закрывает приложение.

## Меню «Правка»

Правка → Выделить все (Alt+A)

  Выделяет все файлы.

Правка → Снять выделение (Ctrl+Shift+A)

  Снимает выделение со всех файлов.

Правка → Выбрать все файлы в каталоге

  Выделяет все файлы в текущем каталоге.

Правка → Предыдущий файл (Alt+Вверх)

  Выделяет предыдущий файл.

Правка → Следующий файл (Alt+Вниз)

  Выделяет следующий файл.

Правка → Найти... (Ctrl+F)

  Производит поиск строк в именах файлов и тегах. Диалог Найти — это часть диалога Заменить, описание которого приводится далее.

Правка → Заменить... (Ctrl+R)

  Этот пункт меню открывает диалог для поиска и замены строк в именах файлов и тегах. Чтобы ограничить набор фреймов для проведения поиска, снимите флажок Выбрать все и выделите фреймы, в которых нужно провести поиск. Также доступны параметры для поиска в обратном направлении, с учётом регистра и использованием регулярных выражений.

  В зависимости от количества файлов поиск может занять некоторое время; чтобы прервать поиск, закройте диалог.

## Меню «Сервис»

Сервис → Применить формат имени файла

  Когда в диалоге настройки отключён параметр Автоматически применять формат для формата имени файла, этот пункт меню позволяет применить указанный формат к именам выбранных файлов. Эта функция также позволяет проверить соответствие имён файлов настроенному формату путём применения формата ко всем сохранённым файлам и последующей проверки того, были ли какие-либо файлы изменены (и, следовательно, отмечены значком дискеты в списке файлов).

Сервис → Применить формат тега

  Когда в диалоге настройки отключён параметр Автоматически применять формат для формата тега, этот пункт меню позволяет применить указанный формат к тегам выбранных файлов. Эта функция также позволяет проверить соответствие тегов настроенному формату путём применения формата ко всем сохранённым файлам и последующей проверки того, были ли какие-либо файлы изменены (и, следовательно, отмечены значком дискеты в списке файлов).

Сервис → Применить кодировку текста

  При использовании этой функции устанавливается Кодировка текста, указанная на вкладке Настройка → Настроить Kid3... → Теги → Тег 2 для всех выбранных файлов. Если выбрана кодировка UTF8, для тегов ID3v2.3.0 будет использоваться UTF16, потому что этот формат не поддерживает UTF8.

Сервис → Переименовать каталог...

  Этот диалог позволяет автоматически переименовать текущий открытый каталог в соответствии с тегами в файлах. Предварительно настроено несколько форматов для включения в название каталога информации об исполнителе, альбоме и годе выпуска. Также возможно указать собственный формат и воспользоваться кнопкой Изменить... для редактирования имеющихся форматов. Следующие специальные коды используются для вставки значений тегов в имя каталога:

  - %s %{title} Заголовок (композиции)

  - %a %{artist} Исполнитель

  - %l %{album} Альбом

  - %c %{comment} Комментарий

  - %y %{year} Год

  - %t %{track} Номер дорожки (например, 01)

  - %t %{track.n} Номер дорожки с шириной поля n (например, 001 для %{track.3})

  - %T %{tracknumber} Номер дорожки (без нулей в начале, например, 1)

  - %g %{genre} Жанр

  - %{dirname} Имя каталога (например, %{year" "}%{dirname} добавит в начале имени текущего каталога год)

  - %{max-year} Максимальное значение года, найденное для этого каталога, также может использоваться с другими кодами, отличными от «year»

  - %{min-year} Минимальное значение года, найденное для этого каталога

  - %{unq-year} Уникальное значение года, найденное для этого каталога, или пустое значение, если уникальное не найдено

  Если в формате присутствует разделитель каталогов «/», будет создано несколько каталогов. Если требуется не переименовать текущий каталог, а создать новый, воспользуйтесь раскрывающимся списком Действие и выберите вариант Создать каталог вместо Переименовать каталог. Источник данных тега возможно установить в одно из следующих значений: Тег 1 и тег 2, Тег 1 или Тег 2. Предварительный просмотр действия по переименованию первого файла доступен в разделах диалога Из и В.

  Чтобы переименовать сразу несколько каталогов, выделите их.

Сервис → Пронумеровать дорожки...

  Если номера дорожек в тегах не указаны или установлены неправильно, эта функция позволит автоматически пронумеровать дорожки по возрастанию. В диалоге возможно указать начальный номер. Если требуется пронумеровать только часть дорожек, сначала их следует выделить.

  Также в тегах будет указано количество дорожек, если установлен флажок Всего дорожек.

  Возможно пронумеровать дорожки в нескольких каталогах. Нужные каталоги следует развернуть и выделить.

  Если установлен флажок Начинать заново в каждой папке, в каждом выделенном каталоге нумерация дорожек будет начата заново с указанного номера.

  Диалог нумерации дорожек также позволяет отформатировать уже присвоенные номера без изменения их значений, если снят флажок Начальный номер. Общее количество дорожек будет добавлено, если установлен соответствующий флажок, который предназначен для установки общего количества для всех выбранных дорожек. Если требуется выполнить только форматирование существующих номеров, этот флажок также необходимо снять.

Сервис → Фильтр...

  Фильтр предоставляет возможность отображения только тех файлов, которые соответствуют определённым требованиям. Эта функция полезна при работе с большой коллекцией, она позволяет отредактировать только определённые файлы. В выражении, определяющем, какие файлы будут показаны, используются те же коды формата, что и для формата имени файла, импорта и экспорта.

  - %s %{title} Заголовок (композиции)

  - %a %{artist} Исполнитель

  - %l %{album} Альбом

  - %c %{comment} Комментарий

  - %y %{year} Год

  - %t %{track} Номер дорожки (например, 01)

  - %t %{track.n} Номер дорожки с шириной поля n (например, 001 для %{track.3})

  - %T %{tracknumber} Номер дорожки (без нулей в начале, например, 1)

  - %g %{genre} Жанр

  - %f %{file} Имя файла

  - %p %{filepath} Абсолютный путь к файлу

  - %e %{extension} Расширение файла

  - %O %{tag1} Формат тега 1 (ID3v1.1 или пустое значение, если не существует)

  - %o %{tag2} Формат тега 2 (ID3v2.3.0, ID3v2.4.0, ID3v2.2.0, ID3v2.2.1, Vorbis, APE, MP4, ASF, или пустое значение, если не существует)

  - %b %{bitrate} Скорость передачи в кбит/с

  - %v %{vbr} Переменная скорость или пустое значение (только для ID3v2.3 с id3lib)

  - %r %{samplerate} Частота дискретизации в Гц

  - %m %{mode} Режим каналов (cтерео или объединённое стерео)

  - %h %{channels} Количество каналов (1 или 2)

  - %k %{codec} Кодек (например, MPEG 1 Layer 3, MP4, Ogg Vorbis, FLAC, MPC, APE, ASF, AIFF, WAV)

  - %w %{marked} Отмечено, равно 1, если файл содержит отметку (например, из-за усечения или нарушения стандарта), является пустым, если отметок нет

  - %1a %1{artist}, ... Использовать префикс 1, чтобы получить значения тега 1

  - %2a %2{artist}, ... Использовать префикс 2, чтобы получить значения тега 2

  Эти коды заменяются значениями для файла, и полученные строки можно будет сравнивать со следующими операциями:

  - s1 equals s2: выполняется, если s1 равно s2.

  - s1 contains s2: выполняется, если s1 содержит s2, то есть s2 — это подстрока s1.

  - s matches re: выполняется, если s соответствует регулярному выражению re.

  Выражения, вычисление которых даёт значение true, будут заменены на 1, а те, которые дают false, — на 0. Значение ИСТИНА (true) может быть представлено как 1, true, on и yes, значение ЛОЖЬ — 0, false, off и no. Логические операции not, and, or (в таком порядке приоритета) возможно группировать с помощью скобок.

  Некоторые правила фильтрации уже предустановлены и могут служить примерами для пользовательских выражений:

  All

    Если к списку файлов был применён фильтр, в заголовке окна будет отображена надпись «[фильтровано]». Этот пункт позволяет снять фильтрацию, и все файлы снова будут отображаться. В соответствующем фильтре используется пустое выражение, но значение «true» для фильтра тоже приведёт к тому же результату.

  Filename Tag Mismatch

    `not (%{filepath} contains "%{artist} - %{album}/%{track} %{title}")`

    Проверяет, соответствует ли путь к файлу формату названия этого файла. Это правило автоматически синхронизируется с изменениями в формате названий файлов.

  No Tag 1

    `%{tag1} equals ""`

    Отображает только те файлы, которые не содержат тег 1.

  No Tag 2

    `%{tag2} equals ""`

    Отображает только те файлы, которые не содержат тег 2.

  ID3v2.3.0 Tag

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

    Отображает только те файлы, которые содержат тег ID3v2.3.0.

  ID3v2.4.0 Tag

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

    Отображает только те файлы, которые содержат тег ID3v2.4.0.

  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})`

    Отображает файлы с различиями между тегом 1 и тегом 2.

  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}`

    Отображает файлы с одинаковыми тегом 1 и тегом 2.

  Incomplete

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

    Отображает файлы с пустыми значениями в стандартных тегах (заголовок, исполнитель, альбом, дата, номер дорожки, жанр).

  No Picture

    `%{picture} equals ""`

    Отображает только те файлы, которые не содержат обложку.

  Marked

    `not (%{marked} equals "")`

    Отображает только те файлы, которые отмечены, потому что они не соответствуют стандарту ID3, усечены или содержат слишком большое изображение обложки альбома.

  Custom Filter

    Выберите этот пункт, чтобы добавить собственный фильтр. Например, если требуется создать фильтр для исполнителей, названия которых начинаются со слова «The», замените текст «Custom Filter» на название «The-группы» и нажмите клавишу Enter. Вставьте следующее выражение в строку редактирования:

    `%{artist} matches "The.*"`

    Затем нажмите кнопку Сохранить параметры. Чтобы применить фильтр к файлам, нажмите кнопку Применить. Все обработанные файлы отображаются в текстовом виде со знаком «+» для тех файлов, которые соответствуют фильтру, и «-» для остальных. По окончании отображаются только файлы с исполнителем, название которого начинается с «The», а в заголовке окна появляется надпись «[фильтровано]».

Сервис → Преобразовать ID3v2.3 в ID3v2.4

  Если в выделенных файлах содержатся теги ID3v2.3, они будут преобразованы в теги ID3v2.4. Фреймы, которые не поддерживаются библиотекой TagLib, не будут учитываться. Преобразовываются только файлы без несохранённых изменений.

Сервис → Преобразовать ID3v2.4 в ID3v2.3

  Если в выделенных файлах содержатся теги ID3v2.4, они будут преобразованы в теги ID3v2.3. Преобразовываются только файлы без несохранённых изменений.

Сервис → Воспроизведение

  Открывает простую панель инструментов для воспроизведения аудиофайлов. Панель содержит кнопки для стандартных действий (Воспроизвести или приостановить, Остановить воспроизведение, Предыдущая дорожка, Следующая дорожка, Закрыть), ползунки для регулирования позиции и громкости, а также индикатор текущей позиции. Если выбрано несколько файлов, будут воспроизводиться выбранные дорожки. Если же ничего не выбрано, будут воспроизводиться все файлы.

## Меню «Настройка»

Настройка → Показать панель инструментов

  Переключает отображение панели инструментов.

Настройка → Показать строку состояния

  Переключает отображение строки состояния, в которой показаны более длительные действия, такие как открытие или сохранение каталога.

Настройка → Показывать изображение

  Переключает отображение обложки.

Настройка → Автоматически скрывать теги

  Если флажок установлен, пустые теги будут скрыты автоматически. Кнопки -/+ позволяют вручную свернуть или развернуть разделы Файл, Тег 1 и Тег 2.

Настройка → Комбинации клавиш...

  Открывает диалог настройки комбинаций клавиш для большинства функциональных возможностей программы. Доступны даже функции без соответствующего пункта меню или кнопки, например, переход к следующему файлу, предыдущему файлу, выбор всех файлов.

Настройка → Настроить Kid3...

  Открывает диалог настройки параметров приложения, который содержит разделы для настройки тегов, файлов, команд пользователя и параметров сети.

  Параметры тегов доступны в разделе Теги, который разделён на четыре вкладки: Тег 1, Тег 2, Тег 3 и Все теги.

  Если установлен флажок Отмечать усечённые поля, усечённые поля ID3v1.1 будут отмечены красным цветом. Текстовые поля тегов ID3v1.1 могут иметь не более 30 символов, а комментарии — не более 28. Также ограничено количество символов в полях жанра и нумерации дорожек, поэтому поля могут быть усечены при импорте или преобразовании из ID3v2. Усечённые поля и сам файл будут отмечены красным цветом. После редактирования поля такое выделение цветом будет снято.

  Параметр Кодировка текста для тегов ID3v1 позволяет установить набор символов, используемый в тегах ID3v1. Стандартной кодировкой является ISO-8859-1, поэтому рекомендуется не менять это значение. Однако существуют теги с другой кодировкой; такую кодировку возможно указать с помощью этого параметра, чтобы затем скопировать теги ID3v1 в ID3v2, где предусмотрена поддержка Unicode.

  Флажок Использовать формат «номер дорожки / всего дорожек» определяет, будет ли поле номера дорожки тегов ID3v2 содержать просто номер дорожки или также и общее количество дорожек в каталоге.

  Если установлен флажок Жанр как текст (вместо числовой строки), все жанры в тегах ID3v2 будут сохранены в виде текстовой строки, даже если существует соответствующий код для жанров в тегах ID3v1. Если этот флажок снят, жанры, для которых существует код в тегах ID3v1, будут сохранены в формате числа — кода жанра (в скобках для тега ID3v2.3). Таким образом, жанр Metal будет сохранён как «Metal» или «(9)» в зависимости от значения этого параметра. Жанры, которых нет в списке жанров в тегах ID3v1, всегда сохраняются в виде текстовой строки. Цель этой опции — улучшить совместимость с устройствами, которые неправильно интерпретируют коды жанров.

  Если установлен флажок Файлы WAV с блоком id3 в нижнем регистре, блок RIFF, используемый для хранения тегов ID3v2 в файлах WAV, будет называться «id3» вместо «ID3». По умолчанию Kid3 и другие приложения, использующие TagLib, принимают как строчные, так и прописные варианты при чтении файлов WAV, но при записи тегов ID3v2 в файлы WAV они используют вариант «ID3». Поскольку существуют другие приложения, которые принимают только вариант «id3» (например, JRiver Media Center и foobar2000), эта опция позволяет создавать теги, которые могут быть прочитаны такими приложениями.

  Если установлен флажок Отмечать нарушения стандарта, поля тегов ID3v2, нарушающие стандарт, будут отмечены красным. Подробная информация о нарушении отображается во всплывающей подсказке:

  - Должно быть уникальным

  - Перевод строки запрещён

  - Возврат каретки запрещён

  - Необходимо ввести сведения о владельце

  - Должно быть в числовом формате

  - Должно быть в числовом формате или формате «номер / общее количество»

  - Формат — ДДММ

  - Формат — ЧЧММ

  - Формат — ГГГГ

  - Должно начинаться с года и пробела

  - Формат даты и времени должен соответствовать стандарту ISO 8601

  - Должно быть музыкальным ключом, 3 символа, A-G, b, #, m, o,

  - Код языка должен соответствовать стандарту ISO 639-2, 3 символа в нижнем регистре

  - Должно быть кодом ISRC, 12 символов

  - Должно быть списком строк, разделённых «|»

  - Имеется лишний пробел

  Документы по стандартам ID3, доступные в сети:

  - тег ID3 версии 2.3.0

  - Тег ID3 версии 2.4.0 — основная структура

  - Тег ID3 версии 2.4.0 — нативные фреймы

  Кодировка текста определяет кодировку по умолчанию для фреймов ID3v2: ISO-8859-1, UTF16 или UTF8. UTF8 не поддерживается фреймами ID3v2.3.0; если указана эта кодировка, вместо неё будет использоваться кодировка UTF16. Для фреймов ID3v2.4.0 возможно использовать все три типа кодировки.

  Версия, используемая для новых тегов позволяет указать, в какой версии должны создаваться новые теги ID3v2: 2.3.0 или 2.4.0.

  Количество цифр в номере дорожки — это количество цифр в полях «Номер дорожки». Для заполнения используются нули в начале. Например, при значении 2 номер дорожки 5 устанавливается как «05».

  Раскрывающийся список Имя поля комментария предназначен только для файлов Ogg/Vorbis и FLAC и задаёт имя поля, используемого для комментариев. Разные приложения используют разные названия, например, «`COMMENT`» используется приложением XMMS, а Amarok использует название «`DESCRIPTION`».

  Формат изображений в файлах Ogg/Vorbis указывается в раскрывающемся списке Имя поля изображения, значениями которого могут быть «`METADATA_BLOCK_PICTURE`» или «`COVERART`». Первое значение — это официальный стандарт, использующий тот же формат, что и изображения в тегах FLAC. «`COVERART`» — это более ранний неофициальный способ включения изображений в комментарии Vorbis. Он позволяет обеспечивать совместимость с устаревшими проигрывателями.

  Если установлен флажок Отмечать, если размер больше, чем (в байтах), файлы, содержащие встроенную обложку, размер которых превышает указанное значение в байтах, будут отмечены красным. Эта функция позволяет найти файлы, содержащие слишком большие изображения, которые могут не поддерживаться некоторыми приложениями или проигрывателями. Значение по умолчанию — 131072 байта (128 КБ).

  Раздел Пользовательские жанры позволяет указывать жанры, отсутствующие в стандартном списке жанров, например, «Gothic Metal». Такие пользовательские жанры появятся в раскрывающемся списке Жанр в разделе Тег 2. В тегах ID3v1.1 возможно указывать только предустановленные жанры.

  Список пользовательских жанров также возможно использовать для сокращения количества вариантов в раскрывающемся списке Жанр до тех, которые используются чаще всего. Например, если коллекция в основном содержит музыку в жанрах «Metal», «Gothic Metal», «Ancient» и «Hard Rock», внесите жанры в этот список и установите флажок Показывать только пользовательские жанры. Тогда раскрывающийся список Жанр в разделе Тег 2 будет содержать только эти четыре жанра, и искать их в полном списке не понадобится. В таком примере в списке жанров тега 1 будут отображаться только «Metal» и «Hard Rock», потому что эти два пользовательских жанра являются стандартными жанрами. Если флажок Показывать только пользовательские жанры не установлен, пользовательские жанры будут расположены в конце списка жанров.

  Раздел Фреймы быстрого доступа позволяет указать, какие типы фреймов следует всегда отображать в разделе Тег 2. Такие фреймы затем можно будет добавить без предварительного использования кнопки Добавить. Чтобы изменить порядок фреймов быстрого доступа, воспользуйтесь функцией перетаскивания

  Значение в раскрывающемся списке Имя поля номера дорожки используется только для данных RIFF INFO. С его помощью возможно указать название поля, используемого для номеров дорожек. Название поля номера дорожки не определено в исходном стандарте RIFF. В некоторых программах используется «`ITRK`», в других — «`IPRT`».

  Раздел Формат тега содержит параметры для форматирования тегов. Если установлен флажок Автоматически применять формат, заданные параметры форматирования будут автоматически применяться при правке текста в строках редактирования. Флажок Проверка включает или отключает средства проверки значений номера дорожки по общему количеству дорожек и значений даты и времени. Раскрывающийся список Преобразование регистра позволяет выбрать один из вариантов изменения регистра: Нет изменений, Все строчные, Все прописные, Первая буква — прописная или Все первые буквы — прописные. Чтобы использовать локаль для преобразования букв между верхним и нижним регистром, воспользуйтесь расположенным ниже раскрывающимся списком. Список заменителей позволяет настроить произвольное преобразование строк. Чтобы добавить новое сопоставление, выделите ячейку в столбце Из, вставьте в неё текст, который следует заменить, затем перейдите к соответствующей ячейке в столбце В и вставьте в неё замещающий текст. Если текст, который следует заменить, начинается и заканчивается символом косой черты «/», предполагается, что использовано регулярное выражение. Для регулярных выражений, содержащих группы захвата в круглых скобках, соответствующие им заменители \1, \2, ... в ячейке столбца В заменяются строкой, захваченной соответствующей группой захвата. Чтобы удалить соответствие, укажите в поле Из пустое значение (например, нажав клавишу пробела, а затем клавишу Backspace). Добавить или удалить строки также возможно с помощью контекстного меню, которое вызывается щелчком правой кнопки мыши. Замена выполняется только в том случае, если установлен флажок Замена строк.

  Таблица в разделе Рейтинг содержит сопоставления рейтинга (в звёздах) с текущими значениями, хранящимися в теге. Фреймы с данными рейтинга содержатся в строке «Рейтинг» списка фреймов. Для этих фреймов рейтинг устанавливается путём присвоения определённого количества звёзд из пяти звёзд. В разных форматах тегов и разных приложениях используются разные значения для привязки этой оценки в звёздах к значению, хранящемуся в теге. Чтобы отображать количество присвоенных звёзд корректно, программа Kid3 обращается к этой таблице. Ключом для поиска соответствующей информации является название фрейма, например, в комментариях Vorbis это будет «RATING», а в RIFF INFO — «IRTD». Для тегов ID3v2 используется комбинированный ключ, содержащий идентификатор «POPM» фрейма Popularimeter и поле «Email», отделённое точкой. Таким образом, для тегов ID3v2 существуют разные ключи, например, «POPM.Windows Media Player 9 Series» для привязки, используемой приложениями Windows Media Player и Explorer, и просто «POPM» для фреймов POPM с пустым полем «Email». Так как для «POPM» может существовать несколько записей, их порядок важен. Когда Kid3 добавляет новый фрейм Popularimeter, для определения значения, которое будет записано в поле «Email», используется первая запись «POPM». Это значение затем укажет привязку, которая будет использоваться для оценки в звёздах. Первая запись также используется как запись по умолчанию в случаях, когда ключ не был найден.

  Помимо столбца Имя, содержащего ключи, в таблице представлены столбцы от 1 до 5 для значений параметров, которые будут записаны в тег, если дорожке будет назначена соответствующая оценка в звёздах. И наоборот, эти значения определяют количество звёзд, которые будут отображаться для значения, хранящегося во фрейме. Например, строка таблицы ниже содержит значения 1, 64, 128, 196, 255. Пороговые значения количества звёзд, которые будут показаны для оценок, лежащих между этими значениями, совместимы с используемыми в Windows® Explorer.

  Таблица 3.2. Запись в таблице оценок

  Имя | 1 | 2 | 3 | 4 | 5
  --- | --- | --- | --- | --- | ---
  POPM | 1 | 64 | 128 | 196 | 255
  Диапазон | 1-31 | 32-95 | 96-159 | 160-223 | 224-255

  Флажок Загружать при запуске файлы, открытые при последнем выходе, расположенный на вкладке Файлы, позволяет Kid3 при следующем запуске открывать файл, который был открыт при последнем выходе. Флажок Сохранять метки времени изменения файлов позволяет сохранять метку времени изменения файла. Поле ввода Имя файла обложки предназначено для указания имени, которое будет предложено при экспорте встроенного изображения в файл. Раскрывающийся список Кодировка текста (экспорт, список воспроизведения) позволяет указать кодировку, используемую при записи файлов. Стандартный вариант System возможно изменить, например, если списки воспроизведения будут использоваться на другом устройстве.

  Если установлен флажок Отмечать изменения, изменённые поля будут отмечены светло-серым фоном.

  Раздел Список файлов позволяет указать, какие файлы следует отображать в списке файлов. С помощью раскрывающегося списка Фильтр возможно задать отображение в списке только тех файлов, которые имеют поддерживаемые расширения. Чтобы явным образом указать, какие каталоги следует отображать или исключить в списке файлов, воспользуйтесь полями ввода Включить папки и Исключить папки. Эти поля могут содержать выражения с подстановочными знаками, например, `*/Музыка/*` для включения только каталога `Музыка` или `*/iTunes/*` для исключения каталога iTunes из списка файлов. Если необходимо использовать несколько таких выражений, их следует разделить пробелами или точками с запятой.

  Кнопки Имя файла из тега... и Тег из имени файла... в разделе Формат открывают диалоги для редактирования форматов, доступных в раскрывающихся списках Формат (со стрелками вверх и вниз), которые расположены в разделе «Файл» главного окна.

  Формат имени файла содержит параметры формата имён файлов. Доступны те же параметры, что и в разделе Формат тега.

  Вкладка Команды пользователя содержит таблицу со списком команд, доступных в контекстном меню списка файлов. Для важных действий наподобие удаления файлов рекомендуется установить флажок Подтвердить, чтобы перед выполнением команды появлялось всплывающее окно для подтверждения действия. Флажок Вывод позволяет отображать для просмотра вывод консольных команд (стандартный вывод и стандартные ошибки). В столбце Имя указано имя для отображения в контекстном меню. Столбец Команда содержит команду для выполнения. Для передачи аргументов доступны следующие коды:

  - %F %{files} Пути файлов (в виде списка, если было выбрано несколько файлов)

  - %f %{file} Путь к отдельному файлу

  - %uF %{urls} URL-адреса (в виде списка, если было выбрано несколько файлов)

  - %uf %{url} URL-адрес отдельного файла

  - %d %{directory} Каталог

  - %s %{title} Заголовок (композиции)

  - %a %{artist} Исполнитель

  - %l %{album} Альбом

  - %c %{comment} Комментарий

  - %y %{year} Год

  - %t %{track} Номер дорожки (например, 01)

  - %t %{track.n} Номер дорожки с шириной поля n (например, 001 для %{track.3})

  - %T %{tracknumber} Номер дорожки (без нулей в начале, например, 1)

  - %g %{genre} Жанр

  - %b %{browser} Команда для запуска веб-браузера

  - %q %{qmlpath} Базовый каталог предоставленных файлов QML

  Cпециальный код, @separator, возможно использовать в качестве команды, добавляющей разделитель в контекстное меню команд пользователя. Чтобы добавить пункты меню как вложенное меню, перед ними следует указать команду @beginmenu, а после них — команду @endmenu. Название меню будет определяться столбцом Имя команды @beginmenu.

  Чтобы выполнить сценарии QML, используйте @qml в качестве названия команды. Путь к сценарию QML передаётся в качестве параметра. Соответствующие сценарии расположены в каталоге `%{qmlpath}/script/` (в Linux® это обычно путь `/usr/share/kid3/qml/script/`, в Windows — `qml/script/` внутри папки установки, в macOS® — в каталоге приложения `kid3.app/Contents/Resources/qml/script/`). Пользовательские сценарии возможно хранить в любом каталоге. Если в коде QML задействованы компоненты графического интерфейса, вместо @qml следует использовать @qmlview. Дополнительные параметры передаются в сценарий QML, где они будут доступны с помощью функции `getArguments()`. Обзор некоторых функций и свойств, доступных в QML, доступен в приложении Интерфейс QML.

  Команда, которая будет вставлена вместо %{browser}, указывается в строке Веб-браузер. Команды, которые начинаются с символов %{browser}, используются для получения информации об аудиофайлах из Интернета. Например, команда

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

  проведёт поиск текста текущей песни на сайте LyricWiki. Символ «u» в %u{artist} и %u{title} означает, что это закодированная в формате URL информация об исполнителе %{artist} и песне %{title}. Таким же образом возможно указывать собственные запросы; например, поиск изображений в Google будет выглядеть следующим образом:

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

  Чтобы добавить обложку альбома в тег 2, возможно выполнить поиск изображений с помощью Google или Amazon, используя приведённые выше команды. Для добавления изображения в тег воспользуйтесь функцией перетаскивания или кнопкой Добавить; после нажатия этой кнопки следует выбрать фрейм изображения и импортировать файл изображения или вставить его из буфера обмена. Фреймы изображений поддерживаются для тегов ID3v2, MP4, FLAC, Ogg и ASF.

  Чтобы добавить или удалить записи в таблице, воспользуйтесь контекстном меню.

  На вкладке Сеть доступно только поле для вставки адреса прокси-сервера и (необязательно) порта, разделённых двоеточием. Прокси-сервер будет использоваться при импорте с интернет-сервера, если установлен соответствующий флажок.

  Вкладка Модули позволяет подключить или отключить модули. Вкладка содержит два раздела. Первый, список Модули для работы с метаданными и приоритет, содержит модули, поддерживающие форматы аудиофайлов. В этом разделе важен порядок модулей, потому что приложение использует их по списку с первой позиции до последней. Некоторые форматы поддерживаются несколькими модулями, поэтому файлы будут открыты первым модулем из списка, поддерживающим их. Модуль TaglibMetadata поддерживает большинство форматов; если этот модуль будет расположен в верхней части списка, с его помощью будет возможно открыть большое количество файлов. Если требуется использовать другой модуль, расположите его над модулем TaglibMetadata. Подробные сведения о модулях для работы с метаданными и информация о том, почему рекомендуется использовать тот или иной модуль вместо TagLib, приведены далее.

  - Id3libMetadata: использует библиотеку id3lib для тегов ID3v1.1 и ID3v2.3 в файлах MP3, MP2, AAC. Поддерживает чуть больше типов фреймов, чем TagLib.

  - OggFlacMetadata: использует libogg, libvorbis, libvorbisfile для файлов Ogg и дополнительно libFLAC++ и libFLAC для файлов FLAC. Это официальные библиотеки для этих форматов.

  - TaglibMetadata: использует библиотеку TagLib, которая поддерживает большое количество форматов аудио. Может быть использован для всех файлов, поддерживаемых Kid3.

  - Mp4v2Metadata: библиотека mp4v2 изначально использовалась в Kid3 для поддержки файлов M4A. Может быть использован, если возникают проблемы с поддержкойформата M4A модулем TagLib.

  Раздел Доступные модули отображает список остальных модулей. Их порядок в списке не важен. Эти модули подключаются и отключаются с помощью флажков.

  - AmazonImport: используется для функции Импорт из Amazon....

  - DiscogsImport: используется для функции Импорт из Discogs....

  - FreedbImport: используется для функции Импорт из gnudb.org....

  - MusicBrainzImport: используется для функции Импорт из MusicBrainz (релиз)....

  - AcoustidImport: используется для функции Импорт из MusicBrainz (отпечаток)..., работа которой зависит от библиотек Chromaprint и libav.

  Отключённые модули не будут загружены. Это позволяет оптимизировать потребление ресурсов и время запуска. Изменённые параметры этой вкладки вступят в силу только после перезапуска Kid3.

## Меню «Справка»

Справка → Руководство пользователя Kid3

  Открывает данное руководство пользователя.

Справка → О программе Kid3

  Отображает краткую информацию о Kid3.

# Глава 4. kid3-cli

## Команды

kid3-cli предоставляет интерфейс командной строки к Kid3. Если в качестве аргумента будет указан путь к каталогу, будет открыт соответствующий каталог. Если будет указан один или несколько путей к файлам, будет открыт общий каталог, а файлы будут выделены. Последующие команды будут применены к этим файлам. Команды возможно указывать с помощью параметра `-c`. Если передано несколько команд, они будут выполнены в указанном порядке. Если команды вносят изменения в файлы, эти изменения будут сохранены при выходе из приложения. Если команды не будут переданы, интерфейс kid3-cli будет запущен в интерактивном режиме. Можно будет вводить команды и работать с текущими выделенными файлами. В следующих разделах приведён список доступных команд.

### Справка

`help` [`НАЗВАНИЕ-КОМАНДЫ`]

Отображает справку о параметрах `НАЗВАНИЕ-КОМАНДЫ` или обо всех командах, если конкретная команда не указана.

### Время ожидания

`timeout` [ default | off | `ВРЕМЯ` ]

Позволяет перезаписать стандартное значение времени ожидания выполнения команды. Выполнение команд командного интерфейса будет прервано, если будет превышено указанное время ожидания. Стандартное время ожидания для команд ls и albumart — 10 секунд, для команд autoimport и filter — 60 секунд, а для остальных команд — 3 секунды. Если требуется обработать большое количество файлов, эти временные рамки могут оказаться слишком жёсткими, поэтому предусмотрена возможность установить время ожидания для всех команд в значение `ВРЕМЯ` (в миллисекундах), отключить время ожидания вообще или оставить стандартные значения.

### Выйти из приложения

`exit` [force]

Выйти из приложения. Если в приложении изменённые несохранённые файлы, требуется параметр `force`.

### Сменить каталог

`cd` [`КАТАЛОГ`]

Если не указано значение `КАТАЛОГ`, будет осуществлён переход в домашний каталог. Если значение указано, будет выполнен переход в указанный каталог. Если указан один или несколько путей к файлам, будет осуществлён переход в общий каталог, в котором хранятся эти файлы, а файлы будут выделены.

### Показать полное имя текущего каталога

`pwd`

Показать полное имя текущего рабочего каталога.

### Список каталогов

`ls`

Список содержимого текущего каталога. Соответствует списку файлов в пользовательском интерфейсе Kid3. Пять символов перед именами файлов показывают состояние файла.

- `>` Файл выбран.

- `*` Файл изменён.

- `1` Файлу присвоен тег 1, в противном случае отобразится «`-`».

- `2` Файлу присвоен тег 2, в противном случае отобразится «`-`».

- `3` Файлу присвоен тег 3, в противном случае отобразится «`-`».

    kid3-cli> ls
      1-- 01 Intro.mp3

    > 12- 02 We Only Got This One.mp3
     *1-- 03 Outro.mp3

В этом примере все файлы имеют тег 1, второй файл также имеет тег 2, и он выделен. Третий файл изменён.

### Сохранить изменённые файлы

`save`

### Выбрать файл

`select` [ all | none | first | previous | next | `ФАЙЛ`... ]

Чтобы выделить все файлы, введите команду `select all`; чтобы снять выделение со всех файлов, введите команду `select none`. Чтобы последовательно перебрать файлы в текущем каталоге, воспользуйтесь командой `select first`, затем передвигайтесь вперёд по списку с помощью команды `select next`, либо назад с помощью команды `select previous`. Чтобы добавить к текущему выделению отдельные файлы, укажите их названия напрямую. Поддерживается использование подстановочных знаков, например, возможно указать `select *.mp3` для выделения всех MP3-файлов в текущем каталоге.

    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

### Выбрать тег

`tag` [`НОМЕРА-ТЕГОВ`]

Некоторые команды имеют необязательный параметр `НОМЕРА-ТЕГОВ`, который позволяет указать, над каким тегом следует выполнять команду (1, 2 или 3). Если этот параметр не указан, будут использованы номера тегов по умолчанию, которые указываются с помощью этой команды. Сразу после запуска будет установлено значение `12`, то есть данные будут прочитаны из тега 2, если он будет обнаружен, либо из тега 1, если тег 2 обнаружен не будет; изменения будут вноситься в тег 2. Для параметра ``НОМЕРА-ТЕГОВ`` возможно указать значение `1`, `2` или `3` для работы только с соответствующим тегом. Если параметр не указан, будет отображаться текущее значение параметра номеров тегов.

### Получить фрейм тега

`get` [ all | `НАЗВАНИЕ-ФРЕЙМА` ] [`НОМЕРА-ТЕГОВ`]

Эта команда используется для чтения значения определённого фрейма тега или получения информации обо всех фреймах тега (если не указан аргумент или используется параметр `all`). Изменённые фреймы отмечены символом «`*`».

    kid3-cli> get
    Файл: MPEG 1 Layer 3 192 kbps 44100 Hz Joint Stereo
      Название: 01 Intro.mp3
    Тег 1: ID3v1.1
      Заголовок            Intro
      Исполнитель       One Hit Wonder
      Альбом                 Let's Tag
      Дата                     2013
      Номер дорожки   1
      Жанр                    Pop
    kid3-cli> get title
    Intro

Чтобы сохранить содержимое фрейма изображения в файл, воспользуйтесь командой

    get picture:'/путь/к/каталогу.jpg'

Чтобы сохранить синхронизированный текст песни в файл LRC, воспользуйтесь командой

    get SYLT:'/путь/к/тексту.lrc'

Возможно получить данные только из определённого поля фрейма, например, `get POPM.Email` для поля Email во фрейме Popularimeter. Если в файле хранится несколько фреймов одного типа, следует указать соответствующий индекс в квадратных скобках: например, название первого из исполнителей в комментарии Vorbis возможно получить с помощью команды `get performer[0]`, а второго — с помощью команды`get performer[1]`.

Псевдополе под названием «selected» позволяет проверить, выделен ли фрейм: например, команда `get artist.selected` вернёт значение `1`, если фрейм исполнителя выделен, либо `0`, если фрейм не выделен.

### Указать фрейм тега

`set` {`НАЗВАНИЕ-ФРЕЙМА`} {`ЗНАЧЕНИЕ-ФРЕЙМА`} [`НОМЕРА-ТЕГОВ`]

Эта команда позволяет указать значение определённого фрейма тега. Если параметр `ЗНАЧЕНИЕ-ФРЕЙМА` не указан, фрейм будет удалён.

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

Чтобы установить содержимое фрейма изображения из файла, воспользуйтесь командой

    set picture:'/путь/к/каталогу.jpg' 'Описание изображения'

Чтобы установить синхронизированный текст песни из файла LRC, воспользуйтесь командой

    set SYLT:'/путь/к/тексту.lrc' 'Описание текста'

Чтобы указать определённое поле внутри фрейма, следует указать название поля после точки. Например, чтобы установить значение поля счётчика фрейма Popularimeter, воспользуйтесь командой

    set POPM.Counter 5

Спецификация полей применяется в том случае, когда нужно создать пользовательский фрейм TXXX с описанием «rating» вместо стандартного фрейма Popularimeter (такой метод оценки используется некоторыми модулями). Фрейм оценки TXXX возможно создать с помощью kid3-cli, однако сначала следует создать фрейм TXXX с описанием «rating», а затем указать значение оценки для этого фрейма.

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

Первая команда удалит существующий фрейм POPM, потому что, если такой фрейм существует, параметр `set rating 5` установит значение фрейма POPM, а не TXXX. Другой способ установки значения — это использование команды `set TXXX.Text 5`, но она сработает корректно только в том случае, если нет других фреймов TXXX.

Чтобы установить несколько фреймов одинакового типа, укажите индекс в скобках; например, чтобы указать несколько исполнителей в комментарии Vorbis, воспользуйтесь командой

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

Чтобы выделить определённые фреймы перед действиями копирования, вставки или удаления, воспользуйтесь псевдополем «selected». Обычно выделены все фреймы. Чтобы снять выделение со всех фреймов, воспользуйтесь командой `set '*.selected' 0`, а затем, например, для выделения фрейма исполнителя, командой `set artist.selected 1`.

### Отменить изменения

`revert`

Отменить все изменения в выбранных файлах (или во всех файлах, если файлы не выбраны).

### Импортировать из файла

`import` {`ФАЙЛ`} {`НАЗВАНИЕ-ФОРМАТА`} [`НОМЕРА-ТЕГОВ`]

Теги будут импортированы из файла `ФАЙЛ` в формате под названием `НАЗВАНИЕ-ФОРМАТА` (например, `«CSV unquoted»`, подробные сведения доступны в описании функции «Импорт»).

Если указать `tags` для параметра `ФАЙЛ`, теги будут импортированы из других тегов. Вместо параметра `НАЗВАНИЕ-ФОРМАТА` следует указать параметры `ИСТОЧНИК` и `ИЗВЛЕЧЕНИЕ`, подробные сведения доступны в описании функции «Импорт из тегов...». Чтобы применить импорт из тегов к выделенным файлам, используйте `tagsel` вместо `tags`. Эта функция также поддерживает вывод полученного значения: укажите параметр `ИЗВЛЕЧЕНИЕ` со значением `%{__return}(.+)`.

### Автоматический импорт

`autoimport` [`ИМЯ-ПРОФИЛЯ`] [`НОМЕРА-ТЕГОВ`]

Пакетный импорт на основе профиля `НАЗВАНИЕ-ПРОФИЛЯ` (смотрите описание функции «Автоматический импорт»; если профиль не указан, используется `«All»`).

### Загрузить обложку

`albumart` {`URL-АДРЕС`} [all]

Установить обложку альбома путём загрузки изображения с адреса `URL-адрес`. Правила, определённые в диалоге «Найти обложки», используются для преобразования обычных URL-адресов (например, Amazon) в адрес изображения. Чтобы установить обложку альбома из локального файла изображения, воспользуйтесь командой set.

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

### Экспортировать в файл

`export` {`ФАЙЛ`} {`НАЗВАНИЕ-ФОРМАТА`} [`НОМЕРА-ТЕГОВ`]

Экспорт тегов в файл `ФАЙЛ` в формате под названием `НАЗВАНИЕ-ФОРМАТА` (например, `«CSV unquoted»`, смотрите описание функции «Экспорт»).

### Создать список воспроизведения

`playlist`

Создать список воспроизведения в формате, указанном в параметрах, подробные сведения доступны в описании функции «Создать список воспроизведения».

### Применить формат имени файла

`filenameformat`

Применить формат имени файла, указанный в параметрах, подробные сведения доступны в описании функции «Применить формат имени файла».

### Применить формат тега

`tagformat`

Применить формат тега, указанный в параметрах, подробные сведения доступны в описании функции «Применить формат тега».

### Применить кодировку текста

`textencoding`

Применить кодировку текста, указанную в параметрах, подробные сведения доступны в описании функции «Применить кодировку текста».

### Переименовать каталог

`renamedir` [`ФОРМАТ`] [ create | rename | dryrun ] [`НОМЕРА-ТЕГОВ`]

Переименовать или создать каталоги на основе значений в тегах в соответствии с заданным значением параметра `ФОРМАТ` (например, `%{artist} - %{album}`, подробные сведения доступны в описании функции «Переименовать каталог»). Если формат не задан, будет использован формат, указанный в диалоге Переименовать каталог. Режим по умолчанию — `rename`; для создания каталогов — `create` (следует указать явным образом). Действия по переименованию будут произведены немедленно; чтобы просто посмотреть, что должно быть сделано, воспользуйтесь опцией `dryrun`.

### Пронумеровать дорожки

`numbertracks` [`НОМЕР-ДОРОЖКИ`] [`НОМЕРА-ТЕГОВ`]

Пронумеровать выделенные дорожки, начиная с номера `НОМЕР-ДОРОЖКИ` (если параметр не указан, нумерация начнётся с цифры `1`).

### Фильтр

`filter` [ `ИМЯ-ФИЛЬТРА` | `ФОРМАТ-ФИЛЬТРА` ]

Отфильтровать файлы таким образом, чтобы отобразились только файлы, соответствующие фильтру `ФОРМАТ-ФИЛЬТРА`. Вместо выражения фильтра возможно использовать название предустановленного фильтра (например, `«Несоответствие тега названию файла»`), подробные сведения доступны в описании функции «Фильтр».

    kid3-cli> filter '%{title} contains "tro"'
    Запуск
      /home/urs/One Hit Wonder - Let's Tag
    + 01 Intro.mp3
    - 02 We Only Got This One.mp3
    + 03 Outro.mp3
    Завершено
    kid3-cli> ls
      1-- 01 Intro.mp3
      1-- 03 Outro.mp3
    kid3-cli> filter All
    Запуск
      /home/urs/One Hit Wonder - Let's Tag
    + 01 Intro.mp3
    + 02 We Only Got This One.mp3
    + 03 Outro.mp3
    Завершено
    kid3-cli> ls
      1-- 01 Intro.mp3
      12- 02 We Only Got This One.mp3
      1-- 03 Outro.mp3

### Преобразовать ID3v2.3 в ID3v2.4

`to24`

### Преобразовать ID3v2.4 в ID3v2.3

`to23`

### Имя файла из тега

`fromtag` [`ФОРМАТ`] [`НОМЕРА-ТЕГОВ`]

Указать имена выбранных файлов на основе тегов, например, `fromtag '%{track} - %{title}' 1`. Если формат не указан, будет использоваться формат, установленный в графическом интерфейсе.

### Тег из имени файла

`totag` [`ФОРМАТ`] [`НОМЕРА-ТЕГОВ`]

Установить содержание фреймов тегов на основе названий файлов, например, `totag '%{albumartist} - %{album}/%{track} %{title}' 2`. Если формат не указан, будет использован формат, установленный в графическом интерфейсе. Если формат названия файла не соответствует указанному шаблону, будет предпринята попытка использовать другие распространённые форматы.

### Тег в другой тег

`syncto` {`НОМЕР-ТЕГА`}

Копировать фреймы тега из одного тега в другой; например, чтобы заполнить тег ID3v2 данными из тега ID3v1, воспользуйтесь командой `syncto 2`.

### Копировать

`copy` [`НОМЕР-ТЕГА`]

Скопировать фреймы тега выбранного файла во внутренний буфер обмена. Команда paste позволяет установить эти фреймы в другой файл.

Чтобы скопировать только подмножество фреймов, воспользуйтесь псевдополем «selected» с командой set. Например, чтобы скопировать только фреймы номера диска и авторских прав, воспользуйтесь командой

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

### Вставить

`paste` [`НОМЕР-ТЕГА`]

Заполнить данные фреймов тегов выделенных файлов на основе содержимого буфера copy.

### Убрать

`remove` [`НОМЕР-ТЕГА`]

Удалить тег.

Возможно удалить только подмножество фреймов путём их выделения, как указано в описании команды copy.

### Настроить Kid3

`config` [`ПАРАМЕТР`] [`ЗНАЧЕНИЕ`]

Запрос или установка параметров конфигурации.

`ПАРАМЕТР` состоит из имени группы и имени свойства, разделённых точкой. Если `ПАРАМЕТР` не задан, будут отображаться все доступные группы. Если задано только имя группы, будут отображаться все доступные свойства группы. Если задана группа и свойство, будет отображаться текущее настроенное значение. Для изменения параметра возможно передать новое значение в качестве второго аргумента.

Если значение параметра представлено в виде списка, все элементы списка должны быть указаны как аргументы. Это значит, что для добавления элемента к существующему списку элементов необходимо передать все существующие элементы, указав после них новый элемент. В таком случае лучше использовать режим JSON; это позволит скопировать текущий список и добавить новый элемент.

## Примеры

Установить заголовок, содержащий апостроф. Команды с параметром `-c`, которые передаются kid3-cli, должны быть заключены в кавычки, если они состоят из нескольких слов. Если такая команда сама по себе содержит аргумент с пробелами, его тоже следует заключить в кавычки. В командных оболочках UNIX® возможно использовать одинарные или двойные кавычки, но в командной строке Windows важно использовать в качестве наружных двойные кавычки, а внутренних — одинарные. Если в тексте внутри одинарных кавычек содержатся ещё одни одинарные кавычки, их следует экранировать с помощью символа обратной косой черты, как это показано в следующем примере:

    kid3-cli -c "set title 'I\'ll be there for you'" /путь/к/каталогу

Установить обложку альбома во всех файлах каталога с помощью функции пакетного импорта:

    kid3-cli -c "autoimport 'Cover Art'" /путь/к/каталогу

Удалить фреймы комментариев и применить формат тега в обоих тегах всех MP3-файлов каталога:

    kid3-cli -c "set comment '' 1" -c "set comment '' 2" \
    -c "tagformat 1" -c "tagformat 2" /путь/к/каталогу/*.mp3

Автоматически импортировать тег 2, синхронизировать с тегом 1, установить имена файлов из тега 2 и создать список воспроизведения:

    kid3-cli -c autoimport -c "syncto 1" -c fromtag -c playlist \
      /путь/к/каталогу/*.mp3

Выполнить для всех файлов с тегом ID3v2.4.0 преобразование в тег ID3v2.3.0 и удалить фрейм аранжировщика:

    kid3-cli -c "filter 'ID3v2.4.0 Tag'" -c "select all" -c to23 \
      -c "set arranger ''" /путь/к/каталогу

В этом сценарии Python kid3-cli используется для создания фреймов iTunNORM проверки звука iTunes на основе данных о выравнивании громкости.

    #!/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

Чтобы упростить обработку результатов работы kid3-cli, рекомендуется получать вывод в формате JSON. При запросе в формате JSON ответ также будет сформирован в JSON, при этом компактный формат запроса предоставит компактный ответ. Если в запросе содержится поле «id», он будет считаться запросом JSON-RPC, и в ответе будет содержаться поле «jsonrpc» и значение «id» запроса. В формате запроса используются те же команды, что и в стандартном интерфейсе командной строки, поле «method» должно содержать команду, а параметры (если есть) будут заданы списком «params». Ответ содержит объект «result», который может быть пустым, если соответствующая команда kid3-cli не вернула никакого результата. Если произойдёт ошибка, будет возвращён объект «error» с полями «code» и «message», что стандартно для запросов 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"}

# Глава 5. Авторские права и лицензия

Kid3

Автор программы: Urs Fleisch `<ufleisch at users.sourceforge.net>`

Перевод на русский язык: Мария Шикунова `<translation-team@basealt.ru>`

Редактирование перевода: Олеся Герасименко`<translation-team@basealt.ru>`

FDL

GPL

# Приложение A. Установка

## Как получить Kid3

Приложение Kid3 доступно для загрузки на сайте https://kid3.kde.org.

## Требования

Для работы Kid3 требуется наличие библиотек Qt™. Рекомендуется использовать KDE, но это не обязательно, так как Kid3 возможно собрать как программу, которая зависит только от Qt™. Kid3 возможно собрать для систем, где доступны эти библиотеки, например, для GNU/Linux®, Windows® и macOS®. Чтобы присваивать теги файлам Ogg/Vorbis, требуются библиотеки libogg, libvorbis и libvorbisfile, для работы с файлами FLAC — libFLAC++ и libFLAC. Библиотека id3lib используется для работы с файлами MP3. Эти четыре формата также поддерживаются библиотекой TagLib, которая может обрабатывать файлы Opus, MPC, APE, MP2, Speex, TrueAudio, WavPack, WMA, WAV, AIFF и модули трекеров. Для импорта акустических отпечатков используются Chromaprint и libav.

Программа Kid3 доступна для большинства дистрибутивов Linux®, Windows® и macOS®. Ссылки для загрузки находятся на сайте https://kid3.kde.org.

## Сборка и установка

Приложение Kid3 может быть собрано с библиотеками KDE или без них. Без библиотек KDE Kid3 является простым приложением Qt™, в котором отсутствуют некоторые возможности по настройке приложения и сеансов работы с ним.

Чтобы собрать версию с библиотеками KDE, перейдите в каталог верхнего уровня и введите

    % cmake .
    % make
    % make install

Чтобы собрать нестандартную версию с использованием библиотек Qt™ или KDE, укажите соответствующие параметры `cmake`.

Если доступны не все библиотеки, программа Kid3 будет собрана с ограниченными функциональными возможностями, поэтому рекомендуется установить все необходимые пакеты перед сборкой. С другой стороны, с помощью параметров `cmake` возможно управлять перечнем библиотек, которые будут использованы при сборке. По умолчанию это: `-DWITH_TAGLIB:BOOL=ON -DWITH_MP4V2:BOOL=OFF -DWITH_ID3LIB:BOOL=ON -DWITH_CHROMAPRINT:BOOL=ON -DWITH_VORBIS:BOOL=ON -DWITH_FLAC:BOOL=ON`. Чтобы отключить эти опции, установите параметры в значение `OFF`.

Чтобы собрать Kid3 как приложение Qt™ без библиотек KDE, воспользуйтесь командой `cmake` с параметром `-DWITH_APPS=Qt`. Чтобы собрать Kid3 как приложение KDE и Qt™, укажите параметр `-DWITH_APPS="Qt;KDE"`.

Чтобы воспользоваться определённым набором установленных библиотек Qt™, укажите `-DQT_QMAKE_EXECUTABLE=/путь/к/qmake`.

Создание пакетов RPM поддерживается файлом `kid3.spec`, для пакетов Debian® доступен сценарий `build-deb.sh`.

Приложение Qt™ также возможно скомпилировать для Windows® или macOS®. Для загрузки и сборки всех необходимых библиотек и последующего создания пакета Kid3 предназначен сценарий `buildlibs.sh`.

## Настройка

В версии для KDE параметры программы будут храниться в файле `.config/kid3rc`. Если программа собрана как приложение Qt™, параметры будут храниться в файле `.config/Kid3/Kid3.conf`. В операционной системе Windows® конфигурация будет храниться в реестре, а в системе macOS® — в файле plist.

Переменная среды `KID3_CONFIG_FILE` позволяет указать путь к файлу конфигурации.

# Приложение B. Интерфейс D-Bus

## Примеры D-Bus

В системах Linux® управление Kid3 посредством сценариев доступно с помощью интерфейса D-Bus. Привязки к D-Bus позволяет создать сценарии на любом языке программирования (например, на Python). Эти сценарии затем возможно добавить в раздел Команды пользователя для расширения функциональных возможностей Kid3.

Чтобы установить значение «One Hit Wonder» в поле исполнителя в теге 2, воспользуйтесь следующим кодом:

Оболочка

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

  или, что проще, примените команду Qt™ qdbus (для изучения графического интерфейса приложения предназначена команда qdbusviewer):

      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

Программный интерфейс D-Bus определён в файле `org.kde.Kid3.xml`. В интерфейсе Kid3 предусмотрены следующие методы:

### Открытие файлов или каталогов

`boolean openDirectory(` | path`)`; |

`string path`;

`path`

  путь к файлу или каталогу

Возвращает true, если выполнено успешно.

### Выгрузка тегов всех файлов, которые не были изменены или выбраны

`unloadAllTags(` | `)`; |

### Сохранение всех изменённых файлов

`boolean save(` | `)`; |

Возвращает true, если выполнено успешно.

### Получение подробного сообщения об ошибке, предоставляемого некоторыми методами

`string getErrorMessage(` | `)`; |

Возвращает подробное сообщение об ошибке.

### Отмена изменений в выбранных файлах

`revert(` | `)`; |

### Запуск автоматического пакетного импорта

`boolean batchImport(` | tagMask, |
| profileName`)`; |

`int32 tagMask`;
`string profileName`;

`tagMask`

  маска тега (бит 0 для тега 1, бит 1 для тега 2)

`profileName`

  название профиля пакетного импорта для использования

### Импорт тегов из файла

`boolean importFromFile(` | tagMask, |
| path, |
| fmtIdx`)`; |

`int32 tagMask`;
`string path`;
`int32 fmtIdx`;

`tagMask`

  маска тега (бит 0 для тега 1, бит 1 для тега 2)

`path`

  путь к файлу

`fmtIdx`

  индекс формата

Возвращает true, если выполнено успешно.

### Импорт тегов из других тегов

`importFromTags(` | tagMask, |
| source, |
| extraction`)`; |

`int32 tagMask`;
`string source`;
`string extraction`;

`tagMask`

  маска тега (бит 0 для тега 1, бит 1 для тега 2)

`source`

  формат для получения исходного текста из тегов

`extraction`

  регулярное выражение с названиями фреймов и группами скобок для извлечения совпадений из исходного текста

### Импорт тегов из других тегов выбранных файлов

`array importFromTagsToSelection(` | tagMask, |
| source, |
| extraction`)`; |

`int32 tagMask`;
`string source`;
`string extraction`;

`tagMask`

  маска тега (бит 0 для тега 1, бит 1 для тега 2)

`source`

  формат для получения исходного текста из тегов

`extraction`

  регулярное выражение с названиями фреймов и группами скобок для извлечения совпадений из исходного текста

`returnValues`

  извлечённое значение для «%{__return}(.+)»

### Загрузка обложки альбома

`downloadAlbumArt(` | url, |
| allFilesInDir`)`; |

`string url`;
`boolean allFilesInDir`;

`url`

  URL-адрес файла изображения или источника изображения

`allFilesInDir`

  true, если изображение следует добавить во все файлы в каталоге

### Экспорт тегов в файл

`boolean exportToFile(` | tagMask, |
| path, |
| fmtIdx`)`; |

`int32 tagMask`;
`string path`;
`int32 fmtIdx`;

`tagMask`

  маска тега (бит 0 для тега 1, бит 1 для тега 2)

`path`

  путь к файлу

`fmtIdx`

  индекс формата

Возвращает true, если выполнено успешно.

### Создание нового списка воспроизведения

`boolean createPlaylist(` | `)`; |

Возвращает true, если выполнено успешно.

### Получение элементов списка воспроизведения

`array getPlaylistItems(` | path`)`; |

`string path`;

`path`

  путь к файлу списка воспроизведения

Возвращает список абсолютных путей к элементам списка воспроизведения.

### Установка элементов списка воспроизведения

`boolean setPlaylistItems(` | path, |
| items`)`; |

`string path`;
`array items`;

`path`

  путь к файлу списка воспроизведения

`items`

  список абсолютных путей к элементам списка воспроизведения

Возвращает true, если выполнено успешно, и false, если не все элементы были найдены и добавлены или сохранение завершилось ошибкой.

### Выход из приложения

`quit(` | `)`; |

### Выделение всех файлов

`selectAll(` | `)`; |

### Отмена выделения всех файлов

`deselectAll(` | `)`; |

### Установка первого файла в качестве текущего файла

`boolean firstFile(` | `)`; |

Возвращает true, если первый файл существует.

### Установка предыдущего файла в качестве текущего файла

`boolean previousFile(` | `)`; |

Возвращает true, если предыдущий файл существует.

### Установка следующего файла в качестве текущего файла

`boolean nextFile(` | `)`; |

Возвращает true, если следующий файл существует.

### Выделение первого файла

`boolean selectFirstFile(` | `)`; |

Возвращает true, если первый файл существует.

### Выделение предыдущего файла

`boolean selectPreviousFile(` | `)`; |

Возвращает true, если предыдущий файл существует.

### Выделение следующего файла

`boolean selectNextFile(` | `)`; |

Возвращает true, если следующий файл существует.

### Выделение текущего файла

`boolean selectCurrentFile(` | `)`; |

Возвращает true, если текущий файл существует.

### Разворачивание или сворачивание текущего элемента, если это каталог

`boolean expandDirectory(` | `)`; |

Пункт списка файлов является каталогом, если getFileName() возвращает название, последний символ которого — косая черта, «/».

Возвращает true, если текущий элемент — каталог.

### Применение формата имени файла

`applyFilenameFormat(` | `)`; |

### Применение формата тега

`applyTagFormat(` | `)`; |

### Применить кодировку текста

`applyTextEncoding(` | `)`; |

### Установка имени каталога из тегов

`boolean setDirNameFromTag(` | tagMask, |
| format, |
| create`)`; |

`int32 tagMask`;
`string format`;
`boolean create`;

`tagMask`

  маска тега (бит 0 для тега 1, бит 1 для тега 2)

`format`

  формат имени каталога

`create`

  true для создания, false для переименования

Возвращает true, если выполнено успешно, в противном случае воспользуйтесь командой getErrorMessage() для получения сообщения об ошибке

### Установка последовательной нумерации дорожек для выделенных файлов

`numberTracks(` | tagMask, |
| firstTrackNr`)`; |

`int32 tagMask`;
`int32 firstTrackNr`;

`tagMask`

  маска тега (бит 0 для тега 1, бит 1 для тега 2)

`firstTrackNr`

  номер, который будет использоваться для первого файла

### Фильтр файлов

`filter(` | expression`)`; |

`string expression`;

`expression`

  фильтрующее выражение

### Преобразование тегов ID3v2.3 в ID3v2.4

`convertToId3v24(` | `)`; |

### Преобразование тегов ID3v2.4 в ID3v2.3

`convertToId3v23(` | `)`; |

Возвращает true, если выполнено успешно.

### Получение пути к каталогу

`string getDirectoryName(` | `)`; |

Возвращает абсолютный путь к каталогу.

### Получение имени текущего файла

`string getFileName(` | `)`; |

Возвращает абсолютное имя текущего файла. Если это каталог, оно будет завершаться символом «/».

### Установка имени выделенного файла

`setFileName(` | name`)`; |

`string name`;

`name`

  название файла

Файл будет переименован при сохранении каталога.

### Установка формата, который будет использован при установке названий файлов на основе тегов

`setFileNameFormat(` | format`)`; |

`string format`;

`format`

  формат названия файла

### Установка названий выделенных файлов на основе тегов

`setFileNameFromTag(` | tagMask`)`; |

`int32 tagMask`;

`tagMask`

  маска тега (бит 0 для тега 1, бит 1 для тега 2)

### Получение значения фрейма

`string getFrame(` | tagMask, |
| name`)`; |

`int32 tagMask`;
`string name`;

`tagMask`

  маска тега (бит 0 для тега 1, бит 1 для тега 2)

`name`

  название фрейма (например, «artist»)

Чтобы сохранить двоичные данные (например, изображение) в файле, добавьте имя файла к имени фрейма, например: «Picture:/путь/к/файлу». Таким же образом возможно экспортировать синхронизированный текст песни, например: «SYLT:/путь/к/файлу».

Возвращает значение фрейма.

### Установка значения фрейма

`boolean setFrame(` | tagMask, |
| name, |
| value`)`; |

`int32 tagMask`;
`string name`;
`string value`;

`tagMask`

  маска тега (бит 0 для тега 1, бит 1 для тега 2)

`name`

  название фрейма (например, «artist»)

`value`

  значение фрейма

Для тега 2 (`tagMask` 2): если фрейма с указанным именем не существует, будет добавлен новый фрейм; если значение параметра «value» пустое, фрейм будет удалён. Чтобы добавить двоичные данные (например, изображение), добавьте имя файла к имени фрейма, например: «Picture:/путь/к/файлу». Таким же образом возможно импортировать синхронизированный текст песни, например: «SYLT:/путь/к/файлу».

Возвращает true, если выполнено успешно.

### Получение всех фреймов тега

`array of string getTag(` | tagMask`)`; |

`int32 tagMask`;

`tagMask`

  маска тега (бит 0 для тега 1, бит 1 для тега 2)

Возвращает список с чередующимися названиями и значениями фреймов.

### Получение технической информации о файле

`array of string getInformation(` | `)`; |

Свойствами являются Format, Bitrate, Samplerate, Channels, Duration, Channel Mode, VBR, Tag 1, Tag 2. Свойства, которые недоступны, будут пропущены.

Возвращает список с чередующимися названиями и значениями свойств.

### Установка тега на основе имени файла

`setTagFromFileName(` | tagMask`)`; |

`int32 tagMask`;

`tagMask`

  маска тега (бит 0 для тега 1, бит 1 для тега 2)

### Установка тега на основе другого тега

`setTagFromOtherTag(` | tagMask`)`; |

`int32 tagMask`;

`tagMask`

  маска тега (бит 0 для тега 1, бит 1 для тега 2)

### Копирование тега

`copyTag(` | tagMask`)`; |

`int32 tagMask`;

`tagMask`

  маска тега (бит 0 для тега 1, бит 1 для тега 2)

### Вставка тега

`pasteTag(` | tagMask`)`; |

`int32 tagMask`;

`tagMask`

  маска тега (бит 0 для тега 1, бит 1 для тега 2)

### Удаление тега

`removeTag(` | tagMask`)`; |

`int32 tagMask`;

`tagMask`

  маска тега (бит 0 для тега 1, бит 1 для тега 2)

### Повторная обработка параметров конфигурации

`reparseConfiguration(` | `)`; |

Автоматизированная обработка изменений в параметрах конфигурации доступна посредством внесения изменений в файл конфигурации с их последующей повторной обработкой.

### Воспроизведение выбранных файлов

`playAudio(` | `)`; |

# Приложение C. Интерфейс QML

## Примеры QML

Чтобы вызвать окно сценариев QML, воспользуйтесь контекстным меню списка файлов; чтобы указать список сценариев, воспользуйтесь вкладкой Команды пользователя диалога настройки. Установленные там сценарии возможно использовать в качестве примеров для создания собственных сценариев. QML использует синтаксис JavaScript. Вот пример простого сценария:

    import Kid3 1.0

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

Если этот сценарий хранится по адресу `/путь/к/Example.qml`, команду пользователя возможно определить как @qml /путь/к/Example.qml и назвать `Проверка QML`. Также следует установить флажок в столбце Вывод. Чтобы выполнить сценарий, выберите в контекстном меню списка файлов пункт Проверка QML. Вывод будет показан в окне программы.

Помимо этого, сценарий также возможно запустить независимо от Kid3 с помощью инструментов QML.

    qml -apptype widget -I /usr/lib/kid3/plugins/imports /путь/к/Example.qml

или

    qmlscene -I /usr/lib/kid3/plugins/imports /путь/к/Example.qml

В операционных системах Windows® и macOS® путь для импорта должен быть изменён таким образом, чтобы он относился к папке `imports`, расположенной в каталоге с установленной программой. Сценарии, запущенные вне Kid3, будут использовать текущий каталог, поэтому путь следует изменить заранее.

Чтобы получить список заголовков тегов 2 из всех файлов в текущем каталоге, воспользуйтесь следующим сценарием:

    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())
      }
    }

Если каталог содержит большое количество файлов, такой сценарий может на некоторое время заблокировать возможность использования интерфейса, поэтому для выполнения длительных действий следует периодически прерывать работу сценария. В альтернативном варианте, который приводится далее, обработка отдельного файла вынесена в функцию. В конце эта функция вызывает себя со временем ожидания в 1 миллисекунду, если имеются другие файлы, которые следует обработать. Такая реализация позволяет продолжать работать с графическим интерфейсом во время работы сценария.

    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()
      }
    }

При использовании команды app.firstFile() вместе с командой app.nextFile() будут обработаны все файлы в текущем каталоге. Если требуется обработка только выделенных файлов, воспользуйтесь командами firstFile() и nextFile(), вспомогательными функциями компонента `Kid3Script`. В следующем примере представлен сценарий, который копирует только фреймы номера диска и авторских прав выделенного файла.

    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()
      }
    }

Другие примеры сценариев поставляются вместе с Kid3 в качестве команд пользователя.

- ReplayGain to SoundCheck (`ReplayGain2SoundCheck.qml`): создаёт данные для iTunNORM SoundCheck на основе фреймов данных о выравнивании громкости.

- Resize Album Art (`ResizeAlbumArt.qml`): изменяет размеры встроенных изображений обложек альбомов, если эти размеры превышают 500x500 пикселов.

- Extract Album Art (`ExtractAlbumArt.qml`): извлекает все встроенные изображения обложек без создания дубликатов.

- Embed Album Art (`EmbedAlbumArt.qml`): встраивает изображение обложки альбома из файлов изображений в аудиофайлы в том же каталоге.

- Embed Lyrics (`EmbedLyrics.qml`): получает несинхронизированный текст песни из веб-сервиса.

- Text Encoding ID3v1 (`ShowTextEncodingV1.qml`): помогает определить кодировку тегов ID3v1, отображая содержание тегов в текущем файле во всех доступных кодировках.

- ID3v1 to ASCII (`Tag1ToAscii.qml`): преобразовывает все дополнительные символы латиницы в тегах ID3v1 в символы ASCII.

- English Title Case (`TitleCase.qml`): форматирует текст в тегах по правилам использования регистра символов английского языка.

- Rewrite Tags (`RewriteTags.qml`): перезаписывает все теги в выделенных файлах.

- Export CSV (`ExportCsv.qml`): рекурсивно экспортирует все теги во всех файлах в файл CSV.

- Export Playlist Folder (`ExportPlaylist.qml`): копирует все файлы из списка воспроизведения в каталог и переименовывает их в соответствии с их положением в списке.

- QML Console (`QmlConsole.qml`): вызывает простую консоль для работы с программным интерфейсом QML Kid3.

## Программный интерфейс QML

С программным интерфейсом возможно ознакомиться во время использования консоли QML, которая доступна в качестве примера сценария с пользовательским интерфейсом.

### Kid3Script

`Kid3Script` — это обычный компонент QML, расположенный в каталоге модуля. Возможно использовать и любой другой компонент QML. Использование `Kid3Script` упрощает запуск функции сценария с помощью обработчика сигналов `onRun`. Кроме того, он предлагает несколько функций:

    onRun: обработчик сигналов, который вызывается при запуске сценария
    tagv1, tagv2, tagv2v1: постоянные для параметров тегов
    script: доступ к функциям сценариев
    configs: доступ к объектам конфигурации
    getArguments(): список аргументов сценария
    isStandalone(): true, если сценарий был запущен не в Kid3
    setTimeout(callback, delay): запуск обратного вызова после задержки, указанной в миллисекундах
    firstFile(): к первому выделенному файлу
    nextFile(): к следующему выделенному файлу

### Поддержка сценариев

В JavaScript и QML предусмотрен довольно ограниченный набор функций. Объект `script` имеет несколько дополнительных методов, в частности:

    script.properties(obj): строка со свойствами Qt
    script.writeFile(filePath, data): записать данные в файл, true, если успешно
    script.readFile(filePath): прочитать данные из файла
    script.removeFile(filePath): удалить файл, true, если успешно
    script.fileExists(filePath): true, если файл существует
    script.fileIsWritable(filePath): true, если файл доступен для записи
    script.getFilePermissions(filePath): получить биты режима доступа к файлу
    script.setFilePermissions(filePath, modeBits): указать биты режима доступа к файлу
    script.classifyFile(filePath): получить класс файла (каталог — «/», символическая ссылка — «@», exe — «*»,
      файл « »)
    script.renameFile(oldName, newName): переименовать файл, true, если успешно
    script.copyFile(source, dest): скопировать файл, true, если успешно
    script.makeDir(path): создать каталог, true, если успешно
    script.removeDir(path): удалить каталог, true, если успешно
    script.tempPath(): путь к временному каталогу
    script.musicPath(): путь к каталогу с файлами музыки
    script.listDir(path, [nameFilters], [classify]): список записей в каталоге
    script.system(program, [аргументы], [миллисекунды]): синхронно запустить системную команду,
      [код выхода, стандартный вывод, стандартная ошибка], если не превышено время ожидания
    script.systemAsync(program, [аргументы], [обратный вызов]): асинхронно запустить системную
    команду, обратный вызов будет выполнен данными [код выхода, стандартный вывод, стандартная
    ошибка]
    script.getEnv(varName): получить значение переменной среды
    script.setEnv(varName, value): указать значение переменной среды
    script.getQtVersion(): строка версии Qt, например, «5.4.1»
    script.getDataMd5(data): получить шестнадцатеричную строку хеша данных MD5
    script.getDataSize(data): получить размер байтового массива
    script.dataToImage(data, [формат]): создать изображение из байтов данных
    script.dataFromImage(img, [формат]): получить байты данных из изображения
    script.loadImage(filePath): загрузить изображение из файла
    script.saveImage(img, filePath, [формат]): сохранить изображение в файл, true, если успешно
    script.imageProperties(img): получить свойства изображения, карту, содержащую значения
      «width», «height», «depth» и «colorCount», возвращает пустое значение ,если изображение недействительно
    script.scaleImage(img, width, [высота]): масштабировать изображение, возвращает масштабированное изображение

### Контекст приложений

При использовании QML доступна большая часть функциональных возможностей Kid3. Программный интерфейс похож на тот, что используется для D-Bus. Для получения более подробной информации обратитесь к соответствующим заметкам.

    app.openDirectory(path): открыть каталог
    app.unloadAllTags(): выгрузить все теги
    app.saveDirectory(): сохранить каталог
    app.revertFileModifications(): отменить
    app.importTags(tag, path, fmtIdx): импортировать файл
    app.importFromTags(tag, source, extraction): импортировать из тегов
    app.importFromTagsToSelection(tag, source, extraction): импортировать из тегов выделенных файлов
    app.downloadImage(url, allFilesInDir): загрузить изображение
    app.exportTags(tag, path, fmtIdx): экспортировать файл
    app.writePlaylist(): записать список воспроизведения
    app.getPlaylistItems(path): получить элементы списка воспроизведения
    app.setPlaylistItems(path, items): установить элементы списка воспроизведения
    app.selectAllFiles(): выделить все
    app.deselectAllFiles(): снять выделение
    app.firstFile([select], [onlyTaggedFiles]): до первого файла
    app.nextFile([select], [onlyTaggedFiles]): до следующего файла
    app.previousFile([select], [onlyTaggedFiles]): до предыдущего файла
    app.selectCurrentFile([select]): выделить текущий файл
    app.selectFile(path, [select]): выделить указанный файл
    app.getSelectedFilePaths([onlyTaggedFiles]): получить пути к выделенным файлам
    app.requestExpandFileList(): развернуть все
    app.applyFilenameFormat(): применить формат имени файла
    app.applyTagFormat(): применить формат тега
    app.applyTextEncoding(): применить кодировку текста
    app.numberTracks(nr, total, tag, [options]): пронумеровать дорожки
    app.applyFilter(expr): отфильтровать
    app.convertToId3v23(): преобразовать ID3v2.4.0 в ID3v2.3.0
    app.convertToId3v24(): преобразовать ID3v2.3.0 в ID3v2.4.0
    app.getFilenameFromTags(tag): получить имя файла из тегов
    app.getTagsFromFilename(tag): получить теги из имени файла
    app.getAllFrames(tag): получить объект со всеми фреймами
    app.getFrame(tag, name): получить фрейм
    app.setFrame(tag, name, value): установить фрейм
    app.getPictureData(): получить данные из фрейма изображения
    app.setPictureData(data): указать данные во фрейме изображения
    app.copyToOtherTag(tag): скопировать данные тегов в другие теги
    app.copyTags(tag): копировать
    app.pasteTags(tag): вставить
    app.removeTags(tag): удалить
    app.playAudio(): воспроизвести
    app.readConfig(): прочитать конфигурацию
    app.applyChangedConfiguration(): применить конфигурацию
    app.dirName: имя каталога
    app.selectionInfo.fileName: имя файла
    app.selectionInfo.filePath: абсолютный путь к файлу
    app.selectionInfo.detailInfo: описание формата
    app.selectionInfo.tag(Frame.Tag_1).tagFormat: формат тега 1
    app.selectionInfo.tag(Frame.Tag_2).tagFormat: формат тега 2
    app.selectionInfo.formatString(tag, format): заменить коды в строке формата
    app.selectFileName(caption, dir, filter, saveFile): открыть диалоговое окно для
    выбора файла
    app.selectDirName(caption, dir): открыть диалоговое окно для выбора каталога

Для асинхронных действий обратные вызовы возможно связывать с сигналами.

    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)
    }

### Объекты конфигурации

Доступ к различным разделам конфигурации обеспечивается с помощью методов `configs`. Список их свойств возможно просмотреть с помощью консоли QML.

    script.properties(configs.networkConfig())

Могут быть установлены такие свойства:

    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()