Rust port of NewPipeExtractor (YT-only). Plugs into Straw via UniFFI.
Find a file
Sulkta 57efb7326a perf(extract): add lightweight stream_metadata() for feed backfill
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.
2026-06-21 06:55:27 -07:00
.forgejo/workflows ci: add gitleaks workflow 2026-05-27 22:15:00 -07:00
src perf(extract): add lightweight stream_metadata() for feed backfill 2026-06-21 06:55:27 -07:00
tests chore: scrub internal references and tighten README 2026-05-27 13:29:52 -07:00
.gitignore Initial commit 2026-05-24 16:26:57 -07:00
Cargo.lock Rename package to strawcore-core 2026-05-24 17:28:38 -07:00
Cargo.toml Drop cdylib + staticlib from strawcore-core crate-type 2026-05-24 17:40:37 -07:00
LICENSE Initial commit 2026-05-24 16:26:57 -07:00
README.md chore: scrub internal references and tighten README 2026-05-27 13:29:52 -07:00

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.