Skip to content
This repository was archived by the owner on Jul 9, 2025. It is now read-only.

Commit df4dd73

Browse files
committed
Bump to v2.1.0
1 parent 6e888a0 commit df4dd73

File tree

3 files changed

+67
-2
lines changed

3 files changed

+67
-2
lines changed

CHANGELOG.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,70 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [2.1.0] - 2023-03-16
9+
10+
### Added
11+
12+
- The Track get_init_segment method has been re-written to be more controllable. A specific Byte-range, URL, and
13+
maximum size can now be specified. A manually specified URL will override the Track's current URL. The Byte-range
14+
will override the fallback value of `0-20000` (where 20000 is the default `maximum_size`). It now also checks if the
15+
server supports Byte-range, or it will otherwise stream the response. It also tries to get the file size length and
16+
uses that instead of `maximum_size` unless it's bigger than `maximum_size`.
17+
- Added new `get_key_id` method to Track to probe the track for a track-specific Encryption Key ID. This is similar to
18+
Widevine's `from_track` method but ignores all `pssh` boxes and manifest information as the information within those
19+
could be for a wider range of tracks or not for that track at all.
20+
- Added a 5-attempt retry system to DASH and HLS downloads. URL downloads only uses aria2(c)'s built in retry system
21+
which has the same amount of tries and same delay between attempts. Any errors emitted when downloading segments will
22+
not be printed to console unless it occurred on the last attempt.
23+
- Added a fallback way to obtain language information by taking it from the representation ID value, which may have the
24+
language code within it. E.g., `audio_en=128000` would be an English audio track at 128kb/s. We now take the `en`
25+
from that ID where possible.
26+
- Added support for 13-char JS-style timestamp values to the Cacher system.
27+
- Improved Forced Subtitle recognition by checking for both `forced-subtitle` and `forced_subtitle` (#43).
28+
29+
### Changed
30+
31+
- The `*` symbol is no longer spaced after the Widevine `KID:KEY` when denoting that it is for this specific PSSH.
32+
This reduces wasted vertical space.
33+
- The "aria2 will resume download if the transfer is restarted" logs that occur when aria2(c) handles the CTRL+C break,
34+
and "If there are any errors, then see the log file" logs are now ignored and no longer logged to the console.
35+
- DASH tracks will no longer prepare and license DRM unless it's just about to download. This is to reduce unnecessary
36+
preparation of DRM if the track had been converted to a URL download.
37+
- For a fix listed below, we now use a fork of https://github.com/globocom/m3u8 that fixes a glaring problem with the
38+
EXT-X-KEY parsing system. See <https://github.com/globocom/m3u8/pull/313>.
39+
- The return code when mkvmerge returns an error is now logged with the error message.
40+
- SubtitleEdit has been silenced when using it for SDH stripping.
41+
42+
### Fixed
43+
44+
- Fixed URL joining and Base URL calculations on DASH manifests that use multiple Base URL values.
45+
- URL downloads will now store the chosen DRM before preparing and licensing with the DRM.
46+
- URL downloads will now prepare and license with the DRM if the Track has pre-existing DRM information. Previously it
47+
would only prepare and license DRM if it did not pre-emptively have DRM information before downloading.
48+
- The `*` symbol that indicates that the KID:KEY is for the track being downloaded now uses the new `get_key_id` method
49+
of the track for a more accurate reading.
50+
- License check now ensures if a KEY was returned for the Track instead of all KIDs of the Track's PSSH. This prevents
51+
an issue where the PSSH may have Key IDs for a 720p and 1080p track, yet only a KEY for the 720p track was returned.
52+
It would have then raised an error and stopped the download, even though you are downloading the 720p track and not
53+
the 1080p track, therefore the error was irrelevant.
54+
- Unnecessary duplicate license calls are now prevented in some scenarios where `--cdm-only` is used.
55+
- Fixed accuracy and speed of preparing and licensing DRM on HLS manifests where multiple EXT-X-KEY definitions appear
56+
in the manifest throughout the file. Using <https://github.com/globocom/m3u8/pull/313> we can now accurately get a
57+
list of EXT-X-KEYs mapped to each segment. This is a game changer for HLS manifests that use unique keys for every
58+
single (or most) segments as it would have otherwised needed to initialize (and possibly do network requests) for
59+
100s of EXT-X-KEY information, per segment. This caused downloads of HLS manifests that used a unique key per segment
60+
to slow to a binding crawl, and still not even decrypt correctly as it wouldn't be able to map the correct initialized
61+
key to the correct segment.
62+
- Fixed a regression that incorrectly implemented the OnMultiplex event for Audio and Subtitle tracks causing them to
63+
never trigger. It would instead accidentally have trigger the last Video track's OnMultiplex event instead of the
64+
Audio or Subtitle's event.
65+
- The above fix also fixed the automatic SDH stripping subtitle. Any automatically created SDH->non-SDH subtitle from
66+
prior downloads would not have actually had SDH captions stripped, it would instead be a duplicate subtitle.
67+
68+
### New Contributors
69+
70+
- [Hollander-1908](https://github.com/Hollander-1908)
71+
872
## [2.0.1] - 2023-03-07
973

1074
### Added
@@ -305,6 +369,7 @@ This release brings a huge change to the fundamentals of Devine's logging, UI, a
305369

306370
Initial public release under the name Devine.
307371

372+
[2.1.0]: https://github.com/devine-dl/devine/releases/tag/v2.1.0
308373
[2.0.1]: https://github.com/devine-dl/devine/releases/tag/v2.0.1
309374
[2.0.0]: https://github.com/devine-dl/devine/releases/tag/v2.0.0
310375
[1.4.0]: https://github.com/devine-dl/devine/releases/tag/v1.4.0

devine/core/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "2.0.1"
1+
__version__ = "2.1.0"

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = 'poetry.core.masonry.api'
44

55
[tool.poetry]
66
name = 'devine'
7-
version = '2.0.1'
7+
version = '2.1.0'
88
description = 'Open-Source Movie, TV, and Music Downloading Solution'
99
license = 'GPL-3.0-only'
1010
authors = ['rlaphoenix <[email protected]>']

0 commit comments

Comments
 (0)