Skip to content

Releases: WheheoHu/pybmd

Resolve 21.0.2 Update

Choose a tag to compare

@WheheoHu WheheoHu released this 10 Jul 06:34

2026.2.0

API

Changes for DaVinci Resolve 21.0.2

Resolve

  • Add disable_background_tasks_for_current_resolve_session() - Disables all background tasks for the current Resolve session

Project

  • Add reset_intellisearch_analysis() - Clears Intellisearch analysis data (Studio/AI)
  • Add generate_speech() - Generates an audio MediaPoolItem from SpeechGenerationSettings and (optionally) adds it to the timeline at a given timecode (Studio/AI)

MediaPoolItem

  • Add perform_audio_classification() - Classifies the clip's audio into categories/subcategories (Studio/AI)
  • Add clear_audio_classification() - Clears the clip's audio classification (Studio/AI)
  • Add remove_motion_blur() - Applies motion deblur, returns the new MediaPoolItem (Studio/AI)
  • Add analyze_for_intellisearch() - Runs Intellisearch analysis (Studio/AI)
  • Add analyze_for_slate() - Runs Slate analysis using a MarkerColor (Studio/AI)
  • Update transcribe_audio() - Add optional use_speaker_detection parameter

Folder

  • Add perform_audio_classification(), clear_audio_classification(), analyze_for_intellisearch(), analyze_for_slate() (Studio/AI)
  • Add remove_motion_blur() - Returns a list of [original, new] MediaPoolItem pairs (Studio/AI)
  • Update transcribe_audio() - Add optional use_speaker_detection parameter

settings module

  • Add SpeechGenerationSettings (Pydantic model) for Project.generate_speech
  • Add MotionDeblurSettings (Pydantic model) for remove_motion_blur
  • Add MarkerColor enum for analyze_for_slate

Fixes

MediaPoolItem

  • Fix delete_marker_by_color() to call DeleteMarkersByColor (correct MediaPoolItem API name)
  • Fix update_marker_custom_data() to call UpdateMarkerCustomData (was the typo UpdataMarkerCustomData); updata_marker_custom_data() kept as a deprecated alias
  • Fix get_clip_property() / get_metadata() return type to str | dict and make the key optional (returns a dict of all properties when no key is given)

TimelineItem

  • Add str | dict return annotation to get_property()

Gallery / GalleryStillAlbum

  • Fix Gallery.get_album_name() and GalleryStillAlbum.set_label() to unwrap the underlying Resolve object before passing it to the API

MediaPool / MediaStorage

  • Fix MediaPool.delete_clip_mattes(), MediaPool.get_clip_matte_list() and MediaStorage.add_clip_mattes_to_media_pool() to unwrap the MediaPoolItem before passing it to the API

RenderSetting Update

Choose a tag to compare

@WheheoHu WheheoHu released this 19 May 13:08

2026.1.2

Project

  • set_render_settings() - Now supports partial updates. Only fields explicitly provided on the RenderSetting object are sent to DaVinci Resolve (via model_dump(exclude_unset=True)); any unset field keeps its current value in DR
  • RenderSetting - Breaking: all fields are now optional with no preset defaults (X | None = None). Previously every field was required. Construct with only the fields you want to change, e.g. RenderSetting(FrameRate=24.0)

Bugfix and Sample Update

Choose a tag to compare

@WheheoHu WheheoHu released this 12 May 08:58

2026.1.1

API

Timeline

  • add_marker() - Change frame_id parameter type from str to int
  • add_marker() - Change duration parameter type from str to int (counted by frames)

TimelineItem

  • add_marker() - Change frame_id parameter type from str to int
  • add_marker() - Change duration parameter type from str to int (counted by frames)

Docs

  • Update samples for StillManager

API Enhancements

Choose a tag to compare

@WheheoHu WheheoHu released this 12 Feb 08:31

2026.1.0

Infrastructure

Windows Support Fix

  • Set PYTHON3HOME environment variable for virtual environments on Windows (e.g., created by uv) to fix compatibility issues with Windows virtual environments

API Enhancements

Version Management System

  • Introduce comprehensive version checking system for API compatibility with DaVinci Resolve versions
  • Add version_info.py module with Version, APIStatus, and VersionConstraint classes
  • Create VersionRegistry in version_registry.py to centralize API version constraints
  • Add version management decorators (@require_version, @deprecated_in_version) for automatic compatibility checks
  • Update multiple modules (timeline_item.py, gallery.py, media_pool.py, project.py, etc.) with version decorators

Type Safety Improvements

  • Create _resolve_types.py to define protocols for BMDModule and ResolveObject
  • Add type casting and improved type hints across modules (_init_bmd.py, timeline.py, timeline_item.py)
  • Enhanced error handling in timeline retrieval functions with proper exceptions

Refactoring

