465 Commits

Author SHA1 Message Date
Andy
de41395a45 fix(dl): invert audio codec suffixing when splitting 2026-02-07 18:56:30 -07:00
Andy
e50dd3f2bc Merge branch 'dev' of https://github.com/unshackle-dl/unshackle into dev
# Conflicts:
#	CHANGELOG.md
2026-02-07 18:47:23 -07:00
Andy
6f3aafebc5 docs(changelog): update cliff config and regenerate changelog
merge commit filtering, deduplication, granular chore parsing, and regenerate CHANGELOG.md using git-cliff.
2026-02-07 18:46:43 -07:00
Andy
a66234190c docs(changelog): complete 2.4.0 notes 2026-02-07 18:05:03 -07:00
Andy
62aa85c666 chore(release): bump version to 2.4.0 2026-02-07 14:52:54 -07:00
Andy
03c309303c fix(downloader): restore requests progress for single-url downloads 2026-02-06 23:34:15 -07:00
Andy
ace89760e7 fix(hls): finalize n_m3u8dl_re outputs
- Add a small helper to move N_m3u8DL-RE final outputs into the expected temp path (preserve actual suffix) and keep subtitle codec consistent with the produced file.
- Skip generic HLS segment merging when N_m3u8DL-RE is in use to avoid mixing in sidecar files and reduce Windows file-lock issues.
- Harden segmented WebVTT merging to avoid IndexError when caption segment indexes exceed the provided duration list.
2026-02-06 16:17:06 -07:00
Andy
3eede98376 Merge branch 'fix/hybrid-temp-cleanup' 2026-02-06 11:16:44 -07:00
Andy
57918cd2a3 fix(dl): always clean up hybrid temp hevc outputs 2026-02-06 11:15:05 -07:00
Sp5rky
001d15e651 Merge pull request #75 from CodeName393/Remove-hybrid-havc-temp-file
Remove hybrid havc temp file
2026-02-06 11:14:45 -07:00
Andy
2308644374 chore(api): remove remote services 2026-02-06 10:46:39 -07:00
CodeName393
8f0b9eafd7 Remove hybrid havc temp file
Add a hybrid track to the track processing list to fix the problem that the hybrid-processed hevc file remains in the temp folder.
2026-02-06 17:53:48 +09:00
Andy
939ca25c5b fix(dl): keep descriptive and standard audio for requested langs
When --audio-description is set, keep standard selections and include descriptive tracks for requested languages, including --a-lang with orig and best selection paths.

Fixes #72
2026-02-05 12:57:52 -07:00
Sp5rky
58903c7b14 Merge pull request #70 from CodeName393/Missing-HLS-Curl-Session-Processing
Fix Missing HLS Curl Session Processing
2026-02-05 12:43:27 -07:00
CodeName393
3fa4a81a39 Fix Missing HLS Curl Session Processing 2026-02-05 19:25:51 +09:00
Andy
b16610ac63 fix(progress): bind per-track bars and force terminal completion 2026-02-04 12:55:02 -07:00
Andy
5fae23eb99 feat(proxy): add specific server selection for WindscribeVPN 2026-02-04 19:49:52 +00:00
Andy
6186ff764b fix(progress): force track bar completion on terminal states 2026-02-04 12:31:49 -07:00
Sp5rky
207756c090 Merge pull request #69 from CodeName393/HDR-Vivid-File-Name-Processing
Fixed HDR Vivid showing the file name Range as 'None'
2026-02-04 12:24:24 -07:00
CodeName393
9e194f4868 Fix 2026-02-05 02:51:24 +09:00
CodeName393
5b50a6cd79 HDR Vivid 2026-02-05 02:50:03 +09:00
CodeName393
289c8a3b23 HDR Vivid 2026-02-05 02:49:50 +09:00
Andy
a6494d9b54 fix(dl): prevent attachment downloads during --skip-dl
Set DOWNLOAD_LICENCE_ONLY earlier in the download command so services build tracks in license-only mode.

Update Attachment URL handling to avoid eager downloads in license-only mode while keeping metadata, stable IDs, and safe cleanup behavior.
2026-02-03 21:20:26 -07:00
Andy
c83b7a853e fix(mux): avoid audio codec suffix on split-audio outputs 2026-02-03 17:21:51 -07:00
Andy
b70c350d0b docs(changelog): add 2.4.0 release notes 2026-02-03 13:54:32 -07:00
CodeName393
ad7dd69ecd Merge branch 'dev' into Config-Filenames 2026-02-03 23:01:18 +09:00
CodeName393
ca3a6cc3ea Update 2026-02-03 23:00:53 +09:00
Andy
cacb695093 fix(subtitles): preserve sidecar originals
Use original subtitle files for sidecar output while keeping muxed conversion behavior.

