premiere-cli 0.3.0__tar.gz → 0.4.0__tar.gz
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.
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/PKG-INFO +34 -1
- premiere_cli-0.3.0/src/premiere_cli.egg-info/PKG-INFO → premiere_cli-0.4.0/README.md +29 -13
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/pyproject.toml +9 -1
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/__init__.py +1 -1
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/cli.py +118 -0
- premiere_cli-0.4.0/src/premiere_cli/desktop_driver.py +738 -0
- premiere_cli-0.4.0/src/premiere_cli/desktop_overlay.py +150 -0
- premiere_cli-0.4.0/src/premiere_cli/notify_daemon.py +102 -0
- premiere_cli-0.4.0/src/premiere_cli/panel/host/commands/apply-lut.jsx +195 -0
- premiere_cli-0.4.0/src/premiere_cli/panel/host/commands/export-frame.jsx +257 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/js/main.js +1 -1
- premiere_cli-0.3.0/README.md → premiere_cli-0.4.0/src/premiere_cli.egg-info/PKG-INFO +46 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli.egg-info/SOURCES.txt +4 -0
- premiere_cli-0.4.0/src/premiere_cli.egg-info/requires.txt +8 -0
- premiere_cli-0.4.0/tests/test_desktop_driver.py +41 -0
- premiere_cli-0.3.0/src/premiere_cli/panel/host/commands/apply-lut.jsx +0 -107
- premiere_cli-0.3.0/src/premiere_cli/panel/host/commands/export-frame.jsx +0 -381
- premiere_cli-0.3.0/src/premiere_cli.egg-info/requires.txt +0 -3
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/LICENSE +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/setup.cfg +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/init_project.py +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/log.py +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/.debug +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/CSXS/manifest.xml +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/css/style.css +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/add-adjustment-layer.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/add-audio-keyframes.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/add-custom-metadata-field.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/add-keyframe.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/add-marker-to-project-item.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/add-marker.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/add-text-overlay.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/add-to-render-queue.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/add-to-timeline.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/add-track.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/add-transition.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/adjust-audio-levels.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/apply-audio-effect.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/apply-effect.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/attach-custom-property.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/auto-reframe-sequence.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/batch-add-transitions.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/batch-apply-effect.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/batch-rename-clips.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/batch-set-clips-enabled.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/clear-item-in-out.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/clear-sequence-in-out.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/close-all-source-clips.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/close-sequence.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/close-source-monitor.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/color-correct.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/copy-effect-values.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/copy-effects-between-clips.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/create-bars-and-tone.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/create-bin.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/create-caption-track.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/create-sequence-from-clips.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/create-sequence-from-preset.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/create-sequence.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/create-smart-bin.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/create-subclip.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/create-subsequence.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/debug-qe-inspect.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/debug-qe-try-mutate.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/delete-marker.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/deselect-all-clips.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/detach-proxy.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/duplicate-clip.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/duplicate-sequence.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/encode-file.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/encode-project-item.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/export-aaf.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/export-fcp-xml.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/export-omf.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/export-sequence-as-project.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/export-sequence.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/extract-audio-track.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/extract-selection.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/find-items-by-media-path.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/freeze-frame.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-active-sequence.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-all-project-paths.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-bin-contents.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-clip-adjustment-layer.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-clip-at-playhead.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-clip-at-position.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-clip-links.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-clip-markers.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-clip-speed.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-color-label.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-color-space.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-duplicate-media.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-effect-properties.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-encoder-presets.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-export-file-extension.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-footage-interpretation.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-full-clip-info.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-full-project-overview.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-full-sequence-info.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-graphics-white-luminance.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-insertion-bin.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-item-metadata.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-keyframes.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-mogrt-component.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-next-edit-point.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-offline-media.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-open-projects.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-premiere-state.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-project-info.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-project-item-info.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-project-panel-metadata.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-qe-clip-info.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-render-queue-status.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-sequence-count.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-sequence-in-out.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-sequence-markers-by-type.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-source-monitor-info.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-source-monitor-position.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-target-tracks.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-timeline-gaps.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-timeline-summary.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-total-clip-count.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-track-info.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-unused-media.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-used-media-report.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-value-at-time.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-version-info.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-work-area.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-workspaces.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/get-xmp-metadata.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/import-ae-comps.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/import-fcp-xml.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/import-folder.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/import-image-sequence.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/import-media.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/import-mogrt-from-library.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/import-mogrt.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/import-sequences-from-project.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/insert-from-source.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/inspect-dom-object.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/invert-selection.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/is-work-area-enabled.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/lift-selection.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/link-selection.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/list-available-audio-effects.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/list-available-audio-transitions.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/list-available-effects.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/list-available-transitions.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/list-markers.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/list-project-items.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/lock-track.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/manage-proxies.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/match-frame.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/move-clip-to-track.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/move-clip.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/move-items-to-bin.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/move-playhead-to-edit.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/move-playhead.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/nest-clips.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/open-in-source.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/open-project.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/overwrite-clip-at.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/overwrite-from-source.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/play-source-monitor.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/play-timeline.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/razor-all-tracks.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/redo.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/refresh-media.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/relink-media.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/remove-all-effects.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/remove-effect-by-name.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/remove-effect.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/remove-from-timeline.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/remove-keyframe-range.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/remove-keyframe.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/remove-selected-clips.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/remove-track-intervals.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/remove-transition.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/rename-bin.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/rename-clip.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/rename-project-item.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/rename-track.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/replace-clip-media.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/replace-clip.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/reverse-clip.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/ripple-delete-clip.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/roll-edit.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/save-project-as.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/save-project.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/scene-edit-detection.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/search-project-items.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/select-all-clips.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/select-clips-by-color.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/select-clips-by-name.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/select-clips-in-range.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/select-disabled-clips.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/select-project-item.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-active-project.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-active-sequence.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-all-tracks-targeted.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-anti-alias-quality.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-blend-mode.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-clip-anchor-point.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-clip-enabled.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-clip-opacity.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-clip-pan.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-clip-position.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-clip-properties.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-clip-rotation.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-clip-scale.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-clip-selection.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-clip-speed.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-clip-volume.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-color-label.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-color-value.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-effect-property.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-footage-interpretation.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-frame-blend.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-graphics-white-luminance.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-item-in-out.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-item-metadata.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-item-offline.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-item-start-time.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-keyframe-interpolation.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-override-frame-rate.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-override-pixel-aspect-ratio.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-poster-frame.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-project-panel-metadata.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-scale-to-frame-size.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-scale-width-height.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-sequence-in-out.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-sequence-settings.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-source-in-out.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-target-track.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-time-interpolation.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-track-mute.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-track-visibility.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-transcode-on-ingest.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-uniform-scale.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-work-area.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-workspace.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/set-xmp-metadata.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/slide-edit.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/slip-edit.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/split-clip.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/stabilize-clip.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/stop-playback.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/trim-clip.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/undo.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/unlink-selection.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/unnest-sequence.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/commands/update-marker.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/index.jsx +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/host/presets/default-4k-25fps.sqpreset +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/index.html +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel/js/cs-interface.js +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/panel_install.py +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/templates/empty-project/Adobe Premiere Pro Auto-Save/Untitled--8627e8e5-eccf-e7ea-8c87-b4de7f17596a-2026-07-10_12-30-47.prproj +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli/templates/empty-project/Untitled.prproj +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli.egg-info/dependency_links.txt +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli.egg-info/entry_points.txt +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/src/premiere_cli.egg-info/top_level.txt +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/tests/test_cli.py +0 -0
- {premiere_cli-0.3.0 → premiere_cli-0.4.0}/tests/test_log.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: premiere-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: Drive Adobe Premiere Pro from the command line: a Python CLI plus a bundled CEP bridge panel exposing Premiere's scripting APIs over local HTTP
|
|
5
5
|
License: CC-BY-SA-4.0
|
|
6
6
|
Project-URL: Repository, https://github.com/stefanwebb/premiere-cli
|
|
@@ -9,6 +9,10 @@ Description-Content-Type: text/markdown
|
|
|
9
9
|
License-File: LICENSE
|
|
10
10
|
Provides-Extra: dev
|
|
11
11
|
Requires-Dist: pytest; extra == "dev"
|
|
12
|
+
Provides-Extra: macos-desktop
|
|
13
|
+
Requires-Dist: pyobjc-framework-Cocoa; extra == "macos-desktop"
|
|
14
|
+
Requires-Dist: pyobjc-framework-ApplicationServices; extra == "macos-desktop"
|
|
15
|
+
Requires-Dist: pyobjc-framework-Quartz; extra == "macos-desktop"
|
|
12
16
|
Dynamic: license-file
|
|
13
17
|
|
|
14
18
|
# premiere-cli
|
|
@@ -53,6 +57,35 @@ targets Premiere Pro 2020+ (CEP 10-12); the API behavior notes in
|
|
|
53
57
|
**Premiere Pro 26.3.0 (macOS)** — Premiere's undocumented QE APIs vary by
|
|
54
58
|
build, so re-verify build-sensitive commands on other versions.
|
|
55
59
|
|
|
60
|
+
### macOS desktop automation (optional)
|
|
61
|
+
|
|
62
|
+
Generic UI-automation primitives for driving Premiere's native UI directly
|
|
63
|
+
(Accessibility API + synthetic key/mouse events) — for actions ExtendScript
|
|
64
|
+
can't do on this build: `desktop-take-screenshot`, `desktop-press-key`,
|
|
65
|
+
`desktop-enter-text`, `desktop-enter-text-with-validate`,
|
|
66
|
+
`desktop-move-mouse`, `desktop-click-mouse` — plus a persistent on-screen
|
|
67
|
+
notification (`desktop-notify` / `desktop-dismiss-notifications`)
|
|
68
|
+
independent of any one command's own process. All confirm Premiere is
|
|
69
|
+
frontmost before sending input. macOS only; needs a separate extra so the
|
|
70
|
+
base CLI stays zero-dependency:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
pip install "premiere-cli[macos-desktop]"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The terminal (or whatever process runs the CLI) needs the **Accessibility**
|
|
77
|
+
permission: System Settings > Privacy & Security > Accessibility. Grant it
|
|
78
|
+
to the actual process running `premiere-cli` (Terminal, iTerm, etc.), not
|
|
79
|
+
Premiere Pro.
|
|
80
|
+
|
|
81
|
+
This command **posts real keyboard input to whatever app is frontmost** —
|
|
82
|
+
keep Premiere Pro active and hands off the keyboard/mouse while it runs,
|
|
83
|
+
or the input lands in the wrong app. It refuses to run if it can't confirm
|
|
84
|
+
Premiere is frontmost, or if more than one clip is selected (driving the
|
|
85
|
+
LUT picker with multiple clips selected applies the change to all of
|
|
86
|
+
them). See [docs/DESKTOP_DRIVER_NOTES.md](docs/DESKTOP_DRIVER_NOTES.md)
|
|
87
|
+
for the full set of findings behind how this works.
|
|
88
|
+
|
|
56
89
|
## Use from the command line
|
|
57
90
|
|
|
58
91
|
```bash
|
|
@@ -1,16 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: premiere-cli
|
|
3
|
-
Version: 0.3.0
|
|
4
|
-
Summary: Drive Adobe Premiere Pro from the command line: a Python CLI plus a bundled CEP bridge panel exposing Premiere's scripting APIs over local HTTP
|
|
5
|
-
License: CC-BY-SA-4.0
|
|
6
|
-
Project-URL: Repository, https://github.com/stefanwebb/premiere-cli
|
|
7
|
-
Requires-Python: >=3.10
|
|
8
|
-
Description-Content-Type: text/markdown
|
|
9
|
-
License-File: LICENSE
|
|
10
|
-
Provides-Extra: dev
|
|
11
|
-
Requires-Dist: pytest; extra == "dev"
|
|
12
|
-
Dynamic: license-file
|
|
13
|
-
|
|
14
1
|
# premiere-cli
|
|
15
2
|
|
|
16
3
|
Drive Adobe Premiere Pro from the command line.
|
|
@@ -53,6 +40,35 @@ targets Premiere Pro 2020+ (CEP 10-12); the API behavior notes in
|
|
|
53
40
|
**Premiere Pro 26.3.0 (macOS)** — Premiere's undocumented QE APIs vary by
|
|
54
41
|
build, so re-verify build-sensitive commands on other versions.
|
|
55
42
|
|
|
43
|
+
### macOS desktop automation (optional)
|
|
44
|
+
|
|
45
|
+
Generic UI-automation primitives for driving Premiere's native UI directly
|
|
46
|
+
(Accessibility API + synthetic key/mouse events) — for actions ExtendScript
|
|
47
|
+
can't do on this build: `desktop-take-screenshot`, `desktop-press-key`,
|
|
48
|
+
`desktop-enter-text`, `desktop-enter-text-with-validate`,
|
|
49
|
+
`desktop-move-mouse`, `desktop-click-mouse` — plus a persistent on-screen
|
|
50
|
+
notification (`desktop-notify` / `desktop-dismiss-notifications`)
|
|
51
|
+
independent of any one command's own process. All confirm Premiere is
|
|
52
|
+
frontmost before sending input. macOS only; needs a separate extra so the
|
|
53
|
+
base CLI stays zero-dependency:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pip install "premiere-cli[macos-desktop]"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
The terminal (or whatever process runs the CLI) needs the **Accessibility**
|
|
60
|
+
permission: System Settings > Privacy & Security > Accessibility. Grant it
|
|
61
|
+
to the actual process running `premiere-cli` (Terminal, iTerm, etc.), not
|
|
62
|
+
Premiere Pro.
|
|
63
|
+
|
|
64
|
+
This command **posts real keyboard input to whatever app is frontmost** —
|
|
65
|
+
keep Premiere Pro active and hands off the keyboard/mouse while it runs,
|
|
66
|
+
or the input lands in the wrong app. It refuses to run if it can't confirm
|
|
67
|
+
Premiere is frontmost, or if more than one clip is selected (driving the
|
|
68
|
+
LUT picker with multiple clips selected applies the change to all of
|
|
69
|
+
them). See [docs/DESKTOP_DRIVER_NOTES.md](docs/DESKTOP_DRIVER_NOTES.md)
|
|
70
|
+
for the full set of findings behind how this works.
|
|
71
|
+
|
|
56
72
|
## Use from the command line
|
|
57
73
|
|
|
58
74
|
```bash
|
|
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
|
|
|
6
6
|
name = "premiere-cli"
|
|
7
7
|
# Keep in lockstep with premiere_cli.__version__ and PANEL_VERSION in
|
|
8
8
|
# src/premiere_cli/panel/js/main.js.
|
|
9
|
-
version = "0.
|
|
9
|
+
version = "0.4.0"
|
|
10
10
|
description = "Drive Adobe Premiere Pro from the command line: a Python CLI plus a bundled CEP bridge panel exposing Premiere's scripting APIs over local HTTP"
|
|
11
11
|
readme = "README.md"
|
|
12
12
|
license = {text = "CC-BY-SA-4.0"}
|
|
@@ -24,6 +24,14 @@ premiere-log = "premiere_cli.log:main"
|
|
|
24
24
|
|
|
25
25
|
[project.optional-dependencies]
|
|
26
26
|
dev = ["pytest"]
|
|
27
|
+
# Only needed for `desktop-set-input-lut` (macOS only) — kept out of the base
|
|
28
|
+
# install so `pipx install premiere-cli` stays zero-dependency for everyone
|
|
29
|
+
# who doesn't need UI automation.
|
|
30
|
+
macos-desktop = [
|
|
31
|
+
"pyobjc-framework-Cocoa",
|
|
32
|
+
"pyobjc-framework-ApplicationServices",
|
|
33
|
+
"pyobjc-framework-Quartz",
|
|
34
|
+
]
|
|
27
35
|
|
|
28
36
|
[tool.setuptools.packages.find]
|
|
29
37
|
where = ["src"]
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import argparse
|
|
4
4
|
import json
|
|
5
|
+
import platform
|
|
5
6
|
import re
|
|
6
7
|
import sys
|
|
7
8
|
import urllib.error
|
|
@@ -27,6 +28,32 @@ def _validate_response(parsed_json) -> dict:
|
|
|
27
28
|
_INTERVAL_LINE_RE = re.compile(r"^(\d{2,3}:\d{2}:\d{2})\s*-\s*(\d{2,3}:\d{2}:\d{2})$")
|
|
28
29
|
|
|
29
30
|
|
|
31
|
+
def _load_desktop_driver(subcommand: str):
|
|
32
|
+
"""Import `desktop_driver`, or exit with a well-formed JSON error if
|
|
33
|
+
this isn't macOS or the `macos-desktop` extra isn't installed — the
|
|
34
|
+
same two-check preamble every `desktop-*` subcommand needs before it
|
|
35
|
+
can do anything."""
|
|
36
|
+
if platform.system() != "Darwin":
|
|
37
|
+
print(
|
|
38
|
+
json.dumps({"ok": False, "error": f"{subcommand} is macOS only (drives the native Accessibility API)"}),
|
|
39
|
+
file=sys.stderr,
|
|
40
|
+
)
|
|
41
|
+
sys.exit(1)
|
|
42
|
+
try:
|
|
43
|
+
from premiere_cli import desktop_driver
|
|
44
|
+
except ImportError as exc:
|
|
45
|
+
print(
|
|
46
|
+
json.dumps({
|
|
47
|
+
"ok": False,
|
|
48
|
+
"error": f"missing the macOS desktop-driver extra ({exc}) — install with: "
|
|
49
|
+
"pip install 'premiere-cli[macos-desktop]'",
|
|
50
|
+
}),
|
|
51
|
+
file=sys.stderr,
|
|
52
|
+
)
|
|
53
|
+
sys.exit(1)
|
|
54
|
+
return desktop_driver
|
|
55
|
+
|
|
56
|
+
|
|
30
57
|
def _parse_intervals_file(path: str) -> list:
|
|
31
58
|
"""Parse a remove_pauses.py-style cuts file ("MM:SS:FF - MM:SS:FF" per
|
|
32
59
|
line, blank lines ignored) into [{"start": ..., "end": ...}, ...].
|
|
@@ -118,6 +145,73 @@ def main() -> None:
|
|
|
118
145
|
help="Directory the project (or series) is created under",
|
|
119
146
|
)
|
|
120
147
|
|
|
148
|
+
desktop_take_screenshot_parser = subparsers.add_parser(
|
|
149
|
+
"desktop-take-screenshot",
|
|
150
|
+
help="Confirm Premiere is frontmost, then save a full-screen screenshot (macOS only)",
|
|
151
|
+
)
|
|
152
|
+
desktop_take_screenshot_parser.add_argument("output_path", help="File path to save the screenshot to (e.g. /tmp/frame.png)")
|
|
153
|
+
|
|
154
|
+
desktop_press_key_parser = subparsers.add_parser(
|
|
155
|
+
"desktop-press-key",
|
|
156
|
+
help="Confirm Premiere is frontmost, then send one synthetic key press (macOS only)",
|
|
157
|
+
)
|
|
158
|
+
desktop_press_key_parser.add_argument(
|
|
159
|
+
"--key", required=True,
|
|
160
|
+
help="Key name (e.g. 'return', 'escape', 'up', 'a') or a decimal virtual keycode",
|
|
161
|
+
)
|
|
162
|
+
desktop_press_key_parser.add_argument(
|
|
163
|
+
"--modifier", dest="modifiers", action="append", default=[],
|
|
164
|
+
choices=["command", "cmd", "shift", "option", "alt", "control", "ctrl"],
|
|
165
|
+
help="Modifier held during the press; repeat for multiple (e.g. --modifier cmd --modifier shift)",
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
desktop_enter_text_parser = subparsers.add_parser(
|
|
169
|
+
"desktop-enter-text",
|
|
170
|
+
help="Confirm Premiere is frontmost, then type literal text at the current insertion point, unvalidated (macOS only)",
|
|
171
|
+
)
|
|
172
|
+
desktop_enter_text_parser.add_argument("text", help="Text to type")
|
|
173
|
+
|
|
174
|
+
desktop_enter_text_with_validate_parser = subparsers.add_parser(
|
|
175
|
+
"desktop-enter-text-with-validate",
|
|
176
|
+
help="Confirm Premiere is frontmost, type text into the focused field, and verify it read back correctly (macOS only). "
|
|
177
|
+
"CAVEAT: Premiere's own panels don't reliably report focus via AX — this often false-fails against them; "
|
|
178
|
+
"prefer desktop-enter-text + a screenshot for Premiere's own UI",
|
|
179
|
+
)
|
|
180
|
+
desktop_enter_text_with_validate_parser.add_argument("text", help="Text to type")
|
|
181
|
+
desktop_enter_text_with_validate_parser.add_argument(
|
|
182
|
+
"--attempts", type=int, default=3, help="Retry count if the read-back doesn't match (default: 3)",
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
desktop_move_mouse_parser = subparsers.add_parser(
|
|
186
|
+
"desktop-move-mouse",
|
|
187
|
+
help="Confirm Premiere is frontmost, then move the mouse cursor to screen coordinates (macOS only)",
|
|
188
|
+
)
|
|
189
|
+
desktop_move_mouse_parser.add_argument("--x", type=float, required=True, help="Target x coordinate")
|
|
190
|
+
desktop_move_mouse_parser.add_argument("--y", type=float, required=True, help="Target y coordinate")
|
|
191
|
+
|
|
192
|
+
desktop_click_mouse_parser = subparsers.add_parser(
|
|
193
|
+
"desktop-click-mouse",
|
|
194
|
+
help="Confirm Premiere is frontmost, then click the mouse — at given coordinates, or at the current cursor position (macOS only)",
|
|
195
|
+
)
|
|
196
|
+
desktop_click_mouse_parser.add_argument("--x", type=float, default=None, help="Click x coordinate (omit with --y to click at the current cursor position)")
|
|
197
|
+
desktop_click_mouse_parser.add_argument("--y", type=float, default=None, help="Click y coordinate (omit with --x to click at the current cursor position)")
|
|
198
|
+
desktop_click_mouse_parser.add_argument("--button", choices=["left", "right"], default="left", help="Mouse button (default: left)")
|
|
199
|
+
|
|
200
|
+
desktop_notify_parser = subparsers.add_parser(
|
|
201
|
+
"desktop-notify",
|
|
202
|
+
help="Show (or update, if already showing) an always-on-top notification window pinned top-right of the screen (macOS only)",
|
|
203
|
+
)
|
|
204
|
+
desktop_notify_parser.add_argument("message", help="Text to display")
|
|
205
|
+
desktop_notify_parser.add_argument(
|
|
206
|
+
"--state", choices=["waiting", "driving", "done", "info"], default="info",
|
|
207
|
+
help="Accent color: waiting=amber, driving=red, done=green, info=slate (default: info)",
|
|
208
|
+
)
|
|
209
|
+
|
|
210
|
+
subparsers.add_parser(
|
|
211
|
+
"desktop-dismiss-notifications",
|
|
212
|
+
help="Close the notification window opened by desktop-notify, if one is showing (macOS only)",
|
|
213
|
+
)
|
|
214
|
+
|
|
121
215
|
create_sequence_parser = subparsers.add_parser("create-sequence", help="Create a new sequence")
|
|
122
216
|
create_sequence_parser.add_argument("--name", required=True, help="Name of the new sequence")
|
|
123
217
|
create_sequence_parser.add_argument(
|
|
@@ -2173,6 +2267,30 @@ def main() -> None:
|
|
|
2173
2267
|
from premiere_cli import init_project
|
|
2174
2268
|
|
|
2175
2269
|
sys.exit(init_project.init_project(args.project_name, args.series, args.base_dir))
|
|
2270
|
+
if args.subcommand == "desktop-take-screenshot":
|
|
2271
|
+
desktop_driver = _load_desktop_driver(args.subcommand)
|
|
2272
|
+
sys.exit(desktop_driver.take_screenshot(args.output_path, port=args.port))
|
|
2273
|
+
if args.subcommand == "desktop-press-key":
|
|
2274
|
+
desktop_driver = _load_desktop_driver(args.subcommand)
|
|
2275
|
+
sys.exit(desktop_driver.press_key_by_name(args.key, modifiers=args.modifiers, port=args.port))
|
|
2276
|
+
if args.subcommand == "desktop-enter-text":
|
|
2277
|
+
desktop_driver = _load_desktop_driver(args.subcommand)
|
|
2278
|
+
sys.exit(desktop_driver.enter_text(args.text, port=args.port))
|
|
2279
|
+
if args.subcommand == "desktop-enter-text-with-validate":
|
|
2280
|
+
desktop_driver = _load_desktop_driver(args.subcommand)
|
|
2281
|
+
sys.exit(desktop_driver.enter_text_with_validate(args.text, attempts=args.attempts, port=args.port))
|
|
2282
|
+
if args.subcommand == "desktop-move-mouse":
|
|
2283
|
+
desktop_driver = _load_desktop_driver(args.subcommand)
|
|
2284
|
+
sys.exit(desktop_driver.move_mouse(args.x, args.y, port=args.port))
|
|
2285
|
+
if args.subcommand == "desktop-click-mouse":
|
|
2286
|
+
desktop_driver = _load_desktop_driver(args.subcommand)
|
|
2287
|
+
sys.exit(desktop_driver.click_mouse(x=args.x, y=args.y, button=args.button, port=args.port))
|
|
2288
|
+
if args.subcommand == "desktop-notify":
|
|
2289
|
+
desktop_driver = _load_desktop_driver(args.subcommand)
|
|
2290
|
+
sys.exit(desktop_driver.notify(args.message, state=args.state))
|
|
2291
|
+
if args.subcommand == "desktop-dismiss-notifications":
|
|
2292
|
+
desktop_driver = _load_desktop_driver(args.subcommand)
|
|
2293
|
+
sys.exit(desktop_driver.dismiss_notifications())
|
|
2176
2294
|
|
|
2177
2295
|
if args.subcommand == "create-sequence":
|
|
2178
2296
|
command_args = {"name": args.name, "bin": args.bin, "fps": args.fps, "width": args.width, "height": args.height}
|