aboutsummaryrefslogtreecommitdiffstats
path: root/crates (unfollow)
Commit message (Collapse)Author
2025-06-16style(treewide): ReformatBenedikt Peetz
2025-06-16chore(treewide): Add missing copyright headersBenedikt Peetz
2025-06-16style(yt/select): Apply clippy's suggestionsBenedikt Peetz
2025-06-16fix(yt/update): Also handle the newly introduced error conditionsBenedikt Peetz
2025-06-16feat(yt_dlp): Support a DeArrow post processorBenedikt Peetz
2025-06-16refactor(yt_dlp/lib): De-duplicate the info json sanitize codeBenedikt Peetz
2025-06-16refactor(yt_dlp/lib): Explicitly convert python exceptions into an errorBenedikt Peetz
This avoids having to wrap all blocks into a `match` statement.
2025-06-16refactor(yt/select/selection_file): Migrate from `trinitry` to `shlex`Benedikt Peetz
shlex is better maintained, and _actually_ meant for this purpose .
2025-06-16test(yt/cli): Test the CLIBenedikt Peetz
2025-06-16fix(libmpv2-sys): Avoid generating comments, that confuse rustdocBenedikt Peetz
2025-06-16fix(yt/cli): Remove duplicated short flag key (help also uses 'h')Benedikt Peetz
2025-06-16feat(yt/cli): Add support for command line completionsBenedikt Peetz
2025-06-16feat(yt/select/split): Make sorting configurableBenedikt Peetz
I also moved that to a separate subcommand, as we would otherwise have too many `requires`/`conflicts_with` statements.
2025-06-16feat(yt/videos/list): Replace the nucleo matcher with a simple `contains`Benedikt Peetz
The matching behaviour was not predictable at all (probably due to a bad config), which than led to using `yt videos ls | grep -i <query>` instead.
2025-06-15fix(yt/download/get_file_size): Correct deal with `filesize_approx` = NullBenedikt Peetz
2025-06-15fix(yt_dlp/json_{cast,get}): Improve error reportingBenedikt Peetz
2025-06-15fix(yt/update): Correct the progress display in `--grouped` modeBenedikt Peetz
2025-06-15docs(yt/watch/playlist_handler/client_messages): Add TODO about `current_exe`Benedikt Peetz
2025-06-15docs(yt_dlp): Fix typo in `Cargo.toml`'s descriptionBenedikt Peetz
2025-06-15fix(yt_dlp): Avoid writing the json output to diskBenedikt Peetz
There is no point in doing this anymore, as we no longer need to deserialize it.
2025-06-15fix(yt/update/video_entry_to_video): Cast the json objectsBenedikt Peetz
Otherwise, we might encounter very weird behaviour if yt_dlp ever changes the types of these keys.
2025-06-15feat(yt/update): Print a nice progress numberBenedikt Peetz
This number obviously does not actually mean that we have finished updating (as it is incremented on staring). But it still provides some feedback, on how long the update will probably take.
2025-06-15feat(yt/update): Support grouped updatesBenedikt Peetz
Rustpython currently does not use a garbage collector. Thus, every cyclic reference between Python objects results in a memory leak of these objects (as Rustpython uses (A)RCs). The only real way to workaround the memory leaks, is by restarting the whole process, and this `--grouped` flag seems to be the best solution for that.
2025-06-15perf(yt/update/updater): Acknowledge, that `yt_dlp` has a sync APIBenedikt Peetz
The previous code was written with the assumption, that `yt_dlp` had an async API (which means, that calls to it should never block). Unfortunately, the API is sync and all calls into it block. Therefore, all the parallelism in the previous code accounted for nothing; The actual update ran completely sequentially. The new version uses a local thread pool to avoid blocking the tokio runtime and as such achieves higher speed. Unfortunately, because the rustpython implementation is way slower than cpython, the whole update takes longer. But that is a problem for another day.
2025-06-15feat(yt/select): Support a directory selection processBenedikt Peetz
The single file approach becomes unwieldy once one has more open videos.
2025-06-15refactor(yt/select): Split the `select::select` function upBenedikt Peetz
2025-06-14feat(yt/update): Specify subscriptions to update as positional argsBenedikt Peetz
Having the `-s/--subscription` flag is pointless, as there are no other flags that could make a positional arg ambiguous.
2025-06-14feat({yt/update,yt_dlp}): Use yt_dlp errors againBenedikt Peetz
This code was temporarily commented out, as I had not migrated it in the pyo3 -> rustpython migration.
2025-06-14docs(yt/update): Add comment about the `unsmuggle_url` invocationBenedikt Peetz
2025-06-14fix(yt/update): Avoid printing all the subscriptions that are not updatedBenedikt Peetz
This is just too much noise.
2025-06-14fix(yt/select/selection_file/duration): Improve the duration parserBenedikt Peetz
The previous parser was very brittle, it failed for (valid) outputs like `1d 10h 30m` (as it only expected two number unit pairs). On top of that, extending it was failure prone (as proven by the roundtrip failure in combination with the `d` unit).
2025-06-13fix(yt/version): Use yt_dlp's native python version implyBenedikt Peetz
This is just cleaner, compared to running `yt-dlp --version` as command.
2025-06-13build(treewide): UpdateBenedikt Peetz
2025-06-13refactor(yt): Move to `crates/yt`Benedikt Peetz
Having one crate outside the `crates` directory is just weird.
2025-06-13feat({yt_dlp,yt}): Migrate from pyo3 to rustpythonBenedikt Peetz
That allows us to avoid cpython's GIL and gives us full ability to leverage async/concurrent code to speed up python operations. I have also taken the opportunity to change the `InfoJson` struct to an untyped json value, as that is what it actually is.
2025-03-21chore(yt_dlp/wrappers/info_json): Add additional missing fieldBenedikt Peetz
2025-03-21refactor(yt_dlp): Remove the unneeded `async` from the public functionsBenedikt Peetz
2025-03-21chore(treewide): Migrate to rust edition 2024Benedikt Peetz
Even though the diff in the libmpv2 crate is quite big, it really only added `unsafe` blocks to the `unsafe` functions.
2025-03-21build(treewide): UpdateBenedikt Peetz
2025-02-22chore(treewide): Add/Update the license headersBenedikt Peetz
2025-02-21fix(crates/libmpv2/mpv): Log the setting of propertiesBenedikt Peetz
2025-02-21chore(crates/yt_dlp/wrappers/info_json): Add further fieldsBenedikt Peetz
2025-02-21chore(crates/libmpv2): Make `cargo clippy` happyBenedikt Peetz
2025-02-16style(treewide): Re-formatBenedikt Peetz
2025-02-16build(rustfmt.toml): AddBenedikt Peetz
2025-02-16fix(crates/termsize): Remove all of `clippy`'s warningsBenedikt Peetz
2025-02-16refactor(crates/fmt): Init forked `uu_fmt` libraryBenedikt Peetz
2025-02-16chore(crates/termsize): VendorBenedikt Peetz
2025-02-16fix(crates/yt_dlp/wrappers/info_json): Serialize the `InfoType`s with their ↵Benedikt Peetz
correct name
2025-02-16fix(crates/yt_dlp/wrappers/info_json): Don't serialize `None` valuesBenedikt Peetz
This keeps the jsons, which we internally parse, shorter.