npe-sync: visitorData + visionOS(101) + xtags audio typing (best-effort, additive)
Some checks failed
gitleaks / scan (push) Failing after 1s
Some checks failed
gitleaks / scan (push) Failing after 1s
Brings the port up to current NewPipe Extractor coverage: - visitorData: fetched + attached to the anonymous reel/web/ios/visionos InnerTube contexts (upstream "always pass a valid visitorData"). Best-effort — a failure returns None and extraction proceeds exactly as before. Cached process-wide with a 15-min TTL, and invalidated when the primary android response is rejected (decoy/playability) so a bad session self-heals. - visionOS client (101): a 4th /player fetch, ON by default, recovering >360p streams for SABR-only / made-for-kids videos where android/ios cap at 360p. Formats merged android-first (android wins itag ties); a failure changes nothing. HLS + DASH manifest branches now skip empty urls (an empty visionOS url no longer shadows a real ios/android one). - xtags: derive audio track type (original/dubbed/descriptive/secondary) from the format xtags protobuf, falling back to the audioIsDefault heuristic when absent. Hand-rolled protobuf walker, fuzzed (4M inputs, no panic); 32-bit length guarded via try_from. FFI surface unchanged (AudioStream gains an additive track_type the wrapper may later surface). 155 lib + 7 integration tests, clippy -D clean.
This commit is contained in:
parent
988e67414d
commit
2452f1785d
10 changed files with 821 additions and 70 deletions
|
|
@ -36,6 +36,18 @@ pub const ANDROID_CLIENT_VERSION: &str = "21.03.36";
|
|||
pub const ANDROID_SDK_VERSION: u32 = 36;
|
||||
pub const ANDROID_OS_VERSION: &str = "16";
|
||||
|
||||
// visionOS client (client 101). A best-effort 4th /player fetch that recovers
|
||||
// >360p streams for SABR-only / "made for kids" videos where the ANDROID/IOS
|
||||
// clients cap at a single 360p muxed stream. Values from NPE
|
||||
// ClientsConstants.java (commit 82b7e410, "Workaround again SABR-only
|
||||
// responses"). Carries NO poToken.
|
||||
pub const VISIONOS_CLIENT_ID: &str = "101";
|
||||
pub const VISIONOS_CLIENT_NAME: &str = "VISIONOS";
|
||||
pub const VISIONOS_CLIENT_VERSION: &str = "1.02";
|
||||
pub const VISIONOS_DEVICE_MODEL: &str = "RealityDevice14,1";
|
||||
pub const VISIONOS_OS_VERSION: &str = "25.6.0.23O471";
|
||||
pub const VISIONOS_USER_AGENT_VERSION: &str = "25_6_0";
|
||||
|
||||
// Base URLs (NPE YoutubeParsingHelper.java:91,96).
|
||||
pub const YOUTUBEI_V1_URL: &str = "https://www.youtube.com/youtubei/v1/";
|
||||
pub const YOUTUBEI_V1_GAPIS_URL: &str = "https://youtubei.googleapis.com/youtubei/v1/";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue