mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2026-03-17 16:47:29 +00:00
Compare commits
2 Commits
cacb695093
...
c83b7a853e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c83b7a853e | ||
|
|
b70c350d0b |
40
CHANGELOG.md
40
CHANGELOG.md
@@ -5,6 +5,46 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [2.4.0] - 2026-02-03
|
||||
|
||||
### Added
|
||||
|
||||
- **MonaLisa DRM**: Added MonaLisa DRM support in the core infrastructure
|
||||
- Includes MonaLisa CDM module and decryption path
|
||||
- Suppresses noisy Shaka Packager message specific to MonaLisa decryption
|
||||
- **Remote PlayReady CDM**: Added PlayReady CDM support via pyplayready `RemoteCdm`
|
||||
- `serve` now supports PlayReady alongside Widevine
|
||||
- Adds server-side validation improvements for RemoteCDM
|
||||
- **DRM Licensing Binary**: Added `ML-Worker` to environment dependency checks for DRM licensing
|
||||
- **VPN**: Added Gluetun VPN integration
|
||||
- Improved connection display
|
||||
- Expanded Windscribe support through Gluetun
|
||||
- **Audio**: Added codec lists and split muxing
|
||||
- **Video**: Detect interlaced scan type from MPD manifests
|
||||
- **Documentation**: Expanded configuration docs (CONFIG.md and new docs/* guides)
|
||||
|
||||
### Changed
|
||||
|
||||
- **Downloader**: Improved `aria2c` performance via singleton manager
|
||||
- **Titles**: Use track source attribute for service name in filenames
|
||||
- **Remote Auth**: Removed unused `requests.Session`
|
||||
|
||||
### Fixed
|
||||
|
||||
- **DASH DRM**: Preserve MPD DRM and avoid overwriting from init segments
|
||||
- Added CENC namespace support for PSSH extraction
|
||||
- **DASH DVR**: Handle high `startNumber` values in SegmentTimeline
|
||||
- **Manifests**: Correct DRM type selection for remote PlayReady CDMs
|
||||
- **Downloader**: Correct progress bar tracking for segmented downloads
|
||||
- **N_m3u8DL-RE**: Remove duplicate `--write-meta-json` argument causing download failures
|
||||
- **Subtitles**: Preserve original sidecar subtitle files
|
||||
- **Binaries**: Search subdirectories when locating binaries
|
||||
- **Proxies**: Fix WindscribeVPN server authentication and aggregate servers across all locations
|
||||
- **Serve**: Correct PlayReady RemoteCDM server validation
|
||||
- **API**: Validate `Bearer` prefix before extracting API keys
|
||||
|
||||
## [2.3.1] - 2026-01-22
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -1800,6 +1800,7 @@ class dl:
|
||||
|
||||
muxed_paths = []
|
||||
muxed_audio_codecs: dict[Path, Optional[Audio.Codec]] = {}
|
||||
append_audio_codec_suffix = True
|
||||
|
||||
if no_mux:
|
||||
# Skip muxing, handle individual track files
|
||||
@@ -1820,6 +1821,7 @@ class dl:
|
||||
merge_audio = not split_audio
|
||||
else:
|
||||
merge_audio = config.muxing.get("merge_audio", True)
|
||||
append_audio_codec_suffix = merge_audio
|
||||
|
||||
multiplex_tasks: list[tuple[TaskID, Tracks, Optional[Audio.Codec]]] = []
|
||||
|
||||
@@ -2055,7 +2057,7 @@ class dl:
|
||||
final_dir = config.directories.downloads
|
||||
final_filename = title.get_filename(media_info, show_service=not no_source)
|
||||
audio_codec_suffix = muxed_audio_codecs.get(muxed_path)
|
||||
if audio_codec_suffix:
|
||||
if audio_codec_suffix and append_audio_codec_suffix:
|
||||
final_filename = f"{final_filename}.{audio_codec_suffix.name}"
|
||||
|
||||
if not no_folder and isinstance(title, (Episode, Song)):
|
||||
|
||||
Reference in New Issue
Block a user