about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAge
* build(.envrc): Also disable ytdlp plugins by defaultBenedikt Peetz5 days
|
* build(package/package.nix): Update to the new build requirementsBenedikt Peetz5 days
|
* build({flake,Cargo}.lock): UpdateBenedikt Peetz5 days
|
* fix(scripts/mkdb.sh): Also use the `$DATABASE_URL` variable as source sourceBenedikt Peetz5 days
| | | | This avoids having to specify the db location twice.
* refactor(yt/select/selection_file): Migrate from `trinitry` to `shlex`Benedikt Peetz5 days
| | | | shlex is better maintained, and _actually_ meant for this purpose .
* test(yt/cli): Test the CLIBenedikt Peetz5 days
|
* fix(libmpv2-sys): Avoid generating comments, that confuse rustdocBenedikt Peetz5 days
|
* fix(yt/cli): Remove duplicated short flag key (help also uses 'h')Benedikt Peetz5 days
|
* feat(yt/cli): Add support for command line completionsBenedikt Peetz5 days
|
* build(.envrc): Remove outdated env variablesBenedikt Peetz5 days
|
* feat(yt/select/split): Make sorting configurableBenedikt Peetz5 days
| | | | | I also moved that to a separate subcommand, as we would otherwise have too many `requires`/`conflicts_with` statements.
* feat(yt/videos/list): Replace the nucleo matcher with a simple `contains`Benedikt Peetz5 days
| | | | | | 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.
* fix(yt/download/get_file_size): Correct deal with `filesize_approx` = NullBenedikt Peetz5 days
|
* fix(yt_dlp/json_{cast,get}): Improve error reportingBenedikt Peetz5 days
|
* build(treewide): UpdateBenedikt Peetz5 days
|
* fix(yt/update): Correct the progress display in `--grouped` modeBenedikt Peetz5 days
|
* docs(yt/watch/playlist_handler/client_messages): Add TODO about `current_exe`Benedikt Peetz5 days
|
* docs(yt_dlp): Fix typo in `Cargo.toml`'s descriptionBenedikt Peetz5 days
|
* fix(yt_dlp): Avoid writing the json output to diskBenedikt Peetz5 days
| | | | | There is no point in doing this anymore, as we no longer need to deserialize it.
* fix(yt/update/video_entry_to_video): Cast the json objectsBenedikt Peetz5 days
| | | | | Otherwise, we might encounter very weird behaviour if yt_dlp ever changes the types of these keys.
* feat(yt/update): Print a nice progress numberBenedikt Peetz5 days
| | | | | | | 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.
* feat(yt/update): Support grouped updatesBenedikt Peetz5 days
| | | | | | | | | | 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.
* perf(yt/update/updater): Acknowledge, that `yt_dlp` has a sync APIBenedikt Peetz5 days
| | | | | | | | | | | | | | | 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.
* feat(yt/select): Support a directory selection processBenedikt Peetz5 days
| | | | The single file approach becomes unwieldy once one has more open videos.
* refactor(yt/select): Split the `select::select` function upBenedikt Peetz6 days
|
* feat(yt/update): Specify subscriptions to update as positional argsBenedikt Peetz7 days
| | | | | Having the `-s/--subscription` flag is pointless, as there are no other flags that could make a positional arg ambiguous.
* feat({yt/update,yt_dlp}): Use yt_dlp errors againBenedikt Peetz7 days
| | | | | This code was temporarily commented out, as I had not migrated it in the pyo3 -> rustpython migration.
* docs(yt/update): Add comment about the `unsmuggle_url` invocationBenedikt Peetz7 days
|
* fix(yt/update): Avoid printing all the subscriptions that are not updatedBenedikt Peetz7 days
| | | | This is just too much noise.
* fix(yt/select/selection_file/duration): Improve the duration parserBenedikt Peetz7 days
| | | | | | | | 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).
* fix(yt/version): Use yt_dlp's native python version implyBenedikt Peetz7 days
| | | | This is just cleaner, compared to running `yt-dlp --version` as command.
* build(treewide): UpdateBenedikt Peetz7 days
|
* build(flake): Document for what the `CLANG_*` env vars are neededBenedikt Peetz7 days
|
* build(flake): Remove `flake-utils`Benedikt Peetz7 days
| | | | This library serves no real purpose, and now started failing to updated.
* refactor(yt): Move to `crates/yt`Benedikt Peetz7 days
| | | | Having one crate outside the `crates` directory is just weird.
* build(flake): Switch to `nixpkgs-unstable-small`Benedikt Peetz7 days
| | | | | Small is updated faster, and we need quick updates as `yt_dlp` needs to be always up-to-date so that it actually works with YouTube.
* build(flake): Adapt the dev env to yt_dlp's new dependenciesBenedikt Peetz7 days
|
* fix(yt/subscribe): Deal with moved url valueBenedikt Peetz7 days
|
* fix(yt/downloader/progress_hook): Silence clippy warningsBenedikt Peetz7 days
|
* refactor(yt): Consolidate the multiple ANSI escape code wrapper functionsBenedikt Peetz7 days
|
* fix(yt/watch/playlist): Workaround terminals, that treat 0 as 1Benedikt Peetz7 days
|
* fix(yt/storage/migrate): Correct the two to three migration scriptBenedikt Peetz7 days
|
* fix(yt/storage/migrate): Correctly state the upgrade to the topmost versionBenedikt Peetz7 days
| | | | Previously `$new_version` and `$old_version` were mistakenly swapped.
* feat(yt/status): Show the percentage of videos that were actually watchedBenedikt Peetz7 days
|
* style(yt/cli): Sort the toplevel flags alphabeticallyBenedikt Peetz7 days
|
* fix(yt/{se,}dowa): Don't exit completely, if the downloader failsBenedikt Peetz7 days
| | | | | Otherwise the `yt watch` part exists even if videos are available to be watched.
* feat({yt_dlp,yt}): Migrate from pyo3 to rustpythonBenedikt Peetz7 days
| | | | | | | | 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.
* build(treewide): UpdateBenedikt Peetz7 days
|
* build(flake): Add `git-bug` to the devshellBenedikt Peetz2025-03-21
|
* fix(yt/storage/migrate): Improve error messagesBenedikt Peetz2025-03-21
|