Fixes #59
2026-02-02 21:43:27 -07:00
Andy
64875e8371 Merge branch 'quiet-sleeping-crane' into dev 2026-02-02 20:51:17 -07:00
Andy
5b9be075de feat(audio): codec lists and split muxing 2026-02-02 20:51:09 -07:00
Andy
1cde8964c1 fix(dash): preserve MPD DRM instead of overwriting from init segment
The init_data DRM extraction was unconditionally overwriting DRM already extracted from MPD ContentProtection elements. This caused failures when init segments contain malformed PSSH data while the MPD has valid PSSH.

Now only falls back to init_data extraction when no DRM was found from the manifest, matching the behavior in version 2.1.0.
2026-02-02 12:02:16 -07:00
Andy
cc55fd8922 fix(dash): add CENC namespace support for PSSH extraction
Some MPD manifests use the cenc: namespace prefix for PSSH elements (e.g., <cenc:pssh>) instead of non-namespaced <pssh>. This caused DRM extraction to fail for services.

- Add {urn:mpeg:cenc:2013}pssh fallback for Widevine PSSH extraction
- Add {urn:mpeg:cenc:2013}pssh fallback for PlayReady PSSH extraction
2026-02-02 10:59:15 -07:00
Andy
84466e12de Merge branch 'feat/monalisa-drm' into dev 2026-02-02 08:25:43 -07:00
Andy
ecedcb93eb fix(drm): hide Shaka Packager message for MonaLisa decryption 2026-02-02 08:24:13 -07:00
Andy
a07191ac4f fix(binaries): search subdirectories for binary files
Allow binaries to be found in subdirectories of the binaries folder.
2026-02-01 14:04:42 -07:00
Andy
6dd1ce6df9 fix(dash): handle high startNumber in SegmentTimeline for DVR manifests
When a DASH manifest has a high startNumber (common in DVR/catch-up content from live streams), the segment range calculation would produce an empty range because end_number was set to len(segment_durations) rather than being offset by startNumber.
2026-02-01 11:12:29 -07:00
Andy
d0d8044fb3 feat(video): detect interlaced scan type from MPD manifests 2026-01-31 23:51:57 -07:00
Andy
d4328f0eb7 fix(binaries): search subdirectories for binary files
Allow binaries to be found in subdirectories of the binaries folder.
2026-01-31 22:06:04 -07:00
Andy
3fcad1aa01 feat(drm): add MonaLisa DRM support to core infrastructure
- Add MonaLisaCDM class wrapping wasmtime for key extraction
- Add MonaLisa DRM class with decrypt_segment() for per-segment decryption
- Display Content ID and keys in download output (matching Widevine/PlayReady)
- Add wasmtime dependency for WASM module execution
2026-01-31 22:05:44 -07:00
Andy
ef338f0124 fix(downloader): correct progress bar tracking for segmented downloads
Use segmented=True when downloading multiple URLs to prevent inner downloads from overriding the total segment count, which caused the progress bar to always appear green (finished state).

This is still WIP so will continue to monitor.
2026-01-31 20:00:30 -07:00
Andy
caf67a6998 feat(env): add ML-Worker binary for DRM licensing 2026-01-31 16:58:10 -07:00
Andy
5cf488cb34 docs: add configuration documentation WIP 2026-01-30 16:34:49 -07:00
Andy
c352884c17 fix(proxy): collect servers from all locations in WindscribeVPN
Previously get_random_server only collected servers from the first location matching a country code. Now it collects from all matching locations before selecting randomly.
2026-01-30 15:52:44 -07:00
Andy
f852a43e7f Merge branch 'main' into dev 2026-01-30 15:44:17 -07:00
Andy
d2d86fa6b7 Merge remote-tracking branch 'origin/main' into dev 2026-01-30 15:39:50 -07:00
Andy
e2b65cef4a fix(proxy): remove regional restrictions from WindscribeVPN
OpenVPN credentials now work reliably on all regions, not just US, AU, and NZ. Remove the supported_regions check that was blocking other country codes.
2026-01-30 22:38:46 +00:00
Andy
385fcb2752 Revert "Merge pull request #64 from Aerglonus/dev"
This reverts commit 55bc2b16ee, reversing
changes made to 8c8c9368ba.
2026-01-30 15:52:06 +00:00
Sp5rky
55bc2b16ee Merge pull request #64 from Aerglonus/dev
fix(proxies): Fixes WindscribeVPN server authentication
2026-01-30 08:19:27 -07:00
Andy
8c8c9368ba fix(manifests): correct DRM type selection for remote PlayReady CDMs
HLS: Filter segment keys by CDM type during aria2c merge phase to prevent incorrect Widevine selection when using PlayReady-only CDMs. The merge phase now uses filter_keys_for_cdm() before get_supported_key(), matching the pattern used in initial licensing.

DASH: Extend PlayReady CDM detection to include remote CDMs with is_playready attribute, not just native PlayReadyCdm instances. This ensures correct DRM extraction order from init_data when using remote PlayReady CDMs.
2026-01-29 10:34:03 -07:00
CodeName393
77d55153e6 Add insert_episodename_into_filenames config option 2026-01-29 02:38:50 +09:00