URLs → git.sulkta.com. Audit-ticket prefixes (SPEC §N, audit Track X, vc=N audit-fix, FIX (audit ...), PORT DEVIATION) stripped from comments — technical reasoning retained. Crafting-table LAN refs softened to 'Sulkta build host'. README sheds marketing scaffolding + stale status tables.
77 lines
2.5 KiB
Markdown
77 lines
2.5 KiB
Markdown
# 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: <https://fdroid.sulkta.com/fdroid/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 <https://github.com/TeamNewPipe/NewPipe>. 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.
|