Pydantic Models

  • RenderSetting (settings.py): Convert from dataclass to Pydantic BaseModel with comprehensive validation

    • Add Field with descriptions for all properties (moved from inline comments)
    • Add type constraints using Literal for restricted values:
      • UniqueFilenameStyle: Literal[0, 1] (0 for prefix, 1 for suffix)
      • AlphaMode: Literal[0, 1] (0 for Premultiplied, 1 for Straight)
      • SubtitleFormat: Literal["BurnIn", "EmbeddedCaptions", "SeparateFile"]
    • Add numeric validation constraints (ge=0 for MarkIn/MarkOut, gt=0 for dimensions/rates)
    • Add VideoQuality type as int | Literal["Least", "Low", "Medium", "High", "Best"]
    • Add custom field validators for VideoQuality and MarkOut validation
  • Item_Info (media_storage.py): Convert from dataclass to Pydantic BaseModel

    • Add field descriptions and validation for start_frame and end_frame (ge=0)
    • Update add_item_list_to_media_pool() to use model_dump() instead of asdict()
  • Settings Module Cleanup:

    • Remove SettingParameter legacy class
    • Remove _get_resolve_object() and _get_resolve_constant() helper functions
    • Simplify imports and directly use _resolve_object from _init_bmd
    • Convert all settings classes to use Pydantic's BaseModel and Field
    • Add BaseIndexSetting base class with model_serializer for index-based serialization

UI Components

  • Update UI_Dispatcher to ignore unresolved attribute warnings
  • Fix UI_Manager initialization to correctly assign _ui_manager from _object

Data Handling

  • Update project.py and project_manager.py to use Pydantic's model_dump() for data serialization
  • Refactor export_type.py to remove unnecessary checks and directly use the resolved object

Toolkits

  • Adjust toolkit functions to return empty lists instead of None for consistency
  • Improve error handling in timeline retrieval functions

Happy New Year 2026

Choose a tag to compare

@WheheoHu WheheoHu released this 01 Jan 05:23

2026.0.1

API

TimelineItem

  • Modify get_property() - Returns the value of the specified property key or all properties if no key is provided
  • Add set_property() - Sets the value of the specified property key

QoL improvement

Choose a tag to compare

@WheheoHu WheheoHu released this 21 Dec 11:16

2025.3.3

Toolkits

StillManager

  • export_still now includes still details in the returned dictionary

Refactoring

Choose a tag to compare

@WheheoHu WheheoHu released this 16 Dec 08:28

2025.3.2

Refactoring

  • Add WrapperBase class to reduce code duplication in wrapper classes

Typo and Bug Fix

Choose a tag to compare

@WheheoHu WheheoHu released this 11 Dec 08:16

2025.3.1

Fixes

  • Fix typo gallert_still_album -> gallery_still_album in gallery.py
  • Fix typo ture -> true in docstrings (gallery.py, gallery_still_album.py)
  • Fix typo MeidaPoolItem -> MediaPoolItem in timeline_item.py
  • Fix typo meida -> media in docstrings (timeline_item.py, media_pool.py)
  • Fix typo succssful -> successful in docstrings (project.py, resolve.py)
  • Fix typo delet_marker_at_frame -> delete_marker_at_frame in timeline_item.py
  • Fix typo fram_num -> frame_num in timeline_item.py
  • Fix typo stero_eye -> stereo_eye in media_storage.py
  • Fix typo add_item_list_to_meida_pool -> add_item_list_to_media_pool in media_storage.py
  • Fix typo pen davinci -> open davinci in resolve.py docstring
  • Fix typo Porject -> Project in CHANGELOG.md
  • Fix bug in ProjectManager.import_project()

Resolve 20.3.0 Update

Choose a tag to compare

@WheheoHu WheheoHu released this 02 Dec 06:46

2025.3.0

API

Changes for DaVinci Resolve 20.3.0

Resolve

  • Add get_fairlight_presets() - Returns a list of Fairlight preset names

Project

  • Add apply_fairlight_preset_to_current_timeline() - Applies a Fairlight preset to the current timeline

ProjectManager

  • Update create_project() - Now supports optional media_location_path parameter

GalleryStillAlbum

  • Add import_stills() - Imports stills from file paths into the album

Timeline

  • Add adaptive audio track subtypes ADAPTIVE_25 through ADAPTIVE_36 to OptionalSubTrackType enum

Toolkits

  • Fix bug in StillManager.grab_all_still() method with incorrect timeline timecode handling
  • Modify StillManager.export_still() to include clean_still_album parameter to control album cleanup after export,default is False.

StillManager Update

Choose a tag to compare

@WheheoHu WheheoHu released this 19 Nov 09:31

2025.2.5

API

Gallery

  • Fix set_current_still_album() to unwrap the Resolve album object before passing it to the API

Toolkits

StillManager

  • Create a dedicated still album named StillManager_{TimelineName} when create_gallery_still_album() is available (Resolve ≥ 19.1.0)
  • Fall back to the previously selected album on older Resolve versions and log failures gracefully
  • Add grab_all_still() method to grab stills for all clips in the current timeline at a specified position (default: 0.5)