Automator工作流程查找器标签

时间:2017-02-02 19:01:29

标签: python terminal applescript

我在lightroom中有成千上万的照片,我正在转换为JPEG以节省空间。问题是这些RAW文件已经被分类到不同的finder标签标签中,所以当我导出到JPEG时,这些标签将被删除。有没有办法保留这些标签或只是创建一个扫描目录的自动机工作流程,并找到具有.CR2 / .NEF扩展名的精确文件名的JPEG,并将标签应用于新的JPEG文件?

macOS Sierra

Mac Pro(2013年末)

3.7 GHz四核Intel Xeon E5

版本10.12.3(16D32)

1 个答案:

答案 0 :(得分:0)

堆栈溢出不是你要求别人为你开发东西的地方。您应该开始您的计划,然后您可以从这里获得帮助。所以这里有一些帮助:

1)没有标准的Automator动作来获取或设置标签。但Applescript包含有关标签的功能。

2)但是,请注意,即使您可以在Finder中设置多个,Applescript功能现在也限制为每个文件的单个颜色标签。因此,如果您为每个CR2或NEF文件设置了多个颜色标签,则Applescript无法帮助您

3)您需要在JPEG文件中构建一个“重复”循环,并为每个循环提取名称而不扩展名。这可以通过以下方式完成:

tell application "Finder"
    set N to name of aFile
    set Ext to name extension of aFile
    set BaseName to text 1 thru ((length of N) - (length of Ext) - 1) of N
end tell

4)您必须使用该名称添加2个可能的扩展名(CR2,NEF)并搜索文件是否存在于原始文件夹中。你可以使用Finder函数“exists”

来做到这一点

5)如果存在CR2 / NEF文件,请使用文件属性“label index”获取标签并将其设置为jpeg文件:

set myLabel to label index of file CR2 -- to read CR2 file label
set label index of aFile to myLabel -- to assign the label found to your new jpg file

6)因为您的Jpg文件与原始文件位于相同的文件夹/子文件夹中,您只需选择包含所有文件的单个文件夹即可。对于每个jpg,您在相同的文件夹级别搜索原始文件是否存在。包含文件的文件夹由“container”调用。从所有子文件夹级别获取文件使用“整个内容”。我只是添加一个过滤器,只获取扩展名为“JPG”或“jpg”的文件。您可能需要将列表扩展到扩展名。

所有这一切都给出了:

-- possible values label index: 0= no label, 1=orange, 2=Red, 3=yellow, 4=blue, 5=pink, 6=green, 7=grey
set myFolder to choose folder with prompt "Select folder containing JPEG and raw files"

tell application "Finder"
set JPEGFiles to every file in entire contents of folder myFolder whose name extension is in {"JPG", "jpg"}
repeat with aFile in JPEGFiles -- loop through all jpeg files
    -- extract name of Jpg file without extension
    set N to name of aFile
    set Ext to name extension of aFile
    set parentFolder to (container of aFile) as string -- get folder
    set BaseName to text 1 thru ((length of N) - (length of Ext) - 1) of N
    -- build possible raw file names with extension .CR2 or .NEF
    set CR2 to (parentFolder & BaseName & ".CR2") as string
    set NEF to (parentFolder & BaseName & ".NEF") as string

    -- search existing label and assign it to jpg file
    set myLabel to 0 -- default no label
    if CR2 exists then set myLabel to label index of file CR2 -- get label of .CR2 if exists
    if NEF exists then set myLabel to label index of file NEF -- get label of .NEF if exists
    if myLabel > 0 then set label index of aFile to myLabel -- if label found, assignment to jpg file
end repeat -- loop to next file in jpg folder
end tell