Зміст
Скрипти 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 у контекстному меню списку файлів. Виведені скриптом дані буде показано у вікні програми.
На жаль, запуск скриптів QML за допомогою qml (наприклад, qml -apptype widget -I /usr/lib/kid3/plugins/imports /шлях/до/Example.qml) став неможливим у свіжих версіях Qt. Втім, kid3-cli пропонує інший спосіб запуску скриптів QML з командного рядка за допомогою власної команди execute.
kid3-cli -c "execute @qml /шлях/до/Example.qml"
Щоб отримати список заголовків у мітках 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): форматує текст у мітках за правилами використання регістру символів англійської мови.Перезаписати мітки (
RewriteTags.qml): Перезаписати мітки в усіх позначених файлах.Export CSV (
ExportCsv.qml): рекурсивно експортує усі мітки в усіх файлах до файла CSV.Import CSV (
ImportCsv.qml): імпортувати рекурсивно усі мітки усіх файлів з файла CSV.Export JSON (
ExportJson.qml): експортувати рекурсивно усіх мітки усіх файлів до файла JSON.Import JSON (
ImportJson.qml): імпортувати рекурсивно усі мітки усіх файлів з файла JSON.Export Playlist Folder (
ExportPlaylist.qml): копіює усі файли зі списку відтворення до теки і перейменовує їх відповідно до їхньої позиції у списку.Консоль QML (
QmlConsole.qml): проста консоль для вправляння із програмним інтерфейсом QML Kid3.