# Straw A Sulkta fork of [NewPipe](https://github.com/TeamNewPipe/NewPipe). Android YouTube client, Compose UI, Media3 player, with [SponsorBlock](https://sponsor.ajay.app/) and [Return YouTube Dislike](https://returnyoutubedislike.com/) baked in. The extractor is `strawcore`, a Rust port of NewPipeExtractor exposed to Kotlin via UniFFI. No InnerTube/JS deobf code path lives on the JVM anymore. ## Install F-Droid repo: Add the repo in your F-Droid client of choice, then install Straw. The app also self-updates from the same repo when an APK lands there with a higher `versionCode`. ## What's in - Search, video detail, channel pages, playlists - Inline player + fullscreen + minibar + background audio + PiP - Media3 ExoPlayer (DASH / HLS / progressive / merged DASH chunks) - SponsorBlock auto-skip (categories user-toggleable) - Return YouTube Dislike on video detail - RSS-based subscription feed (fast — ~1s for 50 subs) - Hide-shorts / hide-paid / hide-age-restricted feed filters - Resume positions + watch history + search history - Local playlists, downloads (video + audio) - NewPipe-format settings import (subs + playlists + history) ## What's out (on purpose) - Trending / algorithmic feeds. Subscriptions only. - iOS / desktop targets. Android-only for now. - Google Play Services anything. ## Layout ``` strawApp/ Sulkta-authored app — Compose UI, Media3 wiring, SB + RYD clients rust/ strawcore — UniFFI wrapper around the Rust extractor shared/ KMP scaffold inherited from upstream NewPipe (unused for now) app/ Upstream NewPipe :app module — kept for reference ``` ## Build ``` ./gradlew :strawApp:assembleDebug ``` Requires the Rust toolchain plus the four Android targets: ``` rustup target add aarch64-linux-android armv7-linux-androideabi \ x86_64-linux-android i686-linux-android cargo install cargo-ndk uniffi-bindgen ``` …and `ANDROID_NDK_HOME` pointing at NDK r27c (or newer). The Gradle build runs `cargo ndk` + `uniffi-bindgen` automatically. ## License GPL-3.0-or-later, inherited from upstream NewPipe. ## Upstream This repo tracks . Upstream changes get pulled periodically via the `upstream` remote. ## Disclaimer Not affiliated with YouTube, Google, NewPipe e.V., the SponsorBlock project, or Return YouTube Dislike. Trademarks belong to their owners. Straw uses public web endpoints; nothing here authenticates to any account.