分享

【Mac技术组】Automator WorkFlow: 扩展右键菜单

 天蝎的天空 2015-11-17
 本帖最后由 orseaping 于 2014-10-1 15:58 编辑

一、前(废)言(话)
        Automator是我最喜欢的OS X预装程序之一,能轻松以简单的拖拽创建一个工作流程(WorkFlow),也能用AppleScript和终端Shell辅助完成操作。这篇帖子主要分享我最近写的一些Automator工作流程,包括我前几天在帖子回复中提供的流程,以及经过大幅改写的已发布流程也会在这里介绍。封釉们不必关心这是怎么实现的。
        同时我也必须感谢Apple Community上的菊苣提供的帮助。在bug问题上,大部分错误的操作和非法输入都能被过滤掉,并自动更正。同时也建议用本帖中新版本的流程替换老版本。当然如果封釉发现有什么bug,还请在楼下回复,并注明是什么流程与怎么做才能重现这个bug,有时间我会修复的。
        另外,Automator流程不管以什么形式发布(包括.app应用程序),你都能直接拖入Automator.app查看脚本源代码。我的流程基本上都是以单个“执行AppleScript”操作再嵌入shell完成的,欢迎有兴趣的封釉改进这些流程。
        前言就到这里,接下来就是右键菜单的基本常识和设置,以及帖子中的Automator流程的分享与操作说明.
二、右键菜单更改与快捷键
      写在前面:对于触控板,右键指的是:双指单击。
        ①当我们的Mac一买来,苹果就已经写好了非常多的实用流程,并已经添加到了右键菜单中。并且许多第三方程序也会在安装后往右键增加很多功能,最终导致我们的右键菜单很臃肿。关闭根本没用的项目,只要如图所示,打开系统偏好设置--键盘--快捷键--服务,将不需要的右键菜单项目禁用。

        ②如果你想卸载一些用户自定义的右键菜单服务项(不仅仅禁用),那么你可以右键Finder--前往文件夹,前往路径~/library/Services,将不必要的右键菜单流程删除即可(不会留下其他垃圾)。如果你只是觉得右键菜单中服务项的名字不好听,只要重命名这个路径下的文件,在右键菜单中也会更新(不会立即生效)。

        ③安装右键菜单服务流程也非常简单,你只要双击服务流程文件--安装即可。另外一提,你也可以Automator打开并编辑源代码。

三、文本右键服务菜单
          苹果会根据右键对象的不同,提供不同的右键菜单,文本右键菜单就是当你用鼠标选中文字后点击右键出现的菜单。接下来就来分享一些我专门为实用性和偷懒写的几个流程。
       ①【用"Google"/"百度"/"淘宝"搜索】:总所周知,苹果有一个很人性化的地方是根据你设置的默认搜索引擎在整个系统范围内的右键菜单上加上了“用'百度'搜索”,这样,我们每次选中文字就能直接打开默认浏览器搜索了。但是,如果想同时在右键菜单中拥有“百度”和“Google”两个搜索引擎怎么办?这个流程就是为了解决这个问题而生完全和原有的快捷搜索一样的用法,并且也同样使用默认浏览器打开。

        当然,你可以用Automator打开我的流程,编辑搜索引擎的网址,你甚至能得到“在亚马逊搜索选中商品”、“在淘宝搜索选中商品”,个人觉得这是一个非常实用的流程这里提供“用‘百度’搜索”“用‘Google’搜索”和“在'淘宝'搜索”三个常用的流程:
用"Google"搜索: 用“Google”搜索.zip (65.32 KB, 下载次数: 4722)
用"百度"搜索: 用“百度”搜索.zip (65.21 KB, 下载次数: 5803)
在“淘宝”搜索: 在“淘宝”搜索.workflow.rar (64.08 KB, 下载次数: 1472)
         设置lrc歌词延时:平移lrc歌词时间轴的流程。不管歌词在哪里,你只要全选歌词,就能对其进行延迟操作,延迟完成后会有通知中心提醒,因为延迟后的歌词保存在剪切板中,你可以立即在所需的地方粘贴。同时,我也提供了.app应用程序版,如果你想直接写入文件,那么这个脚本能非常方便的实现这个功能:通过选择lrc文件,设置延迟,并再提示选择新歌词保存路径。DynamicLyrics是一款在桌面或者状态栏显示歌词的软件(或者说是iTunes插件),能随着iTunes启动而启动,退出而退出。DynamicLyrics自带的修改工具有时候不方便修改(不能自定义延迟时间),这个服务流程是也能解决DynamicLyrics下载的歌词和歌曲存在延迟的问题,由于DynamicLyrics不对时间轴本身进行修改,只是在lrc文件添加了[offset:second]这个信息,能被DynamicLyrics识别并读取(但是有些播放器不能读取这个ID标签),所以这时候你可以用这个流程直接更改时间来解决问题。
