forked from kenzuya/unshackle
- Update version from 1.4.4 to 1.4.5 in core/__init__.py - Add comprehensive changelog entry for v1.4.5 with all changes since 1.4.4 - Include enhanced CDM support, caching improvements, and bug fixes
17 KiB
17 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.4.5] - 2025-09-09
Added
- Enhanced CDM Key Caching: Improved key caching and session management for L1/L2 devices
- Optimized
get_cached_keys_if_existsfunctionality for better performance with L1/L2 devices - Enhanced cached key retrieval logic with improved session handling
- Optimized
- Widevine Common Certificate Fallback: Added fallback to Widevine common certificate for L1 devices
- Improved compatibility for L1 devices when service certificates are unavailable
- Enhanced Vault Loading: Improved vault loading and key copying logic
- Better error handling and key management in vault operations
- PSSH Display Optimization: Truncated PSSH string display in non-debug mode for cleaner output
- CDM Error Messaging: Added error messages for missing service certificates in CDM sessions
Changed
- Dynamic Version Headers: Updated User-Agent headers to use dynamic version strings
- DecryptLabsRemoteCDM now uses dynamic version import instead of hardcoded version
- Intelligent CDM Caching: Implemented intelligent caching system for CDM license requests
- Enhanced caching logic reduces redundant license requests and improves performance
- Enhanced Tag Handling: Improved tag handling for TV shows and movies from Simkl data
- Better metadata processing and formatting for improved media tagging
Fixed
- CDM Session Management: Clean up session data when retrieving cached keys
- Remove decrypt_labs_session_id and challenge from session when cached keys exist but there are missing kids
- Ensures clean state for subsequent requests and prevents session conflicts
- Tag Formatting: Fixed formatting issues in tag processing
- Import Order: Fixed import order issues in tags module
[1.4.4] - 2025-09-02
Added
- Enhanced DecryptLabs CDM Support: Comprehensive remote CDM functionality
- Full support for Widevine, PlayReady, and ChromeCDM through DecryptLabsRemoteCDM
- Enhanced session management and caching support for remote WV/PR operations
- Support for cached keys and improved license handling
- New CDM configurations for Chrome and PlayReady devices with updated User-Agent and service certificate
- Advanced Configuration Options: New device and language preferences
- Added configuration options for device certificate status list
- Enhanced language preference settings
Changed
- DRM Decryption Enhancements: Streamlined decryption process
- Simplified decrypt method by removing unused parameter and streamlined logic
- Improved DecryptLabs CDM configurations with better device support
Fixed
- Matroska Tag Compliance: Enhanced media container compatibility
- Fixed Matroska tag compliance with official specification
- Application Branding: Cleaned up version display
- Removed old devine version reference from banner to avoid developer confusion
- Updated branding while maintaining original GNU license compliance
- IP Information Handling: Improved geolocation services
- Enhanced get_ip_info functionality with better failover handling
- Added support for 429 error handling and multiple API provider fallback
- Implemented cached IP info retrieval with fallback tester to avoid rate limiting
- Dependencies: Streamlined package requirements
- Removed unnecessary data extra requirement from langcodes
Removed
- Deprecated version references in application banner for clarity
[1.4.3] - 2025-08-20
Added
- Cached IP info helper for region detection
- New
get_cached_ip_info()with 24h cache and provider rotation (ipinfo/ipapi) with 429 handling. - Reduces external calls and stabilizes non-proxy region lookups for caching/logging.
- New
Changed
- DRM decryption selection is fully configuration-driven
- Widevine and PlayReady now select the decrypter based solely on
decryptionin YAML (including per-service mapping). - Shaka Packager remains the default decrypter when not specified.
dl.pylogs the chosen tool based on the resolved configuration.
- Widevine and PlayReady now select the decrypter based solely on
- Geofencing and proxy verification improvements
- Safer geofence checks with error handling and clearer logs.
- Always verify proxy exit region via live IP lookup; fallback to proxy parsing on failure.
- Example config updated to default to Shaka
unshackle.yaml/example now setsdecryption.default: shaka(service overrides still supported).
Removed
- Deprecated parameter
use_mp4decrypt- Removed from
Widevine.decrypt()andPlayReady.decrypt()and all callsites. - Internal naming switched from mp4decrypt-specific flags to generic
decrypterselection.
- Removed from
[1.4.2] - 2025-08-14
Added
- Session Management for API Requests: Enhanced API reliability with retry logic
- Implemented session management for tags functionality with automatic retry mechanisms
- Improved API request stability and error handling
- Series Year Configuration: New
series_yearoption for title naming control- Added configurable
series_yearoption to control year inclusion in series titles - Enhanced YAML configuration with series year handling options
- Added configurable
- Audio Language Override: New audio language selection option
- Added
audio_languageoption to override default language selection for audio tracks - Provides more granular control over audio track selection
- Added
- Vault Key Reception Control: Enhanced vault security options
- Added
no_pushoption to Vault and its subclasses to control key reception - Improved key management security and flexibility
- Added
Changed
- HLS Segment Processing: Enhanced segment retrieval and merging capabilities
- Enhanced segment retrieval to allow all file types for better compatibility
- Improved segment merging with recursive file search and fallback to binary concatenation
- Fixed issues with VTT files from HLS not being found correctly due to format changes
- Added cleanup of empty segment directories after processing
- Documentation: Updated README.md with latest information
Fixed
- Audio Track Selection: Improved per-language logic for audio tracks
- Adjusted
per_languagelogic to ensure correct audio track selection - Fixed issue where all tracks for selected language were being downloaded instead of just the intended ones
- Adjusted
[1.4.1] - 2025-08-08
Added
- Title Caching System: Intelligent title caching to reduce redundant API calls
- Configurable title caching with 30-minute default cache duration
- 24-hour fallback cache on API failures for improved reliability
- Region-aware caching to handle geo-restricted content properly
- SHA256 hashing for cache keys to handle complex title IDs
- Added
--no-cacheCLI flag to bypass caching when needed - Added
--reset-cacheCLI flag to clear existing cache data - New cache configuration variables in config system
- Documented caching options in example configuration file
- Significantly improves performance when debugging or modifying CLI parameters
- Enhanced Tagging Configuration: New options for customizing tag behavior
- Added
tag_group_nameconfig option to control group name inclusion in tags - Added
tag_imdb_tmdbconfig option to control IMDB/TMDB details in tags - Added Simkl API endpoint support as fallback when no TMDB API key is provided
- Enhanced tag_file function to prioritize provided TMDB ID when
--tmdbflag is used - Improved TMDB ID handling with better prioritization logic
- Added
Changed
- Language Selection Enhancement: Improved default language handling
- Updated language option default to 'orig' when no
-lflag is set - Avoids hardcoded 'en' default and respects original content language
- Updated language option default to 'orig' when no
- Tagging Logic Improvements: Simplified and enhanced tagging functionality
- Simplified Simkl search logic with soft-fail when no results found
- Enhanced tag_file function with better TMDB ID prioritization
- Improved error handling in tagging operations
Fixed
- Subtitle Processing: Enhanced subtitle filtering for edge cases
- Fixed ValueError in subtitle filtering for multiple colons in time references
- Improved handling of subtitles containing complex time formatting
- Better error handling for malformed subtitle timestamps
Removed
- Docker Support: Removed Docker configuration from repository
- Removed Dockerfile and .dockerignore files
- Cleaned up README.md Docker-related documentation
- Focuses on direct installation methods
[1.4.0] - 2025-08-05
Added
- HLG Transfer Characteristics Preservation: Enhanced video muxing to preserve HLG color metadata
- Added automatic detection of HLG video tracks during muxing process
- Implemented
--color-transfer-characteristics 0:18argument for mkvmerge when processing HLG content - Prevents incorrect conversion from HLG (18) to BT.2020 (14) transfer characteristics
- Ensures proper HLG playback support on compatible hardware without manual editing
- Original Language Support: Enhanced language selection with 'orig' keyword support
- Added support for 'orig' language selector for both video and audio tracks
- Automatically detects and uses the title's original language when 'orig' is specified
- Improved language processing logic with better duplicate handling
- Enhanced help text to document original language selection usage
- Forced Subtitle Support: Added option to include forced subtitle tracks
- New functionality to download and include forced subtitle tracks alongside regular subtitles
- WebVTT Subtitle Filtering: Enhanced subtitle processing capabilities
- Added filtering for unwanted cues in WebVTT subtitles
- Improved subtitle quality by removing unnecessary metadata
Changed
- DRM Track Decryption: Improved DRM decryption track selection logic
- Enhanced
get_drm_for_cdm()method usage for better DRM-CDM matching - Added warning messages when no matching DRM is found for tracks
- Improved error handling and logging for DRM decryption failures
- Enhanced
- Series Tree Representation: Enhanced episode tree display formatting
- Updated series tree to show season breakdown with episode counts
- Improved visual representation with "S{season}({count})" format
- Better organization of series information in console output
- Hybrid Processing UI: Enhanced extraction and conversion processes
- Added dynamic spinning bars to follow the rest of the codebase design
- Improved visual feedback during hybrid HDR processing operations
- Track Selection Logic: Enhanced multi-track selection capabilities
- Fixed track selection to support combining -V, -A, -S flags properly
- Improved flexibility in selecting multiple track types simultaneously
- Service Subtitle Support: Added configuration for services without subtitle support
- Services can now indicate if they don't support subtitle downloads
- Prevents unnecessary subtitle download attempts for unsupported services
- Update Checker: Enhanced update checking logic and cache handling
- Improved rate limiting and caching mechanisms for update checks
- Better performance and reduced API calls to GitHub
Fixed
- PlayReady KID Extraction: Enhanced KID extraction from PSSH data
- Added base64 support and XML parsing for better KID detection
- Fixed issue where only one KID was being extracted for certain services
- Improved multi-KID support for PlayReady protected content
- Dolby Vision Detection: Improved DV codec detection across all formats
- Fixed detection of dvhe.05.06 codec which was not being recognized correctly
- Enhanced detection logic in Episode and Movie title classes
- Better support for various Dolby Vision codec variants
[1.3.0] - 2025-08-03
Added
- mp4decrypt Support: Alternative DRM decryption method using mp4decrypt from Bento4
- Added
mp4decryptbinary detection and support in binaries module - New
decryptionconfiguration option in unshackle.yaml for service-specific decryption methods - Enhanced PlayReady and Widevine DRM classes with mp4decrypt decryption support
- Service-specific decryption mapping allows choosing between
shakaandmp4decryptper service - Improved error handling and progress reporting for mp4decrypt operations
- Added
- Scene Naming Configuration: New
scene_namingoption for controlling file naming conventions- Added scene naming logic to movie, episode, and song title classes
- Configurable through unshackle.yaml to enable/disable scene naming standards
- Terminal Cleanup and Signal Handling: Enhanced console management
- Implemented proper terminal cleanup on application exit
- Added signal handling for graceful shutdown in ComfyConsole
- Configuration Template: New
unshackle-example.yamltemplate file- Replaced main
unshackle.yamlwith example template to prevent git conflicts - Users can now modify their local config without affecting repository updates
- Replaced main
- Enhanced Credential Management: Improved CDM and vault configuration
- Expanded credential management documentation in configuration
- Enhanced CDM configuration examples and guidelines
- Video Transfer Standards: Added
Unspecified_Imageoption to Transfer enum- Implements ITU-T H.Sup19 standard value 2 for image characteristics
- Supports still image coding systems and unknown transfer characteristics
- Update Check Rate Limiting: Enhanced update checking system
- Added configurable update check intervals to prevent excessive API calls
- Improved rate limiting for GitHub API requests
Changed
- DRM Decryption Architecture: Enhanced decryption system with dual method support
- Updated
dl.pyto handle service-specific decryption method selection - Refactored
Configclass to manage decryption method mapping per service - Enhanced DRM decrypt methods with
use_mp4decryptparameter for method selection
- Updated
- Error Handling: Improved exception handling in Hybrid class
- Replaced log.exit calls with ValueError exceptions for better error propagation
- Enhanced error handling consistency across hybrid processing
Fixed
- Proxy Configuration: Fixed proxy server mapping in configuration
- Renamed 'servers' to 'server_map' in proxy configuration to resolve Nord/Surfshark naming conflicts
- Updated configuration structure for better compatibility with proxy providers
- HTTP Vault: Improved URL handling and key retrieval logic
- Fixed URL processing issues in HTTP-based key vaults
- Enhanced key retrieval reliability and error handling
[1.2.0] - 2025-07-30
Added
- Update Checker: Automatic GitHub release version checking on startup
- Configurable update notifications via
update_checkssetting in unshackle.yaml - Non-blocking HTTP requests with 5-second timeout for performance
- Smart semantic version comparison supporting all version formats (x.y.z, x.y, x)
- Graceful error handling for network issues and API failures
- User-friendly update notifications with current → latest version display
- Direct links to GitHub releases page for easy updates
- Configurable update notifications via
- HDR10+ Support: Enhanced HDR10+ metadata processing for hybrid tracks
- HDR10+ tool binary support (
hdr10plus_tool) added to binaries module - HDR10+ to Dolby Vision conversion capabilities in hybrid processing
- Enhanced metadata extraction for HDR10+ content
- HDR10+ tool binary support (
- Duration Fix Handling: Added duration correction for video and hybrid tracks
- Temporary Directory Management: Automatic creation of temp directories for attachment downloads
Changed
- Enhanced configuration system with new
update_checksboolean option (defaults to true) - Updated sample unshackle.yaml with update checker configuration documentation
- Improved console styling consistency using
bright_blackfor dimmed text - Environment Dependency Check: Complete overhaul with detailed categorization and status summary
- Organized dependencies by category (Core, HDR, Download, Subtitle, Player, Network)
- Enhanced status reporting with compact summary display
- Improved tool requirement tracking and missing dependency alerts
- Hybrid Track Processing: Significant improvements to HDR10+ and Dolby Vision handling
- Enhanced metadata extraction and processing workflows
- Better integration with HDR processing tools
Removed
- Docker Workflow: Removed Docker build and publish GitHub Actions workflow for manual builds
[1.1.0] - 2025-07-29
Added
- HDR10+DV Hybrid Processing: New
-r HYBRIDcommand for processing HDR10 and Dolby Vision tracks- Support for hybrid HDR processing and injection using dovi_tool
- New hybrid track processing module for seamless HDR10/DV conversion
- Automatic detection and handling of HDR10 and DV metadata
- Support for HDR10 and DV tracks in hybrid mode for EXAMPLE service
- Binary availability check for dovi_tool in hybrid mode operations
- Enhanced track processing capabilities for HDR content
Fixed
- Import order issues and missing json import in hybrid processing
- UV installation process and error handling improvements
- Binary search functionality updated to use
binaries.find
Changed
- Updated package version from 1.0.2 to 1.1.0
- Enhanced dl.py command processing for hybrid mode support
- Improved core titles (episode/movie) processing for HDR content
- Extended tracks module with hybrid processing capabilities