When YouTube rotates player.js to a shape our six sig/nsig regex patterns don't recognise (eg. c2f7551f, May 2026), the whole player path used to die at extract_fns even for clients that don't need the sig fn at all (iOS, Android, Tv all get pre-signed stream URLs). Now sig_fn / nsig_fn extraction is best-effort. Only the signature timestamp is required — every `needs_deobf` client needs sts in the request payload, but the actual deobfuscation functions are only consumed by map_url when a stream URL carries `&s=` or `&n=`. On failure we log a warning and store an empty string; Deobfuscator then skips the JS eval, and any deobfuscate_sig/deobfuscate_nsig call will fail loudly with "sig fn unavailable" instead of crashing the player. Keeps the Tv fallback alive even when sig deobf regex breaks. |
||
|---|---|---|
| .. | ||
| client | ||
| model | ||
| param | ||
| serializer | ||
| util | ||
| cache.rs | ||
| deobfuscate.rs | ||
| error.rs | ||
| lib.rs | ||
| report.rs | ||
| validate.rs | ||