Содержание
Чтобы вызвать окно сценариев 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.