aboutsummaryrefslogtreecommitdiffstats
path: root/crates/yt_dlp (unfollow)
Commit message (Collapse)Author
2025-07-24fix(treewide): Use `json_try_get!` instead of `json.get(..).map(|| ..)`Benedikt Peetz
`json.get` will return `Some(Value::Null)` if the json key exists but has been set to `null`. This is obviously not what we want, and as such we also need to check that the value is not null, before calling map. The `json_try_get!` macro does exactly that.
2025-07-18build(treewide): UpdateBenedikt Peetz
2025-07-18build({update.sh,crates/{libmpv2,yt_dlp}/update.sh}): Remove pointless ↵Benedikt Peetz
update instructions We only need to explicitly update the creates that are not part of the workspace.
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-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-06-28chore(yt_dlp/package_hacks): Add missing license headersBenedikt Peetz
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-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-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.
2025-06-16fix(yt_dlp/): Include the frozen python stdlibBenedikt Peetz
This avoids the dependency on a real std-library (i.e., python3) at runtime.
2025-06-16style(treewide): ReformatBenedikt Peetz
2025-06-16chore(treewide): Add missing copyright headersBenedikt 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-15fix(yt_dlp/json_{cast,get}): Improve error reportingBenedikt 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-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-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-21build(treewide): UpdateBenedikt Peetz
2025-02-22chore(treewide): Add/Update the license headersBenedikt Peetz
2025-02-21chore(crates/yt_dlp/wrappers/info_json): Add further fieldsBenedikt Peetz
2025-02-16style(treewide): Re-formatBenedikt 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.
2025-02-16feat(crates/yt_dlp/lib): Wrap `process_ie_result` functionBenedikt Peetz
2025-02-16fix(crates/yt_dlp/lib): Actually resolve the `entries` generator objectBenedikt Peetz
Previously, we just ignored it.
2025-02-16fix(crates/yt_dlp/lib): Swallow all error logs from yt_dlpBenedikt Peetz
These are already returned as `PythonError`s and thus often printed twice. As such, removing the python print gives the consumer more liberty of how to handle the error.
2025-02-16fix(crates/yt_dlp/progress_hook): Print the progress to stderrBenedikt Peetz
2025-02-16fix(crates/yt_dlp/error::PythonError): Add the python type as `kind`Benedikt Peetz
2025-02-14chore(crates/yt_dlp/wrappers/info_json): Add further fieldsBenedikt Peetz
2025-02-14test(crates/yt_dlp): Ignore tests that hang foreverBenedikt Peetz
2025-02-14fix(crates/yt_dlp): Actually return errors instead of panicingBenedikt Peetz
2025-02-14fix(crates/yt_dlp): Avoid printing the file extension in the progress displayBenedikt Peetz
The file extension should not be relevant for a user.
2025-02-14build(treewide): UpdateBenedikt Peetz
2024-12-14fix(yt_dlp/wrappers/info_json): Add further fields to `RequestedDownloads`Benedikt Peetz
2024-12-14build(treewide): UpdateBenedikt Peetz