AppleScript: Як додати мета-дані m4a за допомогою Sound Studio?


3

Я хотів би автоматизувати додавання метаданих до різних .m4a файлів за допомогою Звукова студія . У мене є скрипт Python, який запускатиметься через всі файли, які мені подобаються, і передавати корисні дані AppleScript, які можуть фактично маніпулювати метаданими. Але я не впевнений, що найкращий спосіб насправді робити маніпулювання метаданими в AppleScript.

Я можу отримати всі метадані в сценарій AppleScript, передавши елементи в сценарій за допомогою аргументів, але я не знаю, як відкрити файл і встановити елементи метаданих, які я хочу встановити. Схоже, що це має бути легким, але всі спроби, які я досі робив, провалилися. Я впевнений, що я не розумію правильного шляху до проблеми. Я до сих пір:

on run argv
    -- Arguments:
    --  1   music_file_path   full path to the file to open
    --  2   artist               name of artist
    --   3   album_name    name of the album
    --    4   track_name         just the name of the track
    --    5   disc_number        which disc (1, 2 ...)
    --    6   track_number      which track on the disc
    --    7   release_year       the year when the track was released

    if (count of argv's items) ≠ 7 then
        display dialog "Wrong number of arguments!" with title "Add Meta Data To Sound Studio File" buttons {"Bummer"} giving up after 1
        return
    end if

    set music_file_path to item 1 of argv
    set artist_name to item 2 of argv
    set album_name to item 3 of argv
    set track_name to item 4 of argv
    set disc_number to item 5 of argv
    set track_number to item 6 of argv
    set release_year to item 7 of argv


    tell application "Finder"
        launch "/Applications/Sound Studio/Sound Studio.app"
    end tell -- Finder

    tell application "Sound Studio"
        activate
        set mfp to (a reference to POSIX file music_file_path)
        open mfp
        -- Set open'ed file's meta data to what we want
        save
        close
    end tell -- Sound Studio.app
end run

Будь-які ідеї про те, як це зробити?


Я залишаю коментар замість відповіді, тому що я не можу нічого перевірити, враховуючи, що у мене немає Звукова студія . По-перше, позбутися від tell application "Finder" блок. Це не робить нічого корисного. Запуск Звукова студія піклується про activate в наступному блоці. По-друге, чи є підстави для використання a reference to використовувати шлях до файлу? Якщо ні, ви можете взяти його. open команди в інших програмах зазвичай вимагають alias клас файлу об'єкта. Щоб зробити шлях до файлу alias об'єкт, спробуйте це: set mfp to POSIX file music_file_path as alias. ➦
CJK

To Найкраще робити це поза будь-якої програми tell блок, хоча в даному випадку це не має значення, якщо ви не збираєтеся використовувати mfp в будь-якій іншій програмі tell блок. Що стосується встановлення метаданих, слід почати з читання Звукова студія Словник AppleScript : зробити це, коли в Редактор сценаріїв , натисніть ⌘⇧L, щоб відкрити вікно Бібліотека вікна. В Finder , перетягніть Sound Studio.app значок програми на Бібліотека вікно Редактор сценаріїв . Потім двічі клацніть значок "Sound Studio" запис, який буде додано до списку доступних словників.
CJK

Я знайомий зі словником Apple Studio AppleScript. Те, що я не розумію, це те, як отримати вікно в Sound Studio насправді до OPEN. Я спробував пропозицію set map to POSIX file music_file_path as alias, після чого open mfp, але вікно насправді не відкривається. Якщо хтось міг би надати зразок коду про те, як можна відкрити документ, який відкрив би вікно, і як можна було б встановити будь-який фрагмент метаданих, тоді я уявляю save ("так", як опцію примусового збереження без примусового запрошення), і close mfp, якщо буде дуже цінуватися.
Bill G

Відповіді:


0

Я завантажив останню пробну версію Звукова студія та мав ідуть. Справжній словник AppleScript. За винятком open Команда, вся інша інформація, необхідна для складання сценарію, надходила з документації всередині Редактор сценаріїв .

Відсутність запису для open команда трохи таємнича, і я по електронній пошті їх про це. Я також помітив "помилку" (?) В програмному забезпеченні таким чином, на який вона відповідає open, хоча технічно не можна класифікувати як помилку, оскільки вона не є документально підтвердженою. Однак, єдина команда, яка буде використана для відкриття файлів і створення нових документів, буде такою make команду, але, зігравши з цим, я досить впевнений, що open це правильна команда для використання, і вони просто не змогли належним чином задокументувати її, в той же час не звертаючи уваги на її випадкову поведінку.

Так чи інакше, ось сценарій, у якому дані про тестові файли займуть місце, яке буде надіслано до сценарію з вашого скрипта Python:

    # Script:   Add Metadata To Sound Studio File.applescript
    # Author:   CJK
    # Date:     2018-03-20
    #-------------------------------------------------------------------------------
    # @arguments:
    #       %argv%      an indexed list containing 7 items:
    #  
    #           1) full path to the file to open
    #           2) name of artist
    #           3) name of the album
    #           4) just the name of the track
    #           5) which disc (1, 2 ...)
    #           6) which track on the disc
    #           7) the year when the track was released
    #-------------------------------------------------------------------------------
    set argv to [¬
        "/Users/CK/Music/Nelly Furtado/Folklore/04 Try.m4a", ¬
        "Nelly Furtado", ¬
        "Folklore", ¬
        "Try", ¬
        "1", ¬
        "4", ¬
        "2003"] -- remove this variable declaration

    # on run argv -- uncomment this handler

        if (count argv) is not 7 then return display dialog ¬
            "Wrong number of arguments!" with title ¬
            "Add Metadata To Sound Studio File" buttons ¬
            {"Bummer"} giving up after 1


        tell application "Sound Studio"
            activate

            set music_file_path to the first item of argv

            set D to open (music_file_path as POSIX file)

            tell the metadata of D to set [¬
                artist, ¬
                album, ¬
                title, ¬
                disc number, ¬
                track number, ¬
                year] to the rest of argv

            save D
            close D

            --quit
        end tell

    # end run -- uncomment this line
    #----------------------------------------------------------------------------END

Немає величезної кількості сказати про сценарій: він відкривається Звукова студія Відкриває аудіофайл, призначає деякі значення властивостям метаданих, зберігає файл, а потім закриває файл. За бажанням, ви також можете вийти з програми.

Що стосується відкриття аудіофайлу, Звукова студія здається, зміст буде надано a POSIX file посилання, а не змушувати його до alias клас. Проте я помітив кілька диваків:

To ・ Коли я спробував визначити змінну music_file_path поза межами tell block, він поводився так, як ви згадували і просто не відкривали файл, але і не повертали помилку. Сценарій зупинився, поки він не закінчився.

Didn't ・ express POSIX file music_file_path, тому мені довелося написати це як music_file_path as POSIX file. Знову ж таки, це заклинило б сценарій, а не скаржився, що посилання на файл було неправильним.

Corre ・ Якщо я виправив обидва ці питання і спробував запустити скрипт відразу після того, як попередній запуск застопорився, сценарій знову завис. Тому мені довелося вбити Звукова студія процес від Термінал шляхом видачі killall "Sound Studio". Потім, коли я запустив скрипт, він працював досить щасливо, і продовжував працювати щасливо з кожним наступним запуском після запуску. Коли я знову зібрався з сценарієм, щоб навмисно викликати стійло, не дивно, що мені знову довелося повернутися Термінал зробити killall.

Тому я вважаю, що можна з упевненістю сказати, що це проблема Звукова студія а не з сценарієм. Я по електронній пошті їх про це, але я думаю, ви не були б помилкою, щоб надіслати їм також: чим більше повідомлень вони отримують від незадоволених клієнтів, які хочуть, щоб технологія AppleScripting була належним чином реалізована і підтримувана, тим більше стимулів вони будуть зробити це.

Я вирішив поставити в AppleScript слово для того, щоб він видавав власну команду оболонки, коли він виявив, що програма зупинила спробу відкрити файл. AppleScript може зробити killall, але це не сиділо дуже добре зі мною з якоїсь причини. The Звукова студія самої програми ні стійло, і продовжував працювати під час тестування.

Якщо ви робити хочете, щоб я помістив якийсь блок у сценарії, щоб обробляти будь-які випадки, де він може затримуватися, дайте мені знати, і я можу додати редагування. Але це не було б те, що я б назвав "чистим кодом вирізання", і до тих пір, поки ви не намагаєтеся змінити, як і де посилання файлу оголошено в сценарії, він повинен працювати нормально.


Це робить трюк! The tell the metadata of D to set [] to [] це було те, що я не знав, як робити, отже, причина, чому я не заповнював там специфічний код. Ніколи б не здогадалися tell … це був спосіб досягти цього. AppleScript - це COBOL нашого часу. Там, здається, деякі quirkiness WRT Sound Studio, з точки зору відсутності документації для open і незрозуміла поведінка зриву. Можна також очікувати, що відкриті дозволи за умовчанням будуть лише для читання / запису. Я також надсилатиму їх електронною поштою про ці химерні речі. Ще раз спасибі за допомогу!
Bill G

Ну ... ЗНАЧИМО робить свою справу. Налагодження скрипту трохи більше (відладчик скриптів Late Night SW [ latenightsw.com] (що є дивним), здається, вказує на те, що метадані для "номера диска", "загальна кількість дисків", "номер доріжки" та "загальна кількість доріжок" виникають проблеми (помилка -10000), проблема програми Sound Studio. Я припускаю, що будь-яка наступна спроба встановити ці значення (мовчки) не вдасться. Моя наступна спроба закрити та зберегти файл також (вперто, мовчки) також не працює. Я маю електронну пошту до людей Студії Звуку постаратися та фігура це.
Bill G

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.