@@ -5,6 +5,100 @@ All notable changes to this project will be documented in this file.
55The format is based on [ Keep a Changelog] ( https://keepachangelog.com/en/1.0.0/ ) ,
66and this project adheres to [ Semantic Versioning] ( https://semver.org/spec/v2.0.0.html ) .
77
8+ ## [ 2.0.0] - 2023-03-01
9+
10+ This release brings a huge change to the fundamentals of Devine's logging, UI, and UX.
11+
12+ ### Added
13+
14+ - Add new dependency [ rich] ( https://github.com/Textualize/rich ) for advanced color and logging capabilities.
15+ - Set rich console output color scheme to the [ Catppuccin Mocha] ( https://github.com/catppuccin/palette ) theme.
16+ - Add full download cancellation support by using CTRL+C. Track downloads will now be marked as STOPPED if you press
17+ CTRL+C to stop the download, or FAILED if any unexpected exception occurs during a download. The track will be marked
18+ as SKIPPED if the download stopped or failed before it got a chance to begin. It will print a download cancelled
19+ message if downloading was stopped, or a download error message if downloading failed. It will print the first
20+ download error traceback with rich before stopping.
21+ - Downloads will now automatically cancel if any track or segment download fails.
22+ - Implement sub-commands ` add ` and ` delete ` to the ` wvd ` command for adding and deleting WVD (Widevine Device) files to
23+ and from the configured WVDs directory (#31 ).
24+ - Add new config option to disable the forced background color. You may want to disable the purple background if you're
25+ terminal isn't able to apply it correctly, or you prefer to use your own terminal's background color.
26+ - Create ` ComfyConsole ` , ` ComfyLogRenderer ` , and ` ComfyRichHandler ` . These are hacky classes to implement padding to
27+ the left and right of all rich console output. This gives devine a comfortable and freeing look-and-feel.
28+ - An ASCII banner is now displayed at the start of software execution with the version number.
29+ - Add rich status output to various parts of the download process. It's also used when checking GEOFENCE within the
30+ base Service class. I encourage you to follow similar procedures where possible in Service code. This will result in
31+ cleaner log output, and overall less logs being made when finished.
32+ - Add three rich horizontal rules to separate logs during the download process. The Service used, the Title received
33+ from ` get_titles() ` , and then the Title being downloaded. This helps identify which logs are part of which process.
34+ - Add new ` tree ` methods to ` Series ` , ` Movies ` , and ` Album ` classes to list items within the objects with Rich Tree.
35+ This allows for more rich console output when displaying E.g., Seasons and Episodes within a Series, or Songs within
36+ an Album.
37+ - Add new ` tree ` method to the ` Tracks ` class to list the tracks received from ` get_tracks() ` with Rich Tree. Similar
38+ to the change just above, this allows for more rich console output. It has replaced the ` Tracks.print() ` method.
39+ - Add a rich progress bar to the track multiplexing operation.
40+ - Add a log when a download finishes, how long it took, and where the final muxed file was moved to.
41+ - Add a new track event, ` OnMultiplex ` . This event is run prior to multiplexing the finalized track data together. Use
42+ this to run code once a track has finished downloading and all the post-download operations.
43+ - Add support for mapping Netflix profiles beginning with ` h264 ` to AVC. E.g., the new -QC profiles.
44+ - Download progress bars now display the download speed. It displays in decimal (^1024) size. E.g., MB/s.
45+ - If a download stops or fails, any residual file that may have been downloaded in an incomplete OR complete state will
46+ now be deleted. Download continuation is not yet supported, and this will help to reduce leftover stale files.
47+
48+ ### Changed
49+
50+ - The logging base config now has ` ComfyRichHandler ` as its log handler for automatic rich console output when using
51+ the logging system.
52+ - The standard ` traceback ` module has been overridden with ` rich.traceback ` for styled traceback output.
53+ - Only the rich console output is now saved when using ` --log ` .
54+ - All ` tqdm ` progress bars have been replaced with rich progress bars. The rich progress bars are now displayed under
55+ each track tree.
56+ - The titles are now only listed if ` --list-titles ` is used. Otherwise, only a brief explanation of what it received
57+ from ` get_titles() ` will be returned. E.g., for Series it will list how many seasons and episodes were received.
58+ - Similarly, all available tracks are now only listed if ` --list ` is used. This is to reduce unnecessary prints, and to
59+ separate confusion between listings of available tracks, and listings of tracks that are going to be downloaded.
60+ - Listing all available tracks with ` --list ` no longer continues execution. It now stops after the first list. If you
61+ want to list available tracks for a specific title, use ` -w ` in combination with ` --list ` .
62+ - The available tracks are now printed in a rich panel with a header denoting the tracks as such.
63+ - The ` Series ` , ` Movies ` , and ` Album ` classes now have a much more simplified string representation. They now simply
64+ state the overarching content within them. E.g., Series says the title and year of the TV Show.
65+ - The final log when all titles are processed is now a rich log and states how long the entire process took.
66+ - Widevine DRM license information is now printed below the tracks as a rich tree.
67+ - The CCExtractor process, Subtitle Conversion process, and FFmpeg Repacking process were all moved out of the track
68+ download function (and therefore the thread) to be done on the main thread after downloading. This improves download
69+ speed as the threads can close and be freed quicker for the next track to begin.
70+ - The CCExtractor process is now optional and will be skipped if the binary could not be found. An error is still
71+ logged in the cases where it would have run.
72+ - The execution point of the ` OnDownloaded ` event has been moved to directly run after the stream has been downloaded.
73+ It used to run after all the post-download operations finished like CCExtractor, FFmpeg Repacking, and Subtitle
74+ Conversion.
75+ - The automatic SDH-stripped subtitle track now uses the new ` OnMultiplex ` event instead of ` OnDownloaded ` . This is to
76+ account for the previous change as it requires the subtitle to be first converted to SubRip to support SDH-stripping.
77+ - Logs during downloads now appear before the downloading track list. This way it isn't constantly interrupting view of
78+ the progress.
79+ - Now running aria2(c) with normal subprocess instead of through asyncio. This removes the creation of yet another
80+ thread which is unnecessary as these calls would have already been under a non-main thread.
81+ - Moved Widevine DRM licensing calls before the download process for normal URL track downloads.
82+ - Segment Merging code for DASH and HLS downloads have been moved from the ` dl ` class to the HLS and DASH class.
83+
84+ ### Removed
85+
86+ - Remove explicit dependency on ` coloredlogs ` and ` colorama ` as they are no longer used by devine itself.
87+ - Remove dependency ` tqdm ` as it was replaced with rich progress bars.
88+ - Remove now-unused logging constants like the custom log formats.
89+ - Remove ` Tracks.print() ` function as it was replaced with the new ` Tracks.tree() ` function.
90+ - Remove unnecessary sleep calls at the start of threads. This was believed to help with the download stop event check
91+ but that was not the case. It instead added an artificial delay with downloads.
92+
93+ ### Fixed
94+
95+ - Fix another crash when using devine without a config file. It now creates the directory of the config file before
96+ making a new config file.
97+ - Set the default aria2(c) file-allocation to ` prealloc ` like stated in the config documentation. It uses ` prealloc ` as
98+ the default, as ` falloc ` is generally unsupported in most scenarios, so it's not a good default.
99+ - Correct the config documentation in regard to ` proxies ` now being called ` proxy_providers ` , and ` basic ` actually
100+ being a ` dict ` of lists, and not a ` dict ` of strings.
101+
8102## [ 1.4.0] - 2023-02-25
9103
10104### Added
@@ -169,6 +263,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
169263
170264Initial public release under the name Devine.
171265
266+ [ 2.0.0 ] : https://github.com/devine-dl/devine/releases/tag/v2.0.0
172267[ 1.4.0 ] : https://github.com/devine-dl/devine/releases/tag/v1.4.0
173268[ 1.3.1 ] : https://github.com/devine-dl/devine/releases/tag/v1.3.1
174269[ 1.3.0 ] : https://github.com/devine-dl/devine/releases/tag/v1.3.0
0 commit comments