使用Automator中的数组变量作为文件名输入

埃德

我正在尝试创建一个工作流,该工作流使用Instapaper将URL列表转换为纯文本,然后将文本保存在计算机上的文本文档中。

到目前为止,我已经能够获取URL列表,获取每个网页的标题并将URL转换为纯文本。

我将标题列表保存在变量“ Article Titles”中。然后,将每篇文章的纯文本从“从网页获取文本”传递到“新文本文件”

我尝试将“文章标题”变量放入“新文本文件”操作的“另存为”输入中,但是没有生成任何文件(与我在“另存为”字段中简单地输入通用标题时不同。但是,所有生成的文件是相同的名字)。我怀疑我不能使用包含数组的变量作为另存为输入。但我希望每个新文件都有其各自的名称。

如何在标题数组上进行迭代操作,以便将“从网页获取文本”中的每个纯文本项与“文章标题”变量中的标题一起保存?

马克亨特

使许多人感到沮丧的一件事是,您想将多个变量传递给一个动作时遇到的问题。有多种解决方法,例如保存到外部脚本。

但是在这种情况下,一个简单的Applescript加上脚本@adayzdone所提供的功能,将为您带来我认为想要的东西。

您只需要将URL列表传递给此“运行Applescript”

  on run {input, parameters}
    set docPath to POSIX path of (path to documents folder)

    repeat with i from 1 to count of items of input
        set this_item to item i of input
        set thePage to (do shell script "curl " & quoted form of this_item)
        set theTitle to docPath & "/" & (do shell script "echo " & quoted form of thePage & " | grep -o \\<title\\>.*\\</title\\> | sed -E 's/<\\/?title>//g'")
        set t_text to (do shell script "echo " & quoted form of thePage & "|textutil -format html -convert txt -stdin -output \"" & theTitle & ".txt\"")

    end repeat

end run

在此处输入图片说明


**更新以将文本传递给下一个动作**


这将传递来自所有URL的文本内容列表。

它仍然会执行上述操作,但是现在会将所有URL的文本内容列表传递给下一个操作。

我已经使用“文字转语音”对其进行了测试,它可以读取多个文字内容。

on run {input, parameters}
    set docPath to POSIX path of (path to documents folder)
    set bigList to {}
    repeat with i from 1 to count of items of input
        set this_item to item i of input
        set thePage to (do shell script "curl " & quoted form of this_item)
        set theTitle to docPath & "/" & (do shell script "echo " & quoted form of thePage & " | grep -o \\<title\\>.*\\</title\\> | sed -E 's/<\\/?title>//g'")
        set t_text to (do shell script "echo " & quoted form of thePage & "|textutil -format html -convert txt -stdin -output \"" & theTitle & ".txt\"")
        set t_text_for_action to (do shell script "echo " & quoted form of thePage & "|textutil -format html -convert txt -stdin -stdout")
        copy t_text_for_action to end of bigList
    end repeat
    return bigList --> text list can now be passed to the next action
end run

如果您想测试:我可以建议一个页面上带有少量文本的页面,例如:http : //www.javascripter.net/


更新2-使用unix命令“ say”将文本保存到音频文件中。

好的,这里有几件事。

1,由于同样的原因,我在前面的代码中将所有内容都保存在一个脚本中。我在这里做了同样的事情。例如,即使不是不可能,将文本对象和标题一起传递给下一个动作也是一件很痛苦的事情。

2,脚本使用unix命令及其输出选项将文本另存为aiff文件。它还通过标题为文件命名。