效果:

1.右键文本菜单版基本操作:


2.右键文本菜单版配合DynamicLyrics使用:

3.传统.app应用程序版操作:

设置lrc歌词延时(右键服务菜单版;8月7日更新): 设置lrc歌词延时.7z (161.45 KB, 下载次数: 21)
设置lrc歌词延时(.app应用程序版;8月7日更新): lrc歌词延迟.7z (1.04 MB, 下载次数: 12)

三、文件/文件夹右键服务菜单
       文件/文件夹右键服务菜单的对象是Finder中显示的文件和文件夹。苹果限制了能发送给服务流程的文件/文件夹的数量最高为1000个。以下流程,我会提供右键服务菜单版传统.app应用程序版,区别是,一个右键里调用,一个和普通程序一样双击打开调用。以下只演示右键服务菜单版。

        ①【截取文件名】作用是:编辑文件名,并且只保留文件名的其中一个区间。打个比方,我要批量去掉所有文件名的前2个和后2个字符,那么这个流程就派上用场了。这个流程最早出现在我以前的主题帖中,相比原始版本,我进行了不少bug修复和防止误操作的改进,并且增加了一个更快捷的版本。
        用途举例:我比较不喜欢音乐前面含有那些专辑序号,或者歌手-歌名的模式,我的强迫症要求我必须去掉,但是一个一个改太累,于是我就写了这个流程(Finder Rename貌似做不到),直接选中后-右键-截取文件名。
V2.0(将对样本的修改应用于所有文件):这个版本的实现方法简单说就是从你选中的所有文件中取出一个文件作为样本,你对这个样本的修改会应用于所有选中文件,只允许删除头和尾的字符,不允许删除文件名中间的字符,流程只会计算出你删除了文件名头和尾的字符数,并将所有选中的文件名的头和尾都删除同样多的字符。请看例子:

V1.0(手动输入开始字符和终止字符):这个版本和上面不同的是,你要自己数需要删除文件头和尾多少个字符,然后应用于所有文件,效果是一样的,这也是我最初的版本(不符合我的节能生活)。

截取文件名2.0(右键服务菜单版)
截取文件名.zip (119.84 KB, 下载次数: 2501)
截取文件名2.0(传统.app应用程序版): 截取文件名.zip (1.47 MB, 下载次数: 41)
截取文件名1.0(右键服务菜单版) 截取文件名.zip (120.74 KB, 下载次数: 1201)

       ②【批量重命名】:正如名称一样,对文件名的进行批量重命名。流程将会根据Finder中的排序为准,对文件进行重命名,格式是“前缀 + 至少两位数字”,也就是说,这个流程会先计算一共有多少个文件,根据文件数量取模,比如50个文件,那么数字序列是两位,如果是120个文件,那么数字序列是三位,依次类推。重命名后的文件序列先后顺序是根据Finder中的排序而定,在Finder列表中,左边优先于右边,上面优先于下面排列。
       另外,本流程有两个版本。因为上面提到了,苹果限制了流程服务最多只能输入1000个文件,然而应用程序无此限制,所以我提供了服务菜单版和应用程序版。


批量重命名(右键服务菜单版): 批量重命名.zip (66.12 KB, 下载次数: 13086)
批量重命名(.app应用程序版): 批量重命名.zip (1.47 MB, 下载次数: 2632)

       ③【文字/字幕合并】:作用是用cat 拼接文本/字幕文件。这个点子来自这个帖子,我觉得原帖做得不够好,因为要和/applications路径扯上关系,于是我也写了个。用来做双语字幕的确是个好点子,但是不同的字幕轨道出现可能是一先一后。



文字/字幕合并(右键服务菜单版): 合并文本:字幕.zip (133.66 KB, 下载次数: 37)
文字/字幕合并(传统.app应用程序版): 合并文本:字幕.app.zip (1.47 MB, 下载次数: 33)

       ④【用txt内容重新命名】:这个流程的作用是将txt文件中的行名称作为文件的新名字。这个流程曾经在我的回复中出现过,这里一起附上。要求txt文件中的行数量大于文件的数量。请看演示:

