首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Automator“”变量

使用Automator“”变量
EN

Stack Overflow用户
提问于 2013-10-04 23:21:04
回答 2查看 15.7K关注 0票数 2

请求帮助截断/修剪自动程序操作中的字符串,该操作用于从从30个左右字符到800+的文本选择创建文本到语音音频文件,这对于文件名来说太长了。

简而言之,我试图将一个字符串截断为30个字符,并将其作为文件名传递到“”操作。

基本工作流程是:

通过“服务”菜单选择“文本启动”之后的“自动操作”

  1. 将变量的值设置为输入(例如选定的文本)并将其定义为TextToSpeech
  2. 将变量的值设置为输入(例如选定的文本)并将其定义为FileName
  3. “获取变量的值”FileName
  4. “运行AppleScript” 在运行{input时,参数}将theResult设置为输入为字符串设置为finalResult,将txtLength作为字符串设置为(theResult的长度),如果txtLength > 30,则将finalResult设置为(theResult的字符1到30 )为字符串结束,如果返回finalResult结束运行
  5. “设置变量值”输入(例如选定文本)并将其定义为FileName
  6. “获取变量的值”TextToSpeech
  7. “文本到音频文件”,另存为:设置为"FileName“
  8. “MPEG音频编码”

我们非常感谢您的任何帮助和建议!

致以敬意,

泽菲尔

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-05 09:32:32

通常,您可以使用代码末尾的“返回”命令将applescript传递到下一个操作,这是它所需要的。但是,在您的情况下,automator操作“”不接受fileName变量,所以如果您想要这么多的控制,就需要另一种方法。幸运的是,automator操作在applescript代码中可以很容易地用一个简单的"say“命令替换。

因此,创建您的automator服务并接收所选文本。然后添加一个applescript操作,并使用以下代码。然后添加一个“编码到MPEG音频”动作。

对于applescript代码,只需使用您选择的值修改voiceName和saveFolder变量即可。saveFolder路径必须以冒号(:)结尾。注意,我使用的是26而不是30,因为我们在文件名的末尾添加了".aif“.总共有30个字符。

代码语言:javascript
复制
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变量中。

代码语言:javascript
复制
(choose folder) as text
票数 3
EN

Stack Overflow用户

发布于 2013-10-06 15:10:07

以下是起作用的原因:

选择文本

通过“服务”菜单启动以下自动操作

将变量的值设置为输入(例如选定的文本)并将其定义为TextToSpeech

“运行AppleScript”

代码语言:javascript
复制
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 忽略此操作的输入

“文本到音频文件”与保存为:设置为"FileName“和保存为位置集。

“MPEG音频编码”

结果:所选文本的音频文件,其文件名设置为所选文本的前50个字符。

(我增加了字符,以减少我在工作流程中获得的重复文件名的数量。)

@Regus6633:您的答案更简洁、更优雅,但我需要更多了解applescript如何获取它的输入并返回它的结果。再次感谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19192197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档