3,我遇到一个问题,而不是保存文件,而是开始讲文本。??? 事实证明,我在(http://www.javascripter.net上测试的URL的标题标签带有大写字母。因此脚本的@adayzdone grepsed部分返回“”。哪个抛出了say命令。

我通过grep命令中使用-i(忽略大小写)选项并使用“ |”来解决此问题。sed中的(或)选项并添加表达式的大写形式。

4,返回的标题中还包含其他字符,由于未添加扩展名,因此会导致文件被系统另存为可识别文件的问题。

这是由一个简单的处理程序修复的,该处理程序返回带有允许字符的标题文本。

6,

有用。

on run {input, parameters}
    set docPath to POSIX path of (path to documents folder)
    repeat with i from 1 to count of items of input
        set this_item to item i of input
        set thePage to (do shell script "curl -A \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30\" " & quoted form of this_item)
        set theTitle to replaceBadChars((do shell script "echo " & quoted form of thePage & " | grep -io \\<title\\>.*\\</title\\> | sed -E 's/<\\/?title>|<\\/?TITLE>//g'"))
        set t_text_for_action to (do shell script "echo " & quoted form of thePage & "|textutil -format html -convert txt -stdin -stdout")
        do shell script "cd  " & quoted form of docPath & " ;say -o  \"" & theTitle & "\" , " & quoted form of t_text_for_action
    end repeat
end run

on replaceBadChars(TEXT_)
    log TEXT_
    set OkChars to {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "_", space}
    set TEXT_ to characters of TEXT_
    repeat with i from 1 to count of items in TEXT_
        set this_char to item i of TEXT_
        if this_char is not in OkChars then
            set item i of TEXT_ to "_"
        else

        end if
    end repeat
    set TEXT_ to TEXT_ as string

    do shell script " echo " & quoted form of TEXT_
end replaceBadChars

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Automator中的数组变量作为文件名输入

来自分类Dev

使用变量作为文件名并以bash写入文件

来自分类Dev

在Gulp中使用变量作为目标文件名?

来自分类Dev

np.savetxt-使用变量作为文件名

来自分类Dev

使用变量作为文件名在 php 中不起作用

来自分类Dev

水壶勺-文件名输入中的变量

来自分类Dev

GNUplot输入文件名作为变量

来自分类Dev

多个输入文件名作为 R 中的输出文件名

来自分类Dev

使用Mac Automator按文件名合并pdf

来自分类Dev

Automator:在“运行JavaScript”操作中使用传递的文件名

来自分类Dev

使用Automator在网络上搜索文件名

来自分类Dev

从 python 脚本中获取一个变量作为文件名并在批处理脚本中使用它

来自分类Dev

使用 javascript 变量作为文件名以使用 href 下载文件

来自分类Dev

如何使用sed写入存储在变量中的文件名?

来自分类Dev

将目录中的所有文件作为名为要加载的文件名的变量加载?

来自分类Dev

如何使用文件名作为变量

来自分类Dev

Matlab:使用文件名作为变量

来自分类Dev

如何使用循环语句使用作为输入传递给Shell脚本的文件名?

来自分类Dev

使用shell比较数组中的文件名

来自分类Dev

将data.frame写入CSV文件,并使用变量名称作为文件名

来自分类Dev

使用“ CON”作为文件名

来自分类Dev

使用“ CON”作为文件名

来自分类Dev

使用日期作为文件名并输出为数组来查找文件范围

来自分类Dev

验证Powershell中输入的文件名

来自分类Dev

截断的浮点数作为bash中的变量文件名

来自分类Dev

用户定义的变量作为CSV数据集配置元素中的文件名

来自分类Dev

引用包含引号的文件名并在 Bash 中作为变量给出

来自分类Dev

将文件名前缀传递给程序作为输入

来自分类Dev

在输入文件名后附加单词作为输出文件名

Related 相关文章

  1. 1

    使用Automator中的数组变量作为文件名输入

  2. 2

    使用变量作为文件名并以bash写入文件

  3. 3

    在Gulp中使用变量作为目标文件名?

  4. 4

    np.savetxt-使用变量作为文件名

  5. 5

    使用变量作为文件名在 php 中不起作用

  6. 6

    水壶勺-文件名输入中的变量

  7. 7

    GNUplot输入文件名作为变量

  8. 8

    多个输入文件名作为 R 中的输出文件名

  9. 9

    使用Mac Automator按文件名合并pdf

  10. 10

    Automator:在“运行JavaScript”操作中使用传递的文件名

  11. 11

    使用Automator在网络上搜索文件名

  12. 12

    从 python 脚本中获取一个变量作为文件名并在批处理脚本中使用它

  13. 13

    使用 javascript 变量作为文件名以使用 href 下载文件

  14. 14

    如何使用sed写入存储在变量中的文件名?

  15. 15

    将目录中的所有文件作为名为要加载的文件名的变量加载?

  16. 16

    如何使用文件名作为变量

  17. 17

    Matlab:使用文件名作为变量

  18. 18

    如何使用循环语句使用作为输入传递给Shell脚本的文件名?

  19. 19

    使用shell比较数组中的文件名

  20. 20

    将data.frame写入CSV文件,并使用变量名称作为文件名

  21. 21

    使用“ CON”作为文件名

  22. 22

    使用“ CON”作为文件名

  23. 23

    使用日期作为文件名并输出为数组来查找文件范围

  24. 24

    验证Powershell中输入的文件名

  25. 25

    截断的浮点数作为bash中的变量文件名

  26. 26

    用户定义的变量作为CSV数据集配置元素中的文件名

  27. 27

    引用包含引号的文件名并在 Bash 中作为变量给出

  28. 28

    将文件名前缀传递给程序作为输入

  29. 29

    在输入文件名后附加单词作为输出文件名

热门标签

归档