about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAge
* fix(config/from_filesystem): Only create the parent of config pathsBenedikt Peetz2024-08-23
| | | | | Otherwise, it would create a `videos.sqlite` *directory*, which is obviously not ideal.
* fix(config/from_filesystem): Just load an empty config, if there isn't oneBenedikt Peetz2024-08-23
|
* chore(version): v1.1.0 v1.1.0Benedikt Peetz2024-08-23
|
* docs(config): Add an example configuration fileBenedikt Peetz2024-08-23
|
* fix(cli/verbosity): Simplify setting the default levelBenedikt Peetz2024-08-23
|
* style(treewide): FormatBenedikt Peetz2024-08-23
|
* fix(cli): Always log with a verbosity of at least WARNBenedikt Peetz2024-08-23
| | | | | This ensures that warnings actually reach the user. And the `--quite` flag can still be used to silence all output.
* fix(treewide): Actually use the values from the configBenedikt Peetz2024-08-23
|
* feat(watch/events): Add further understood script-messagesBenedikt Peetz2024-08-23
| | | | | | They make it possible to force check for new available videos and to remove the currently playing video from the playlist to free cache space (otherwise you would have to quit the whole playlist).
* fix(storage/setters): Enforce status invariantsBenedikt Peetz2024-08-23
|
* feat(treewide): Use a configuration fileBenedikt Peetz2024-08-23
| | | | | | This allows use to avoid duplication of default values in the codebase and obviously also facilitates changing these without having to re-compile.
* refactor(yt_dlp): Also move the `crates` subdirectoryBenedikt Peetz2024-08-23
|
* refactor(cli): Replace the byte parser with the one from the `bytes` crateBenedikt Peetz2024-08-23
|
* fix(yt_dlp/lib): Standardize the formatting of bytes with the new `bytes` crateBenedikt Peetz2024-08-23
|
* feat(crates/bytes): InitBenedikt Peetz2024-08-23
|
* refactor(libmpv2): Move to the `crates` directoryBenedikt Peetz2024-08-23
|
* chore(yt_dlp/progress_hook): Also consider the `total_bytes_estimate` fieldBenedikt Peetz2024-08-23
|
* chore(yt_dlp/info_json): Add further fieldsBenedikt Peetz2024-08-23
|
* refactor(storage/downloader): Remove unused `get_next_video_watchable`Benedikt Peetz2024-08-23
|
* fix(storage/downloader): Sort the next videos to be downloaded like in the ↵Benedikt Peetz2024-08-23
| | | | selection file
* feat(cli): Add an explicit `subs export` subcommandBenedikt Peetz2024-08-23
| | | | | | This subcommand is functionally identical with the previous `subs list --url`, but semantically it improves the situation, by having symmetrical `import` and `export` subcommands.
* fix(storage/schema.sql): Tell SQLite to perform type-checkingBenedikt Peetz2024-08-22
| | | | | | Otherwise, SQLite tries to “coerce” types into fitting in the “preferred” type of the table. Now SQLite actually refuses to accept a type mismatch.
* refactor(storage/getters): Inline an Option re-creation with `map`Benedikt Peetz2024-08-22
|
* fix(storage/setters): Avoid writing a literal "NULL" string into the dbBenedikt Peetz2024-08-22
| | | | | | Sqlx supports turning an option to a NULL insertion, but trying to insert a string, containing "NULL", will result in this literal string being written to the database.
* refactor(storage): Make all URL parsings panicBenedikt Peetz2024-08-22
| | | | | | These URLs should be checked *before* they are written to the database, thus being unable to decode them after they've been read from the database is an application bug and not a user input issue.
* refactor(cli): Remove the useless `concurrent_processes` flag from `update`Benedikt Peetz2024-08-22
| | | | | With the new `update_raw.py` script, supporting this flag becomes nearly impossible. Thus, we're simply removing it.
* fix(update): Propagate the logging options to the `update_raw.py` scriptBenedikt Peetz2024-08-22
|
* fix(package): Actually provide the blake3 library to the python interpreterBenedikt Peetz2024-08-22
|
* chore(version): v1.0.0 v1.0.0Benedikt Peetz2024-08-22
|
* chore(treewide): Add missing licenseBenedikt Peetz2024-08-22
|
* fix(yt_dlp/info_json): Add further missing fieldsBenedikt Peetz2024-08-22
|
* fix(watch/events): Also mark a video inactive on the stop eventBenedikt Peetz2024-08-22
|
* fix(constants): Don't set a default subtile languageBenedikt Peetz2024-08-22
| | | | Always fetching a subtitle file is rather counterproductive.
* fix(update): Correctly treat a success as a successBenedikt Peetz2024-08-22
|
* fix(subscriptions/add): Ignore the trailing slash on URLsBenedikt Peetz2024-08-22
|
* fix(storage/get_videos): Also order by `publish_date`Benedikt Peetz2024-08-22
| | | | | All freshly added videos have a priority of 0. To ensure that they are still ordered, also sort by `publish_date`.
* feat(select/file): Allow `--priority` argument to all functionsBenedikt Peetz2024-08-22
| | | | This allows setting a priority even on picked videos.
* feat(download): Support limiting the downloader by maximal cache sizeBenedikt Peetz2024-08-22
|
* test(benches/update): InitBenedikt Peetz2024-08-22
|
* perf(raw_update.py)!: Don't fetch entries that are already in the databaseBenedikt Peetz2024-08-22
| | | | | | | | | | | | | | | | | | | | Testing has resulted in a speed-up of circa 3400% (updates of 1 subscription (which is already fully stored) are now ca. 1 sec from previously 34 sec). BREAKING CHANGE: The extractor hash is now calculated from the `id` and not the `webpage_url` field requiring a complete re-fetch of all stored videos. ```bash $# export your subscriptions: $ yt subs list --urls > subs.txt $# remove the old database $ mv ~/.local/share/yt/videos.sqlite{,.old} $# reimport the subsciptions $ yt subs import subs.txt $# refetch all videos $ yt upadate ```
* build(package): Include python `blake3` dependencyBenedikt Peetz2024-08-22
|
* chore(version): v0.1.3 v0.1.3Benedikt Peetz2024-08-21
|
* fix(yt_dlp/info_json): Add another missing attributeBenedikt Peetz2024-08-21
|
* chore(version): v0.1.2 v0.1.2Benedikt Peetz2024-08-21
|
* fix(yt_dlp/info_json): Add further fieldsBenedikt Peetz2024-08-21
|
* docs(yt_dlp/lib): Improve some commentsBenedikt Peetz2024-08-21
|
* build(flake): Wrap the yt binary with the required dependenciesBenedikt Peetz2024-08-21
|
* chore(version): v0.1.1 v0.1.1Benedikt Peetz2024-08-21
|
* fix(select/duration): Also parse `[No Duration]` as durationBenedikt Peetz2024-08-21
|
* fix(update): Use the `raw_update.py` from the pathBenedikt Peetz2024-08-21
|