Mac下使用AppleScript与系统服务自动从射手获取字幕

特色图像: OSX 自动获取字幕服务

之前射手播放器(SPlayerX)在App Store上架,而且是收费软件,这件事算是引起了一场风波(详情可以看这里),因为射手播放器本来是用的MPlayerX的代码,而MPlayerX是开源的。不过这件事也让Mac用户爽了一把,因为射手为了规避GPL协议把字幕获取模块(sscl)用二进制文件的方式放出,作为一个插件调用,这使得使用各种脚本来自动获取字幕成为可能,Windows底下据我所知还没有能从射手调用字幕的软件。其实这种软件之前网友也发过不少,实现方式多种多样,我最早是使用一阁Blog的这篇文章中的代码,但总觉得不太爽,每次用都要开终端虽然感觉比较geek,不过还是不是很方便。另外本文代码也是参考了这篇文章里的。

想了下还是觉得用服务的方式获取会比较方便,集成到系统自带的右键菜单,并且通过设置能只在影片文件的右键菜单出现。

我的脚本只针对文件,不能获取文件夹内的内容,主要是因为现在射手在服务器端做了一个限制,如果短时间内获取的字幕太多,获取到的都将是一个只会告诉你“你使用的版本过旧”的假srt文件,得过一段时间或者换个IP才能重新获取。
所以大家还是看一片获取一次字幕,我试了下三四片一起获取没什么问题,再多就不行了。
而且如果支持文件夹的话就没法象我预想的只在影片的右键菜单中出现,而是随便点什么都会有。

支持多文件处理,多选文件后执行脚本即可。
执行后状态栏会有一个齿轮在转,执行完成后会有窗口告诉你是否获取成功。

下面上附件和代码

获取sscl

首先你需要sscl,这个文件你可以从SPlayer的BitBucket中获取,不过已经很久没有更新了,还能不能用我没有试过,下载地址:
http://hg.splayer.org/splayerx/raw/0b9e84441210/binaries/x86_64/sscl
我用的是Mac App Store中的SPlayerX 1.1.4中提取的文件。这里也附上下载地址:
http://fduo.org/wordpress/wp-content/uploads/2012/11/sscl.zip

修改路径并赋予执行权限

打开终端chmod +x,然后把下回来的sscl拖到终端窗口中回车
sscl放在哪里随便你,我是放在~/Applications/的 (注意这里我选择的路径是~打头的,就是当前用户目录的意思,也就是/Users/你的用户名/Applications,不是根目录下的那个应用程序文件夹)

添加服务

这里提供我做好的workflow,在这里下载:

获取字幕.workflow

放在~/Applications/下的直接点安装就可以用了,如果放别的地方就点”用Automator打开”,把一开始set SSCL to "~/Applications/sscl"改成你的路径就好了。
这样就完成了,现在在Finder里右键点影片文件,在服务菜单里点“获取字幕”就可以了。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
on run {input, parameters}
    set SSCL to "~/Applications/sscl"
    set theList to input as list
    set theLog to ""
    do shell script "rm -rf ~/Library/Application\\ Support/SPlayerX/SVPSub/"
    repeat with theItem in theList
        set theFile to theItem as alias
        set thePath to POSIX path of theFile as string
        tell application "Finder"
            set theName to the name of theFile
            set theFolder to POSIX path of ((container of theFile) as alias)
        end tell
        try
            do shell script SSCL & " --video-file " & quoted form of thePath & " --pull >/dev/null 2>&1"
            set theLog to ((theLog) & "[成功]: " & theName & "
"
)
            do shell script "mv ~/Library/Application\\ Support/SPlayerX/SVPSub/* " & quoted form of theFolder
        on error
            set theLog to ((theLog) & "[失败]: " & theName & "
"
)
        end try
    end repeat
    display dialog theLog buttons "好" default button "好" giving up after 60
end run

这脚本其实稍微改一改,配合OS X自带的文件夹操作,做成监视下载文件夹,一旦发现新的视频文件自动获取字幕也很容易,不过我没这个需求,就不写了。

本文对我有帮助,给我买杯咖啡



9 thoughts on “Mac下使用AppleScript与系统服务自动从射手获取字幕

  1. remaerd说道:

    没想到你的博客挺有意思的,关注关注。

  2. Evan说道:

    我之前用python编了一个利用SSCL自动下载字幕的和自动转换成UTF-8编码的脚本,并代码嵌入Sickbeard和couchpotato, 这样每次就有了一套自动搜索usenet,自动下载,自动匹配和转换字幕编码,自动命名和整理,自动下载剧集介绍和海报的工具,再配合Plex Media server, 基本再没什么刺可以挑了。 今天看到了你这个apple脚本的用法,感觉很有意思。 我稍作修改了下,使其自动调用我的python脚本,用起来也很顺手,感谢分享。

    • 阿亚说道:

      @Evan 因为我下片主要是在PT站,所以用的是Transmission+Flexget的用法,Flexget非常强大,PT的片源和速度也很有保障,我是很满意了。
      Plex这类软件我不是很喜欢,在电脑上还是不习惯那种媒体中心式的管理方法,sscl自动找到的字幕配合MplayerX很好用,识别编码基本没出过问题

  3. Evan说道:

    我在电脑上也是主要用mplayerX或者xbmc看,但是有时也会在用装了plex的raspberry pi在高清电视上看,所以后面就逐步都用plex了。

    flexget 也是比较好的工具,我之前也一直在用。 但主要我在国外怕用p2p下载盗版后产生版权问题,因为p2p的下载过程是透明的,而usenet则提供256 bit的ssl加密。

    • 阿亚说道:

      @Evan 我原来也在国外(德国),经常下东西也没出过什么问题。BT是可以加密的,而一般版权方想要抓证据都是通过建立陷阱tracker,诱导人们下载,或者直接连到现有的tracker,然后从peer列表里面收集IP地址来抓人。PT基本上是比较安全的,因为不像公共Tracker那样容易渗透,目前好像没听说有PT出国有人被抓的事。

  4. Evan说道:

    原来如此,也许我过于小心了,请问有什么好的PT站推荐吗?

    • 阿亚说道:

      国内现在一般是所谓五大咯,CHD、TTG、HDW(原来的HDC),还有俩忘了,不过这五大门槛比较高邀请比较难弄到,乱七八糟的PT站其实也还有很多,国外的也是

  5. 传奇广告价格cq.9uv.net传奇私服广告总代理平台价格QQ1207542352
    墨香私服一条龙开区服务www.9uv.netQQ1207542352 http://www.9uv.net/

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>