Adobe 65007312 Programming Guide - Page 47

How post-process actions are executed

Page 47 highlights

CHAPTER 3: Creating Export and Publish Services Adding an export post-process action 47 -- By doing so, you assume responsibility for creating -- the file type that was originally requested and placing it -- in the location that was originally requested in your -- filter loop below. end, } for sourceRendition, renditionToSatisfy in filterContext:renditions( renditionOptions ) do -- Wait for the upstream task to finish its work on this photo. local success, pathOrMessage = sourceRendition:waitForRender() if success then -- Now that the photo is completed and available to this filter, -- you can do your work on the photo here. -- It would look somethinglike this: local status = LrTasks.execute( 'mytool "' .. pathOrMessage .. '"' ) -- (This tool is hypothetical.) -- You may need to use escapes in the file name so that -- special characters are not interpreted by the OS shell -- (cmd.exe in Windows or bash in Mac OS). -- In Windows, enclose the whole command in double quotes. -- If your tool cannot process the photo as intended, use -- something like this to signal a failure for this rendition only: if status ~= (desired status) then renditionToSatisfy:renditionIsDone( false, "error message" ) end -- (Replace "error message" with a user-readable string explaining why -- the photo failed to render.) -- It is neither necessary nor harmful to call renditionIsDone if the -- rendition has completed successfully. -- The iterator for filterContext:renditions calls it -- automatically if you have not already done so. end end end How post-process actions are executed During an export operation, rendition requests and state information are passed up a chain of processors from the Export Service Provider to the Lightroom built-in render engine, and rendered photos are passed back down again. The sequence is followed for each photo in the list of photos to be exported. This section explains the sequence of calls, and what information is passed at each point.

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204

C
HAPTER
3: Creating Export and Publish Services
Adding an export post-process action
47
-- By doing so, you assume responsibility for creating
-- the file type that was originally requested and placing it
-- in the location that was originally requested in your
-- filter loop below.
end,
}
for sourceRendition, renditionToSatisfy in filterContext:renditions(
renditionOptions ) do
-- Wait for the upstream task to finish its work on this photo.
local success, pathOrMessage = sourceRendition:waitForRender()
if success then
-- Now that the photo is completed and available to this filter,
-- you can do your work on the photo here.
-- It would look somethinglike this:
local status = LrTasks.execute( 'mytool "' .. pathOrMessage .. '"' )
-- (This tool is hypothetical.)
-- You may need to use escapes in the file name so that
-- special characters are not interpreted by the OS shell
-- (cmd.exe in
Windows or bash in Mac OS).
-- In Windows, enclose the whole command in double quotes.
-- If your tool cannot process the photo as intended, use
-- something like this to signal a failure for this rendition only:
if status ~= (desired status) then
renditionToSatisfy:renditionIsDone( false, "error message" )
end
-- (Replace "error message" with a user-readable string explaining why
-- the photo failed to render.)
-- It is neither necessary nor harmful to call renditionIsDone if the
-- rendition has completed successfully.
-- The iterator for filterContext:renditions calls it
-- automatically if you have not already done so.
end
end
end
How post-process actions are executed
During an export operation, rendition requests and state information are passed up a chain of processors
from the Export Service Provider to the Lightroom built-in render engine, and rendered photos are passed
back down again. The sequence is followed for each photo in the list of photos to be exported. This section
explains the sequence of calls, and what information is passed at each point.