我如何告诉该Applescript跳过某些文件? [英] How to I tell this Applescript to skip some files?
问题描述
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屋!