Rust port of NewPipeExtractor (YT-only). Plugs into Straw via UniFFI.
stream_metadata(video_id) is the cheap tail of stream_info_with: the same Android /player fetch + playability + decoy checks, then populate_video_details only — skipping the JS sig/nsig eval, the extra WEB /player metadata round-trip, the iOS client, and stream/manifest/caption extraction. view_count + duration_seconds come from the same videoDetails the full path uses (populate_microformat never touches either), so they are identical to what stream_info returns — without the ~500ms JS/stream tail or the redundant WEB round-trip. Backs the subscription-feed view-count/duration backfill, which discarded everything but those two fields. |
||
|---|---|---|
| .forgejo/workflows | ||
| src | ||
| tests | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE | ||
| README.md | ||
strawcore
Rust port of NewPipeExtractor (v0.26.2), YouTube-only. Plugs into Straw via UniFFI.
rustypipe regex-parses YouTube's player.js and reimplements the signature deobfuscator in Rust — every YT player rotation breaks it. NPE embeds a JS engine and executes the function live, which survives rotations. strawcore mirrors that architecture on QuickJS via rquickjs.
Build + test
cargo build
cargo test --lib # offline unit tests
cargo test --features online-tests # full smoke incl. live httpbin.org
License
GPL-3.0-or-later. NPE is GPL-3.0; this port inherits.