Releases: h0lg/SubTubular
raising validation errors
This minor release fixes
- exception handling to raise validation exceptions into the shell instead of logging them d3f9f39
- caption track download by updating YoutubeExplode to 6.4.3 698fbda fixing #10
Full Changelog: v3.1.0...v3.1.1
file output for keywords
This minor release
enables
- using output parameters with list keywords to save them as text or html, fixing command description for output files and error reports
updates (among other dependencies)
- YoutubeExplode from 6.3.5 to 6.4.1 fixing channel searching #9
- Lifti from 5.0.0 to 6.3.0
Full Changelog: v3.0.1...v3.1.0
Tame Fuzz
This minor release
updates
- YoutubeExplode from 6.2.5 to 6.3.5 fixing download errors after API update
- Lifti from 4.0.1 to 5.0.0
- AngleSharp from 1.0.1 to 1.0.5
- Octokit from 4.0.4 to 8.0.1
fixes
- avoiding concurrent reading from lifti fulltext index while saving it by getting exclusive file lock
- fixing ContinueWith() not bubbling up exceptions
- releasing download limiter even if getting video fails to avoid filling up the download queue with failed downloads
- fixing channel writer not completing if a download fails similarly
- throwing all exceptions as an AggregateException when using Task.WhenAll() (instead of only the first one as is the default)
- avoiding exception deleting non-existent playlist
Wild Fuzz
This major release focuses on
adding advanced full-text search capabilities
using LIFTI including wild card and fuzzy matching, field-specific queries and many more
but adds other new features like
- an option for ordering playlist search results
- option
-k | --keywords
to search commands for listing keywords of videos in scope with number of occurrences - support for channel slugs and handles
- support for videos with IDs starting with a dash by quoting them
- a
release
command for listing, opening notes of and installing other releases from github - options for more control over cache management on the clear-cache command
with breaking changes
- the search-user command was removed; search-channel works using the same arguments
- the OR separator switches from
,
comma to|
pipe, requiring you to quote the --for argument when using it - the cachehours option has been renamed to cache-hours
while updating
- target framework from .NET Core 3.1 to .NET 7,
- AngleSharp from 0.17.1 to 1.0.1
Other improvements
performance
- refactored parallelism using channels
- searching already indexed videos while downloading new ones in parallel
- parallelized searching individual videos
input validation and error handling
- validating video, playlist and channel IDs locally and channel aliases locally and remotely
- handling unparseble inputs and validation errors gracefully by displaying rather than logging them
- colored error output
- writing output file even if exception occurs
help texts
- are using full window width now
- have been updated and reworded where necessary
Extended context and simplified file browsing
This release extends --pad
to support up to maximum 65535 characters of padding for results that require more context,
adds
- shorter aliases for existing commands
--show
|-s
[file
|folder
] to the common search options make opening of output file or folder optionalopen
|-o
folder command for opening app-related folders like output or error logs- Visual Studio Code extension recommendations to help setting up a development environment
and simplifies a few help texts.
fixes and caption formatting
This release fixes
- the type of the
-t
or--top
parameter's default value that broke inv2.2.1
and led to searches without explicit top parameter running into an error - outputting default value for
--pad
in help text
improves caption full-text formatting by skipping or removing line breaks that seem to have recently been introduced in auto-generated subtitles
and updates the YoutubeExplode binaries from 6.2.2 to 6.2.5.
fixes, improvements and binary updates
This maintenance release includes the following
fixes
- fixed calculation and usage of included padded match end as well as matched value extraction from full-text
- fixed merging overlapping padded matches avoiding duplicate merged matches in result
improvements
- merging padded matches not only if they're overlapping, but also if they're touching
- handling cache deserialization errors by deleting cache file
- safe-guarded number parameters against misuse with negative values
- removed trailing space from error file names
- added names for required command values to improve help
- restructured help text and reduced preceding noise if a verb is selected already
binary updates
- YoutubeExplode from 6.0.7 to 6.2.2
- CommandLineParser from 2.8.0 to 2.9.1
- AngleSharp from 0.16.1 to 0.17.1
contributor/developer help
- Visual Studio Code launch and tasks configs, fixing #2
- commands for upgrading dependencies and other useful tasks
context is everything
new features
This release introduces the new parameter -p
| --pad
for selecting how much context (in characters; min 0; max 255) to display a match in.
other improvements
Overlapping matches are now merged in the output. This prevents confusing duplicates. This became particularly necessary with increased match padding/context.
The search now matches multi-word phrases in video descriptions across lines like it already did for captions.
The result output of multi-line text like for title, description or caption matches is now wrapped and indented to fit the console window nicely and improve output structure, applying the same formatting to any generated file.
Any generated output file will now be opened automatically after it was written, saving the user some file browsing.
And finally, captions of tracks are now sanitized and ordered before the search to prevent duplicates and overlaps in the matches or them being out of chronological order.
Fixing logging of generic errors
This release fixes the logging of generic errors broken in v2.1.1 .
handling caption track errors without interrupting the search
This release fixes the error logging introduced in v2.1.0 - specifically the time stamp format in log file names, enabling error logs to be actually written.
It adds
- handling & logging of individual caption track errors without interrupting the search
- outputting playlist or video URLs in the search result header for easier navigation and debugging
- outputting video title in search result as context even if it doesn't contain a match