
Зміст
Скрипти 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.