py-aep 0.7.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- py_aep/__init__.py +325 -0
- py_aep/cli/__init__.py +9 -0
- py_aep/cli/compare.py +942 -0
- py_aep/cli/validate.py +1809 -0
- py_aep/cli/visualize.py +607 -0
- py_aep/cos/__init__.py +14 -0
- py_aep/cos/cos.py +483 -0
- py_aep/cos/descriptors.py +185 -0
- py_aep/cos/serializer.py +232 -0
- py_aep/data/__init__.py +0 -0
- py_aep/data/match_names.py +883 -0
- py_aep/data/units.py +1033 -0
- py_aep/enums/__init__.py +250 -0
- py_aep/enums/font_object.py +139 -0
- py_aep/enums/format_options.py +263 -0
- py_aep/enums/general.py +1037 -0
- py_aep/enums/mappings.py +201 -0
- py_aep/enums/output_module.py +406 -0
- py_aep/enums/property.py +83 -0
- py_aep/enums/render_queue.py +72 -0
- py_aep/enums/render_settings.py +425 -0
- py_aep/enums/text_document.py +178 -0
- py_aep/kaitai/__init__.py +22 -0
- py_aep/kaitai/aep.ksy +2539 -0
- py_aep/kaitai/aep.py +8041 -0
- py_aep/kaitai/descriptors.py +235 -0
- py_aep/kaitai/patches.py +35 -0
- py_aep/kaitai/proxy.py +26 -0
- py_aep/kaitai/reverses.py +98 -0
- py_aep/kaitai/transforms.py +23 -0
- py_aep/kaitai/utils.py +467 -0
- py_aep/models/__init__.py +96 -0
- py_aep/models/application.py +132 -0
- py_aep/models/essential_graphics.py +49 -0
- py_aep/models/guide.py +58 -0
- py_aep/models/items/__init__.py +15 -0
- py_aep/models/items/av_item.py +114 -0
- py_aep/models/items/composition.py +771 -0
- py_aep/models/items/folder.py +73 -0
- py_aep/models/items/footage.py +222 -0
- py_aep/models/items/item.py +140 -0
- py_aep/models/layers/__init__.py +19 -0
- py_aep/models/layers/av_layer.py +412 -0
- py_aep/models/layers/camera_layer.py +27 -0
- py_aep/models/layers/layer.py +495 -0
- py_aep/models/layers/light_layer.py +76 -0
- py_aep/models/layers/shape_layer.py +27 -0
- py_aep/models/layers/text_layer.py +27 -0
- py_aep/models/layers/three_d_model_layer.py +40 -0
- py_aep/models/project.py +512 -0
- py_aep/models/properties/__init__.py +22 -0
- py_aep/models/properties/keyframe.py +473 -0
- py_aep/models/properties/keyframe_ease.py +106 -0
- py_aep/models/properties/marker.py +161 -0
- py_aep/models/properties/mask_property_group.py +106 -0
- py_aep/models/properties/overrides.py +1962 -0
- py_aep/models/properties/property.py +1140 -0
- py_aep/models/properties/property_base.py +217 -0
- py_aep/models/properties/property_group.py +401 -0
- py_aep/models/properties/shape.py +314 -0
- py_aep/models/properties/specs.py +2258 -0
- py_aep/models/renderqueue/__init__.py +27 -0
- py_aep/models/renderqueue/format_options/__init__.py +17 -0
- py_aep/models/renderqueue/format_options/cineon.py +105 -0
- py_aep/models/renderqueue/format_options/jpeg.py +63 -0
- py_aep/models/renderqueue/format_options/openexr.py +80 -0
- py_aep/models/renderqueue/format_options/png.py +189 -0
- py_aep/models/renderqueue/format_options/targa.py +43 -0
- py_aep/models/renderqueue/format_options/tiff.py +41 -0
- py_aep/models/renderqueue/format_options/xml.py +307 -0
- py_aep/models/renderqueue/output_module.py +742 -0
- py_aep/models/renderqueue/render_queue.py +54 -0
- py_aep/models/renderqueue/render_queue_item.py +671 -0
- py_aep/models/renderqueue/settings.py +202 -0
- py_aep/models/sources/__init__.py +13 -0
- py_aep/models/sources/file.py +188 -0
- py_aep/models/sources/footage.py +200 -0
- py_aep/models/sources/placeholder.py +42 -0
- py_aep/models/sources/solid.py +53 -0
- py_aep/models/text/__init__.py +9 -0
- py_aep/models/text/font_object.py +55 -0
- py_aep/models/text/text_document.py +539 -0
- py_aep/models/validators.py +114 -0
- py_aep/models/viewer/__init__.py +11 -0
- py_aep/models/viewer/view.py +57 -0
- py_aep/models/viewer/view_options.py +222 -0
- py_aep/models/viewer/viewer.py +84 -0
- py_aep/parsers/__init__.py +7 -0
- py_aep/parsers/application.py +47 -0
- py_aep/parsers/composition.py +195 -0
- py_aep/parsers/defaults.py +387 -0
- py_aep/parsers/essential_graphics.py +69 -0
- py_aep/parsers/footage.py +87 -0
- py_aep/parsers/format_options.py +76 -0
- py_aep/parsers/item.py +203 -0
- py_aep/parsers/layer.py +101 -0
- py_aep/parsers/marker.py +90 -0
- py_aep/parsers/output_module.py +74 -0
- py_aep/parsers/project.py +213 -0
- py_aep/parsers/property.py +981 -0
- py_aep/parsers/property_value.py +151 -0
- py_aep/parsers/render_queue.py +158 -0
- py_aep/parsers/text.py +210 -0
- py_aep/parsers/utils.py +30 -0
- py_aep/parsers/view.py +118 -0
- py_aep/py.typed +0 -0
- py_aep/resolvers/__init__.py +14 -0
- py_aep/resolvers/interpolation.py +890 -0
- py_aep/resolvers/output.py +351 -0
- py_aep/utils.py +34 -0
- py_aep-0.7.0.dist-info/METADATA +136 -0
- py_aep-0.7.0.dist-info/RECORD +115 -0
- py_aep-0.7.0.dist-info/WHEEL +4 -0
- py_aep-0.7.0.dist-info/entry_points.txt +4 -0
- py_aep-0.7.0.dist-info/licenses/LICENSE +21 -0
py_aep/__init__.py
ADDED
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
"""py_aep - A .aep (After Effects Project) parser."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
|
|
7
|
+
try:
|
|
8
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
9
|
+
except ImportError:
|
|
10
|
+
from importlib_metadata import ( # type: ignore[import,no-redef] # Python 3.7
|
|
11
|
+
PackageNotFoundError,
|
|
12
|
+
version,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
from .enums import (
|
|
16
|
+
AlphaMode,
|
|
17
|
+
AudioBitDepth,
|
|
18
|
+
AudioChannels,
|
|
19
|
+
AudioSampleRate,
|
|
20
|
+
AutoKernType,
|
|
21
|
+
AutoOrientType,
|
|
22
|
+
BaselineDirection,
|
|
23
|
+
BitsPerChannel,
|
|
24
|
+
BlendingMode,
|
|
25
|
+
BoxAutoFitPolicy,
|
|
26
|
+
BoxFirstBaselineAlignment,
|
|
27
|
+
BoxVerticalAlignment,
|
|
28
|
+
ChannelType,
|
|
29
|
+
CloseOptions,
|
|
30
|
+
ColorDepthSetting,
|
|
31
|
+
ColorManagementSystem,
|
|
32
|
+
ComposerEngine,
|
|
33
|
+
CTFontTechnology,
|
|
34
|
+
CTFontType,
|
|
35
|
+
CTScript,
|
|
36
|
+
DigitSet,
|
|
37
|
+
DiskCacheSetting,
|
|
38
|
+
EffectsSetting,
|
|
39
|
+
FastPreviewType,
|
|
40
|
+
FeetFramesFilmType,
|
|
41
|
+
FieldRender,
|
|
42
|
+
FieldSeparationType,
|
|
43
|
+
FillLightingCorrectionType,
|
|
44
|
+
FillMethodType,
|
|
45
|
+
FillOutputDepthType,
|
|
46
|
+
FillRangeType,
|
|
47
|
+
FontBaselineOption,
|
|
48
|
+
FontCapsOption,
|
|
49
|
+
FootageTimecodeDisplayStartType,
|
|
50
|
+
FrameBlendingSetting,
|
|
51
|
+
FrameBlendingType,
|
|
52
|
+
FrameRateSetting,
|
|
53
|
+
FramesCountType,
|
|
54
|
+
GetSettingsFormat,
|
|
55
|
+
GpuAccelType,
|
|
56
|
+
GuideLayers,
|
|
57
|
+
GuideOrientationType,
|
|
58
|
+
ImportAsType,
|
|
59
|
+
KeyframeInterpolationType,
|
|
60
|
+
Label,
|
|
61
|
+
Language,
|
|
62
|
+
LayerQuality,
|
|
63
|
+
LayerSamplingQuality,
|
|
64
|
+
LeadingType,
|
|
65
|
+
LightType,
|
|
66
|
+
LinearLightMode,
|
|
67
|
+
LineJoinType,
|
|
68
|
+
LineOrientation,
|
|
69
|
+
LogType,
|
|
70
|
+
LoopMode,
|
|
71
|
+
LutInterpolationMethod,
|
|
72
|
+
MaskFeatherFalloff,
|
|
73
|
+
MaskMode,
|
|
74
|
+
MaskMotionBlur,
|
|
75
|
+
MotionBlurSetting,
|
|
76
|
+
OutputAudio,
|
|
77
|
+
OutputChannels,
|
|
78
|
+
OutputColorDepth,
|
|
79
|
+
OutputColorMode,
|
|
80
|
+
OutputFormat,
|
|
81
|
+
ParagraphDirection,
|
|
82
|
+
ParagraphJustification,
|
|
83
|
+
PlayMode,
|
|
84
|
+
PostRenderAction,
|
|
85
|
+
PREFType,
|
|
86
|
+
ProjectThread,
|
|
87
|
+
PropertyControlType,
|
|
88
|
+
PropertyType,
|
|
89
|
+
PropertyValueType,
|
|
90
|
+
ProxyUseSetting,
|
|
91
|
+
PulldownMethod,
|
|
92
|
+
PulldownPhase,
|
|
93
|
+
PulldownSetting,
|
|
94
|
+
PurgeTarget,
|
|
95
|
+
RenderQuality,
|
|
96
|
+
ResizeQuality,
|
|
97
|
+
ResolveType,
|
|
98
|
+
RQItemStatus,
|
|
99
|
+
SoloSwitchesSetting,
|
|
100
|
+
TimeDisplayType,
|
|
101
|
+
TimeSpanSource,
|
|
102
|
+
ToolType,
|
|
103
|
+
TrackMatteType,
|
|
104
|
+
ViewerType,
|
|
105
|
+
)
|
|
106
|
+
from .kaitai import Aep
|
|
107
|
+
from .models import (
|
|
108
|
+
Application,
|
|
109
|
+
AVItem,
|
|
110
|
+
AVLayer,
|
|
111
|
+
CameraLayer,
|
|
112
|
+
CineonFormatOptions,
|
|
113
|
+
CompItem,
|
|
114
|
+
FeatherPoint,
|
|
115
|
+
FileSource,
|
|
116
|
+
FolderItem,
|
|
117
|
+
FontObject,
|
|
118
|
+
FootageItem,
|
|
119
|
+
FootageSource,
|
|
120
|
+
Guide,
|
|
121
|
+
Item,
|
|
122
|
+
JpegFormatOptions,
|
|
123
|
+
Keyframe,
|
|
124
|
+
KeyframeEase,
|
|
125
|
+
Layer,
|
|
126
|
+
LightLayer,
|
|
127
|
+
MarkerValue,
|
|
128
|
+
MaskPropertyGroup,
|
|
129
|
+
OpenExrFormatOptions,
|
|
130
|
+
OutputModule,
|
|
131
|
+
PlaceholderSource,
|
|
132
|
+
PngFormatOptions,
|
|
133
|
+
Project,
|
|
134
|
+
Property,
|
|
135
|
+
PropertyBase,
|
|
136
|
+
PropertyGroup,
|
|
137
|
+
RenderQueue,
|
|
138
|
+
RenderQueueItem,
|
|
139
|
+
SettingsView,
|
|
140
|
+
Shape,
|
|
141
|
+
ShapeLayer,
|
|
142
|
+
SolidSource,
|
|
143
|
+
TargaFormatOptions,
|
|
144
|
+
TextDocument,
|
|
145
|
+
TextLayer,
|
|
146
|
+
ThreeDModelLayer,
|
|
147
|
+
TiffFormatOptions,
|
|
148
|
+
View,
|
|
149
|
+
Viewer,
|
|
150
|
+
ViewOptions,
|
|
151
|
+
XmlFormatOptions,
|
|
152
|
+
)
|
|
153
|
+
from .parsers.application import parse_app
|
|
154
|
+
from .parsers.project import _parse_project, parse_project
|
|
155
|
+
|
|
156
|
+
try:
|
|
157
|
+
__version__ = version("py_aep")
|
|
158
|
+
except PackageNotFoundError:
|
|
159
|
+
__version__ = "0.0.0"
|
|
160
|
+
|
|
161
|
+
__all__ = [
|
|
162
|
+
"__version__",
|
|
163
|
+
"AlphaMode",
|
|
164
|
+
"Application",
|
|
165
|
+
"AudioBitDepth",
|
|
166
|
+
"AudioChannels",
|
|
167
|
+
"AudioSampleRate",
|
|
168
|
+
"AutoKernType",
|
|
169
|
+
"AutoOrientType",
|
|
170
|
+
"AVItem",
|
|
171
|
+
"AVLayer",
|
|
172
|
+
"BaselineDirection",
|
|
173
|
+
"BitsPerChannel",
|
|
174
|
+
"BlendingMode",
|
|
175
|
+
"BoxAutoFitPolicy",
|
|
176
|
+
"BoxFirstBaselineAlignment",
|
|
177
|
+
"BoxVerticalAlignment",
|
|
178
|
+
"CameraLayer",
|
|
179
|
+
"ChannelType",
|
|
180
|
+
"CineonFormatOptions",
|
|
181
|
+
"CloseOptions",
|
|
182
|
+
"ColorDepthSetting",
|
|
183
|
+
"ColorManagementSystem",
|
|
184
|
+
"CompItem",
|
|
185
|
+
"ComposerEngine",
|
|
186
|
+
"CTFontTechnology",
|
|
187
|
+
"CTFontType",
|
|
188
|
+
"CTScript",
|
|
189
|
+
"DigitSet",
|
|
190
|
+
"DiskCacheSetting",
|
|
191
|
+
"EffectsSetting",
|
|
192
|
+
"FastPreviewType",
|
|
193
|
+
"FeatherPoint",
|
|
194
|
+
"FeetFramesFilmType",
|
|
195
|
+
"FieldRender",
|
|
196
|
+
"FieldSeparationType",
|
|
197
|
+
"FileSource",
|
|
198
|
+
"FillLightingCorrectionType",
|
|
199
|
+
"FillMethodType",
|
|
200
|
+
"FillOutputDepthType",
|
|
201
|
+
"FillRangeType",
|
|
202
|
+
"FolderItem",
|
|
203
|
+
"FontBaselineOption",
|
|
204
|
+
"FontCapsOption",
|
|
205
|
+
"FontObject",
|
|
206
|
+
"FootageItem",
|
|
207
|
+
"FootageSource",
|
|
208
|
+
"FootageTimecodeDisplayStartType",
|
|
209
|
+
"FrameBlendingSetting",
|
|
210
|
+
"FrameBlendingType",
|
|
211
|
+
"FrameRateSetting",
|
|
212
|
+
"FramesCountType",
|
|
213
|
+
"GetSettingsFormat",
|
|
214
|
+
"GpuAccelType",
|
|
215
|
+
"GuideOrientationType",
|
|
216
|
+
"GuideLayers",
|
|
217
|
+
"Guide",
|
|
218
|
+
"ImportAsType",
|
|
219
|
+
"Item",
|
|
220
|
+
"JpegFormatOptions",
|
|
221
|
+
"Keyframe",
|
|
222
|
+
"KeyframeEase",
|
|
223
|
+
"KeyframeInterpolationType",
|
|
224
|
+
"Label",
|
|
225
|
+
"Language",
|
|
226
|
+
"Layer",
|
|
227
|
+
"LayerQuality",
|
|
228
|
+
"LayerSamplingQuality",
|
|
229
|
+
"LeadingType",
|
|
230
|
+
"LightLayer",
|
|
231
|
+
"LightType",
|
|
232
|
+
"LinearLightMode",
|
|
233
|
+
"LineJoinType",
|
|
234
|
+
"LineOrientation",
|
|
235
|
+
"LogType",
|
|
236
|
+
"LoopMode",
|
|
237
|
+
"LutInterpolationMethod",
|
|
238
|
+
"MarkerValue",
|
|
239
|
+
"MaskFeatherFalloff",
|
|
240
|
+
"MaskMode",
|
|
241
|
+
"MaskMotionBlur",
|
|
242
|
+
"MaskPropertyGroup",
|
|
243
|
+
"MotionBlurSetting",
|
|
244
|
+
"OpenExrFormatOptions",
|
|
245
|
+
"OutputAudio",
|
|
246
|
+
"OutputChannels",
|
|
247
|
+
"OutputColorDepth",
|
|
248
|
+
"OutputColorMode",
|
|
249
|
+
"OutputFormat",
|
|
250
|
+
"OutputModule",
|
|
251
|
+
"ParagraphDirection",
|
|
252
|
+
"ParagraphJustification",
|
|
253
|
+
"parse",
|
|
254
|
+
"parse_project",
|
|
255
|
+
"PlaceholderSource",
|
|
256
|
+
"PlayMode",
|
|
257
|
+
"PngFormatOptions",
|
|
258
|
+
"PostRenderAction",
|
|
259
|
+
"PREFType",
|
|
260
|
+
"Project",
|
|
261
|
+
"ProjectThread",
|
|
262
|
+
"Property",
|
|
263
|
+
"PropertyBase",
|
|
264
|
+
"PropertyControlType",
|
|
265
|
+
"PropertyGroup",
|
|
266
|
+
"PropertyType",
|
|
267
|
+
"PropertyValueType",
|
|
268
|
+
"ProxyUseSetting",
|
|
269
|
+
"PulldownMethod",
|
|
270
|
+
"PulldownPhase",
|
|
271
|
+
"PulldownSetting",
|
|
272
|
+
"PurgeTarget",
|
|
273
|
+
"RenderQuality",
|
|
274
|
+
"RenderQueue",
|
|
275
|
+
"RenderQueueItem",
|
|
276
|
+
"SettingsView",
|
|
277
|
+
"ResizeQuality",
|
|
278
|
+
"ResolveType",
|
|
279
|
+
"RQItemStatus",
|
|
280
|
+
"Shape",
|
|
281
|
+
"ShapeLayer",
|
|
282
|
+
"SolidSource",
|
|
283
|
+
"SoloSwitchesSetting",
|
|
284
|
+
"TargaFormatOptions",
|
|
285
|
+
"TextDocument",
|
|
286
|
+
"TextLayer",
|
|
287
|
+
"ThreeDModelLayer",
|
|
288
|
+
"TiffFormatOptions",
|
|
289
|
+
"TimeDisplayType",
|
|
290
|
+
"TimeSpanSource",
|
|
291
|
+
"ToolType",
|
|
292
|
+
"TrackMatteType",
|
|
293
|
+
"View",
|
|
294
|
+
"Viewer",
|
|
295
|
+
"ViewerType",
|
|
296
|
+
"ViewOptions",
|
|
297
|
+
"XmlFormatOptions",
|
|
298
|
+
]
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
def parse(aep_file_path: str | os.PathLike[str]) -> Application:
|
|
302
|
+
"""Parse an After Effects (.aep) project file and return an [Application][] instance.
|
|
303
|
+
|
|
304
|
+
This is the main entry point for the library. It parses the binary
|
|
305
|
+
RIFX data and returns an [Application][] object whose
|
|
306
|
+
[project][py_aep.models.application.Application.project] attribute
|
|
307
|
+
holds the full project tree.
|
|
308
|
+
|
|
309
|
+
Args:
|
|
310
|
+
aep_file_path: Path to the `.aep` file.
|
|
311
|
+
|
|
312
|
+
Example:
|
|
313
|
+
```python
|
|
314
|
+
import py_aep
|
|
315
|
+
|
|
316
|
+
app = py_aep.parse("project.aep")
|
|
317
|
+
project = app.project
|
|
318
|
+
print(app.version)
|
|
319
|
+
```
|
|
320
|
+
"""
|
|
321
|
+
file_path = os.fspath(aep_file_path)
|
|
322
|
+
with Aep.from_file(file_path) as aep:
|
|
323
|
+
aep._read()
|
|
324
|
+
project = _parse_project(aep, file_path)
|
|
325
|
+
return parse_app(aep, project)
|