用txt内容重新命名(右键服务菜单版): 用txt内容重新命名.zip (86.89 KB, 下载次数: 439)
用txt内容重新命名(传统.app应用程序版): 用txt内容重新命名.zip (1.47 MB, 下载次数: 38)


        ⑤【一键封装mov】:这个流程的作用是将各种视频格式的视频一键转换为mov封装格式。
1)关于封装格式的解释所有的视频文件有两部分组成,视频流和音频流。视频(封装)格式就是容纳视频流和音频流的容器。所以最快的转码应该是只转换封装格式(10多秒完成),而不转码视频流和音频流。
2)为什么要转换成mov:iOS设备和Mac的内置浏览器不支持mkv、rmvb等多种格式,但是支持mp4、mov格式(mov代表QuickTime Movie),所以大多数情况只要转换封装格式就能在此类播放器上播放。最重要的是,如果你想进行iMove或Final Cut剪辑,那么转换封装格式是必要的,如果你的素材不是mp4/m4v/mov的话,相比转码,能省下相当多时间。
3)这个流程是智能化的,会以最佳的方式转换成mov
例外一提,如果使用了这个流程,那么我一年前的这篇帖子(【Mac技术组】最省时的视频封装格式转换)就显得很蠢。

一键封装mov(右键服务菜单版):http://pan.baidu.com/s/1i3Ly9ff
操作非常简单,只要一键完成mov封装(mov文件会在原文件路径生成),如下图:

你也可以使用.app应用程序版,由于我已经将FFmpeg和MediaInfo包含在.app包内,所以无需额外下载组件,直接可以使用。
转换为mov格式 (.app应用程序版): 转换为mov格式.7z (10.08 MB, 下载次数: 70)

        ⑥【对视频进行转码】:如名字所言,对视频进行转码操作(格式mov)使用的是FFmpeg(libx264库与libFDK-AAC)编码核心,这是目前最优秀的视频转换工具。流程提供了四个预设,其中一个针对压制蓝光,两个用于压制移动设备上观看的影片,一个是战渣浪参数(上传新浪用),战渣浪也是这个流程的核心。相比格式工厂那些乱七八糟的软件,这个流程能提供更好的质量。
预设1:压制蓝光。
预设2:高质量。
预设3:中质量。
预设4:低质量(上传新浪)。通过分析片源,音频根据片源情况使用最适合编码,音频和视频码率根据情况智能分配。

对视频进行转码(右键服务菜单版):http://pan.baidu.com/s/1i3Ly9ff
演示:1) 选择转码预设 2)选择输出文件夹 3)自动打开终端转码[如果想退出转码,那么直接关闭终端即可] 4)完成后通知中心提醒


你也可以使用.app应用程序版,由于我已经将FFmpeg和MediaInfo包含在.app包内,所以无需额外下载组件,直接可以使用。
对视频进行转码(.app应用程序版): 对视频进行转码.app.7z (11.61 MB, 下载次数: 63)

        (大部分封釉可以忽略的)【rPath修改工具】(需要Xcode):利用Xcode中的install_name_tool修改二进制可执行文件(确切说是所有Mach-O)的rPath,将其依赖的库由/usr/local/lib转移到执行路径下的NAME_lib文件夹,并且通过递归对库之间的依赖也进行修改,并将所有依赖库拷贝到NAME_lib中。如果不修改存在库依赖的二进制文件,那么它只能在你的电脑运行,在其他电脑就会提示缺少必要的库,所以这个流程能便于发布编译好的开源程序,比如例子中的FFmpeg和MPlayer。Xcode项目完全能用Xcode解决。


下载: 修改rPath.scpt (27.55 KB, 下载次数: 10)

五、后记
       上面就是我认为比较有用的流程,当然大部分只是我个人的需求,如果有什么有意思的点子可以在楼下回复,在我力所能及的的范围内会做一个出来。总的来说,流程不适合做:
①监视型:比如监视你做了什么事(这个需要Obj-C程序) ,因为AppleScript是单线程的,而且没有系统事件和键值观察特性 。
②触发型:比如在什么点做什么事。
        只要不是上面的类型,一般通过Automator都不困难。后期可能还会发帖分享一些新的流程~还望支持~



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多