aboutsummaryrefslogtreecommitdiffstats
path: root/crates (unfollow)
Commit message (Collapse)Author
2025-07-18feat(crates/yt): Separate all commands from their implementation codeBenedikt Peetz
This also comes with a re-worked and tested implementation of the comments rendering code.
2025-07-15test(crates/yt): Add basic integration testsBenedikt Peetz
2025-07-15fix(crates/yt/select): Correctly open the persistent file in `select split`Benedikt Peetz
Otherwise, the written changes to the persistent file would either not be saved or they would be saved but not used.
2025-07-15feat(crates/yt/select): Print the currently processed line as progressBenedikt Peetz
This is especially useful when using the commands standalone (i.e., `yt select watch ...`), as that will now show you exactly what your command did to the video.
2025-07-15fix(crates/yt): Add stuff that was missedBenedikt Peetz
2025-07-15feat(crates/yt/watch): Make the time between watch progress saves configurableBenedikt Peetz
2025-07-15refactor(crates/yt/config): Always use imported paths in config decBenedikt Peetz
2025-07-15feat(crates/yt/update): Make the concurrency configurableBenedikt Peetz
2025-07-15fix(crates/yt/cli): Use the correct `--plackback-speed` option nameBenedikt Peetz
2025-07-15feat(crates/yt/subscribe): Support a `--no-check` argumentBenedikt Peetz
2025-07-15feat(crates/yt): Support a `--format` argument for most commands with outputBenedikt Peetz
2025-07-15fix(crates/yt/update): Remove the `--grouped` update supportBenedikt Peetz
Our python implementation no longer leaks memory.
2025-07-15feat(crates/yt/watch): Support `--headless` and `--provide-ipc-socket` flagsBenedikt Peetz
2025-07-15refactor(crates/yt/comments): Remove dead codeBenedikt Peetz
2025-07-15fix(crates/yt/downloader): Correctly treat the download as blockingBenedikt Peetz
This change _might_ also allow aborting the current download, but I'm not yet sure.
2025-07-15refactor(crates/yt): Allow `missing_panic_docs` and use expectBenedikt Peetz
2025-07-15refactor(crates/yt/download/progress_hook): Use `json_{get,cast}` and owu-colorsBenedikt Peetz
2025-07-15refactor(crates/yt): Use the new storage layerBenedikt Peetz
2025-07-14fix(crates/yt/storage/migrate): Merge the `videos` and `video_options` tablesBenedikt Peetz
Keeping them separate was just introducing unnecessary friction.
2025-07-14feat(crates/yt/storage): Migrate inserts to operations and use methodsBenedikt Peetz
This allows us to re-use the operations and in the future to provide undo-capabilities and a git-reflog like changelog. This commit also fixes some bugs with the old design.
2025-07-10refactor(crates/yt): Make every `pub` item `pub(crate)`Benedikt Peetz
Otherwise, rust will not warn use about unused code (and `yt` is not a library).
2025-07-10docs(crates/libmpv2): Correctly format doc-testBenedikt Peetz
2025-07-10refactor(crates/yt/config): Use a macro to generate the config parsing codeBenedikt Peetz
This makes adding new config values easier and makes it harder to introduce slight bugs (with the old config system the cli `--db-path` flag did only take effect, after the value in the config file).
2025-07-10refactor(crates/yt_dlp): Port to `pyo3` againBenedikt Peetz
Rustpyton is slower, does not implement everything correctly and worst of all, contains code produced by LLM's. Using the freethreaded mode of pyo3 also works nicely around the GIL, and enables parallel execution.
2025-07-10refactor(crates/bytes): Move into ytBenedikt Peetz
`yt_dlp` no longer depends on it.
2025-06-28fix(yt/subscribe): Don't hard-error on failed subscribe, if it was not specifiedBenedikt Peetz
The user did not specify to subscribe to the `videos`, `streams` and `shorts` variants, as such we should not error if one of them fails, as the other one could succeed.
2025-06-28fix(yt/{subscribe,storage/subscriptions}): Fix more instances of the ↵Benedikt Peetz
capitalize Playlist type
2025-06-28chore(yt_dlp/package_hacks): Add missing license headersBenedikt Peetz
2025-06-28chore(yt/storage/video_database/set): Apply some of clippy's suggestionsBenedikt Peetz
2025-06-28fix(yt/select/split): Also use persist the selection fileBenedikt Peetz
This makes re-editing after a selection failure possible.
2025-06-28fix(yt/select/cmds/add): Use the correct names for the download typeBenedikt Peetz
Otherwise, adding anything is impossible.
2025-06-28fix(yt/select/cmds/add): Don't print the title as value, cast it firstBenedikt Peetz
Otherwise, we would silently ignore an invalid type, if the title type ever changes.
2025-06-28fix(yt/download/progress_hook): Remove superfluous apostrophesBenedikt Peetz
The start and end of the title is already apparent, as it is coloured differently than the rest. Adding the single quotes around it does not improve it and is just visual clatter.
2025-06-28build({flake,Cargo}.lock): UpdateBenedikt Peetz
2025-06-28fix(yt_dlp): Polyfill missing rustpython features used in urllib3Benedikt Peetz
Otherwise, anything that depends on urllib3 just fails to initialize.
2025-06-28revert: "build(treewide): Update"Benedikt Peetz
This reverts commit e6aa91c56ca51a8593b9a58ec5746741888db7f9. The update of urllib3 to v2.4.0 broke our `yt-dlp` integration.
2025-06-24build(treewide): UpdateBenedikt Peetz
2025-06-24build(yt_dlp/Cargo.toml): Pin git dependenciesBenedikt Peetz
2025-06-24fix(yt_dlp/post_processors/dearrow): Don't try to access the drained vecBenedikt Peetz
If all titles were declared “bad” the pp previously tried to access the first title in the array, which was already drained. We now simply clone the array to facilitate this usage.
2025-06-24feat(yt/version): Add the (rust)python version againBenedikt Peetz
2025-06-24fix(yt/update/grouped): Don't drop the verbosity levelBenedikt Peetz
Otherwise, the sub-processes run with the default verbosity level.
2025-06-24feat(yt/cli): Also add completion for subscription namesBenedikt Peetz
2025-06-17chore(treewide): Assure that `nix fmt` and `reuse lint` are happyBenedikt Peetz
2025-06-17refactor(yt_dlp): Split the big `lib.rs` file upBenedikt Peetz
2025-06-17refactor(yt_dlp/progress_hook): Use public api via `__priv` moduleBenedikt Peetz
That makes it clear that these parts are only exposed to facilitate macro use and not as part of the public API.
2025-06-17fix(yt_dlp/post_processing/dearrow): Correctly type the `CasualVote` fieldBenedikt Peetz
2025-06-17refactor(yt_dlp/logging): Avoid adding to the `__all__` listBenedikt Peetz
This seems to have no apparent effect on anything. As such I went ahead and removed this dead code.
2025-06-17fix(yt_dlp): Typos in stringsBenedikt Peetz
2025-06-17fix(yt_dlp/post_processors): Register in pythonBenedikt Peetz
We need to tell yt_dlp about our post processors, as they would otherwise not take full effect. For example, changing the title would previously only have changed the title in the *in-memory* info json, the actual file on disk (video and .info.json) would still have the old title, as yt_dlp did not know about our post processor. Registering it via their api also has the upside of being able to determine when to run.
2025-06-17fix(yt_dlp/post_processors/dearrow): Migrate to curl for api requestsBenedikt Peetz
The reqwest crate will panic if it is blockingly run inside another executor. But we cannot make this function async, as the whole api is forced to be sync by python ffi.