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