Mac下右键取字幕

20121227更新:使用os.getenv(“HOME”)替代了硬编码的用户目录。

今天终于做了一个Mac下右键取字幕的东西。

Right Click Movie File Then Get Title

具体实现方法如下:

使用Automator建立一个服务,保存为Get Subtitle.workflow即可,就这么简单。

Mac Service: Get Subtitle

 

脚本:

import os
import shutil
import tempfile
import sys

SSCL='/Applications/SPlayerX.app/Contents/Resources/plug-ins/sscl'
SVPSub= os.getenv("HOME") + '/Library/Application Support/SPlayerX/SVPSub/'

def getSubtitle():
selectedFinderItem = sys.argv[1]
movieFilePath = os.path.abspath(os.path.join(selectedFinderItem, illness  os.path.pardir))
movieName = os.path.basename(selectedFinderItem)
if not os.path.isdir(selectedFinderItem):
movieName = os.path.splitext(movieName)[0]
print 'movieName:' + movieName
print 'movieFilePath:' + movieFilePath
srtFileName=movieFilePath + '/' + movieName + '.chn.srt'
if os.path.exists(srtFileName):
print 'srt exists, ignore movie:' + movieName
return
ssclCmd=SSCL + ' --video-file "' + selectedFinderItem + '" --pull '
print 'ssclCmd=' + ssclCmd
sscl_result = os.system(ssclCmd)
print 'result of ssl get srt: ' + str(sscl_result)
if sscl_result == 0:
fileList = os.listdir(SVPSub)
for file in fileList:
if file.startswith(movieName):
try:
shutil.move(SVPSub+file, movieFilePath)
print 'move ' + file +' successful'
except:
try:
os.remove(SVPSub+file)
except:
print 'fail to delete srt'
print 'failed to move' + str(file)

getSubtitle()

你需要做的事情:

  • 确保射手播放器已经安装,或者SSCL命令行已经安装,如果不是默认目录,请修改脚本的SSCL的变量

注:我没有测试过单独使用SSCL命令行的情况,但是安装了射手播放器的Mac系统应该是没有问题的。我测试的环境是Lion。

下一步:

  • 目前只支持选中视频文件取字幕,不支持选中目录,下一步准备支持目录
  • 如果可能的话,我在考虑把脚本封装成一个App,把SSCL直接打包进去,不过我不清楚难度,以及是否违反了协议,最后也不知道有没有意义(毕竟做成App和做成Service插件是两个不同的概念,射手网未必能够容忍前者,而且似乎也不太好,等于断了射手网卖App的财路;做成插件,你毕竟是要买射手播放器才能用)。

Leave a Reply


− 二 = 5