我如何告诉该Applescript跳过某些文件? [英] How to I tell this Applescript to skip some files?

查看:164
本文介绍了我如何告诉该Applescript跳过某些文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Im,使用Applebr脚本通过Handbrake CLI将一堆mv4文件bash转换为640x480.我有一个applescript,发现某个地方更改了我的参数,效果很好.但是为了节省时间,我希望脚本跳过已经为640x480的文件,因为并非所有文件都需要转换.我该怎么办?

Im, using an Applescript to bashconvert a whole bunch of mv4 files to 640x480 using Handbrake CLI. I have a applescript I found somewhere changed to my parameters, and it works great. But to save time, I want the script to skip files that are already 640x480, since not all files need conversion. How would I go about that?

以下是脚本:

--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

推荐答案

为清楚起见进行了编辑....

由于HandBreakCLI没有任何选项来告诉它如果分辨率为640x480,则不进行转换,因此您必须处理脚本中的那部分逻辑.这很容易做到.

Since HandBreakCLI doesn't have any options to tell it not to convert if the resolution is 640x480, you have to handle that bit of logic in your script. It is easily done.

因此,您的脚本所需要做的就是...

So all your script needs to do is...

get the video file resolution

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

因此,如在此处进行讨论,您可以使用免费提供的mediainfo命令行工具来获取视频分辨率.

So, as discussed here, you can use the freely available mediainfo command line tool to get the video resolution.

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

Here is some applescript code which you can copy/paste and run to see how it works...

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

希望有帮助.

这篇关于我如何告诉该Applescript跳过某些文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