如何告诉这个Applescript跳过一些文件?

时间:2014-07-26 08:29:18

标签: applescript handbrake

我,使用Applescript使用Handbrake CLI将一大堆mv4文件转换为640x480。我有一个AppleScript,我发现某个地方改变了我的参数,而且效果很好。但是为了节省时间,我希望脚本跳过已经是640x480的文件,因为并非所有文件都需要转换。我该怎么办呢?

这是剧本:

--on adding folder items to this_folder after receiving these_items
with timeout of (720 * 60) seconds
tell application "Finder"
    --Get all m4v files that have no label color yet, meaning it hasn’t been processed
    set allFiles to every file of entire contents of ("FIRSTHD:Users:jerry:Desktop:Omkodning" as alias) whose ((name extension is "m4v") and label index is 0)
    --Repeat for all files in above folder
    repeat with i from 1 to number of items in allFiles
        set currentFile to (item i of allFiles)
        try
            --Set to gray label to indicate processing
            set label index of currentFile to 7
            --Assemble original and new file paths
            set origFilepath to quoted form of POSIX path of (currentFile as alias)
            set newFilepath to (characters 1 thru -5 of origFilepath as string) & "mp4'"
            --Start the conversion
            set shellCommand to "nice /Applications/HandBrakeCLI -i " & origFilepath & " -o " & newFilepath & " -e ffmpeg4 -b 1200 -a 1 -E faac -B 160 -R 29.97 -f mp4 –crop 0:0:0:0 crf 24 -w 640 -l 480  ;"
            do shell script shellCommand
            --Set the label to green in case file deletion fails
            set label index of currentFile to 6
            --Remove the old file
            set shellCommand to "rm -f " & origFilepath
            do shell script shellCommand
        on error errmsg
            --Set the label to red to indicate failure
            set label index of currentFile to 2
        end try
    end repeat
end tell
end timeout
--end adding folder items to

1 个答案:

答案 0 :(得分:0)

为了清晰而编辑....

由于HandBreakCLI没有任何选项可以告诉它如果分辨率是640x480就不能转换,你必须在脚本中处理那一点逻辑。它很容易完成。

所以你的脚本需要做的就是......

get the video file resolution

If file is not at desired resolution then
    convert the file
else
    skip it
end if

因此,作为discussed here,您可以使用免费提供的mediainfo命令行工具来获取视频分辨率。

以下是一些AppleScript代码,您可以复制/粘贴并运行以查看其工作原理......

set filterStr to " | grep pixels | tr -d [:alpha:][:blank:][:punct:]"

set allFiles to (choose file with multiple selections allowed)

repeat with i from 1 to number of items in allFiles
    set currentFile to (item i of allFiles)

    set cmdStr to "/usr/local/bin/mediainfo " & ¬
        quoted form of POSIX path of currentFile & filterStr

    set h to 0
    set w to 0
    try
        set fileInfo to do shell script (cmdStr)
        set {w, h} to every paragraph of fileInfo
    end try

    if w is not 640 and h is not 480 then
        log w & " x " & h

        # Convert to desired resolution....
    end if
end repeat

希望有所帮助。