Commit message (Collapse) | Author | Age | |
---|---|---|---|
* | feat({yt/update,yt_dlp}): Use yt_dlp errors again | Benedikt Peetz | 3 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` invocation | Benedikt Peetz | 3 days |
| | |||
* | fix(yt/update): Avoid printing all the subscriptions that are not updated | Benedikt Peetz | 3 days |
| | | | | This is just too much noise. | ||
* | fix(yt/select/selection_file/duration): Improve the duration parser | Benedikt Peetz | 3 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 imply | Benedikt Peetz | 4 days |
| | | | | This is just cleaner, compared to running `yt-dlp --version` as command. | ||
* | build(treewide): Update | Benedikt Peetz | 4 days |
| | |||
* | build(flake): Document for what the `CLANG_*` env vars are needed | Benedikt Peetz | 4 days |
| | |||
* | build(flake): Remove `flake-utils` | Benedikt Peetz | 4 days |
| | | | | This library serves no real purpose, and now started failing to updated. | ||
* | refactor(yt): Move to `crates/yt` | Benedikt Peetz | 4 days |
| | | | | Having one crate outside the `crates` directory is just weird. | ||
* | build(flake): Switch to `nixpkgs-unstable-small` | Benedikt Peetz | 4 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 dependencies | Benedikt Peetz | 4 days |
| | |||
* | fix(yt/subscribe): Deal with moved url value | Benedikt Peetz | 4 days |
| | |||
* | fix(yt/downloader/progress_hook): Silence clippy warnings | Benedikt Peetz | 4 days |
| | |||
* | refactor(yt): Consolidate the multiple ANSI escape code wrapper functions | Benedikt Peetz | 4 days |
| | |||
* | fix(yt/watch/playlist): Workaround terminals, that treat 0 as 1 | Benedikt Peetz | 4 days |
| | |||
* | fix(yt/storage/migrate): Correct the two to three migration script | Benedikt Peetz | 4 days |
| | |||
* | fix(yt/storage/migrate): Correctly state the upgrade to the topmost version | Benedikt Peetz | 4 days |
| | | | | Previously `$new_version` and `$old_version` were mistakenly swapped. | ||
* | feat(yt/status): Show the percentage of videos that were actually watched | Benedikt Peetz | 4 days |
| | |||
* | style(yt/cli): Sort the toplevel flags alphabetically | Benedikt Peetz | 4 days |
| | |||
* | fix(yt/{se,}dowa): Don't exit completely, if the downloader fails | Benedikt Peetz | 4 days |
| | | | | | Otherwise the `yt watch` part exists even if videos are available to be watched. | ||
* | feat({yt_dlp,yt}): Migrate from pyo3 to rustpython | Benedikt Peetz | 4 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): Update | Benedikt Peetz | 4 days |
| | |||
* | build(flake): Add `git-bug` to the devshell | Benedikt Peetz | 2025-03-21 |
| | |||
* | fix(yt/storage/migrate): Improve error messages | Benedikt Peetz | 2025-03-21 |
| | |||
* | fix(yt/storage/migrate): Account for the fact that DbVersions::Empty means ↵ | Benedikt Peetz | 2025-03-21 |
| | | | | no Version | ||
* | style(treewide): Adopt rust edition 2024 rustfmt style | Benedikt Peetz | 2025-03-21 |
| | |||
* | chore(yt_dlp/wrappers/info_json): Add additional missing field | Benedikt Peetz | 2025-03-21 |
| | |||
* | refactor(yt_dlp): Remove the unneeded `async` from the public functions | Benedikt Peetz | 2025-03-21 |
| | |||
* | chore(treewide): Migrate to rust edition 2024 | Benedikt Peetz | 2025-03-21 |
| | | | | | Even though the diff in the libmpv2 crate is quite big, it really only added `unsafe` blocks to the `unsafe` functions. | ||
* | build(treewide): Update | Benedikt Peetz | 2025-03-21 |
| | |||
* | feat(yt/storage/videos): Validate in DB, that is_focused is UNIQUE | Benedikt Peetz | 2025-03-21 |
| | | | | This makes the situation where two or more videos are focused impossible to represent in the db. | ||
* | refactor(yt/storage/migrate/sql): Use predictable SQL paths | Benedikt Peetz | 2025-03-21 |
| | | | | I.e. `<version_number>_<old_version_name>_to_<new_version_name>.sql` | ||
* | refactor(yt/storage/migrate): Factor out duplicated code into macro | Benedikt Peetz | 2025-03-21 |
| | |||
* | fix(yt/storage/video_database/set): Reset the `is_focused` flag | Benedikt Peetz | 2025-03-07 |
| | |||
* | chore(version): v1.5.0 v1.5.0 | Benedikt Peetz | 2025-02-22 |
| | |||
* | fix(package): Update to account for modifications in `mkdb.sh` | Benedikt Peetz | 2025-02-22 |
| | |||
* | build(treewide): Update | Benedikt Peetz | 2025-02-22 |
| | |||
* | chore(treewide): Add/Update the license headers | Benedikt Peetz | 2025-02-22 |
| | |||
* | refactor(yt/storage/video_database): Move `getters,setters` to `get,set` | Benedikt Peetz | 2025-02-22 |
| | | | | | This also removes some `get_`/`set_` prefixes from the functions in these modules, as `get::<function>` is more idiomatic than `get_<function>`. | ||
* | feat(yt/watch/playlist): Init | Benedikt Peetz | 2025-02-22 |
| | | | | | This leverages the fact, that we store the playlist information in the database to visualize the current playlist. | ||
* | feat(yt/watch/playlist_handler): Rewrite to use new db layout | Benedikt Peetz | 2025-02-22 |
| | | | | | | | | | | The previous iteration actually worked with the mpv playlist, which proved very bug prone as mpv does not store our costume video, but the loaded cache path. Besides this, the old handler stored everything in memory, resulting in a full playback reset on restart. This new version uses the db to store the playlist and the playback progress and simply synchronizes this playlist with mpv. | ||
* | feat(yt/storage/migrate): Add version two | Benedikt Peetz | 2025-02-22 |
| | |||
* | fix(yt/storage/migrate/sql/01_zero_to_one.sql): Account for duration being NULL | Benedikt Peetz | 2025-02-22 |
| | |||
* | fix(yt/storage/migrate): Improve error reporting | Benedikt Peetz | 2025-02-22 |
| | |||
* | fix(yt/status): Don't show the database version in `yt status` | Benedikt Peetz | 2025-02-22 |
| | | | | | | The db version is already migrated to the latest at this point, thus this is effectively just showing the latest available version. `yt --version` actually shows the current one. | ||
* | fix(yt/): Box large futures | Benedikt Peetz | 2025-02-22 |
| | | | | Otherwise, they could result in a stack overflow | ||
* | fix(yt/main): Call `watch` with the required `Arc<App>` | Benedikt Peetz | 2025-02-22 |
| | |||
* | fix(yt/main): Actually remove the `yt check output-info-json` | Benedikt Peetz | 2025-02-22 |
| | |||
* | refactor(yt/description): Move to the `comments` subdirectory | Benedikt Peetz | 2025-02-22 |
| | |||
* | feat(yt/): Use concrete types in the `Video` structure | Benedikt Peetz | 2025-02-22 |
| |