С программным интерфейсом возможно ознакомиться во время использования консоли QML, которая доступна в качестве примера сценария с пользовательским интерфейсом.
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()