2013-10-04 3 views
1

Запросить помощь при усечении/обрезке строки в действии автомата, используемого для создания текстовых аудиофайлов с текстовым выбором от 30 или более символов до 800+, что тоже для имени файла.Работа с автоматическими переменными «Run Applescript»

Короче говоря, я пытаюсь обрезать строку до 30 символов и передать ее в качестве файла «Текст в аудиофайл».

Basic Последовательность действий:

Выберите текст Инициировать следующие Automator Action с помощью меню Услуги

  1. «Установить значение переменной» для ввода (например, выбранный текст) и определяют как TextToSpeech
  2. «Установить Значение переменной "для ввода (например, выделенный текст) и определить как имя_файла
  3. « Получить значение переменной »FileName
  4. "Выполнить AppleScript"

    on run {input, parameters} 
        set theResult to input as string 
        set finalResult to input as string 
        set txtLength to (length of theResult) 
        if txtLength > 30 then 
         set finalResult to (characters 1 thru 30 of theResult) as string 
        end if 
        return finalResult 
    end run 
    
  5. "Установить значение переменной" входа (например, выбранный текст) и определяют как FileName

  6. "Получить значение переменной" TextToSpeech
  7. "Текст аудиофайл" с Save As: установите "FileName"
  8. "Кодировать в MPEG Audio"

Любая помощь/предложения приветствуются!

С уважением,

Zephyr

+0

В дополнение к неуверенности, если Applescript на шаге 4 является ошибкой, я не могу найти никакой четкой информации о том, как переменные передаются в/из действия «Запустить Applescript» и оттуда через остальные действия. –

ответ

3

В общем, вы перейти от AppleScript к следующему действию все, что требует применения «возвращение» команда в конце кода. В вашем случае, хотя действие автомата «Текст в аудиофайл» не принимает переменную fileName, поэтому, если вам нужен такой контроль, вам нужен другой метод. К счастью, что действие automator можно легко заменить в коде applescript простой командой «say».

Итак, создайте службу автомата и получите выделенный текст. Затем добавьте действие applescript и используйте в качестве кода следующее. Затем добавьте действие «Кодирование в MPEG аудио».

Для кода applescript просто измените переменные voiceName и saveFolder со значениями по вашему выбору. Путь saveFolder должен заканчиваться двоеточием (:). Обратите внимание, что я использую 26 вместо 30, потому что мы добавляем «.aif» в конец имени файла ..., чтобы получить в общей сложности 30 символов.

on run {input, parameters} 
    set voiceName to "Jill" 
    set saveFolder to path to desktop as text 

    set selectedText to item 1 of input 
    if (length of selectedText) > 26 then 
     set fileName to text 1 thru 26 of selectedText 
    else 
     set fileName to selectedText 
    end if 
    set fileName to fileName & ".aif" 
    set filePath to saveFolder & fileName 

    say selectedText using voiceName saving to file filePath 

    return {POSIX path of filePath} 
end run 

Если вам нужно определить ваш saveFolder, используйте это, чтобы получить путь. Запустите этот код и скопируйте/вставьте результат в переменную saveFolder выше.

(choose folder) as text 
+0

Большое спасибо за помощь. Сочетание ваших советов и моих проб и ошибок заставил его работать. Бесконечно благодарен! –

+0

Опубликуйте решение, как только сможете отредактировать/опубликовать его правильно. –

0

Вот что работал:

Выберите текст

Инициировать следующие Automator Action с помощью меню Услуги

"Установить значение переменной" для ввода (например, выбранный текст) и определяют как TextToSpeech

«Запуск AppleScript»

on run {input, parameters} 
    set theResult to input as string 
    set finalResult to input as string 
    set txtLength to (length of theResult) 
    if txtLength > 50 then 
     set finalResult to characters 1 thru 50 of theResult as string 
    end if 
    return finalResult as string 
end run 

Вход "Установленное значение переменной" (например, выбранный текст) и определяют как FileName

«Получить значение переменной» TextToSpeech и игнорировать ввод Это действие в

«Текст аудиофайл» с Save As: установите «FileName» и сохранить как местоположение.

«Кодировать в MPEG Audio»

Результат: звуковой файл выделенного текста произнесенного нужного голоса с именем файла, установленного на первые 50 символов выделенного текста.

(я увеличил персонаж, чтобы уменьшить количество повторяющихся имен файлов я получал как часть моей работы.)

@ regulus6633: ваш ответ является более компактным и элегантным, но мне нужно, чтобы узнать больше о как applescript получает свои входы и возвращает результаты. Еще раз спасибо.

Смежные вопросы