Skip to content

Pure Stream seamlessly connects to your Plex media servers while providing sophisticated content filtering to ensure age-appropriate viewing for the whole family. Whether you're watching with young children or want to maintain content standards, Pure Stream gives you the tools to enjoy your media collection worry-free.

Notifications You must be signed in to change notification settings

purestream711/PureStream

Repository files navigation

Pure Stream

A family-friendly Android TV streaming app that connects to Plex media servers with advanced profanity filtering capabilities.

Features

๐ŸŽฌ Plex Integration

  • Seamless authentication with Plex accounts via OAuth 2.0
  • QR code login support for TV devices
  • WebView authentication for mobile devices
  • Real-time media library synchronization
  • Support for multiple Plex servers

๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ Family-Friendly Content Filtering

  • 4-Tier Profanity Filter System: None, Mild, Moderate, Strict
  • Real-time Subtitle Analysis: Automatic profanity detection using OpenSubtitles integration
  • Audio Muting: Intelligent audio muting during profanity events
  • Custom Filter Lists: Add custom words to filter or whitelist
  • Profile-Based Settings: Each user profile maintains individual filter preferences

๐Ÿ“ฑ User Profiles

  • Multiple user profiles with unique avatars (13 animal-themed options)
  • Child profiles with parental controls
  • Per-profile library selection and filter settings
  • Profile persistence across sessions

๐ŸŽฎ Android TV Optimized

  • Leanback launcher support
  • D-pad navigation throughout the app
  • Focus management for seamless TV navigation
  • Grid layouts optimized for large screens
  • Virtual keyboard with voice search

๐ŸŽฏ Media Player

  • LibVLC integration with hardware acceleration
  • 4K HDR Support: Proper color space handling for HDR content
  • Filtered subtitle display with timing adjustment
  • Real-time profanity detection during playback
  • Episode tracking and progress saving for TV shows
  • Resume playback support
  • Picture-in-Picture mode (mobile)

Screenshots

Android TV


Home Screen

Profile Selection

Movie Details

TV Show Details

Search

Settings

Profanity Filter Settings

Profile Statistics

Level Up Celebration

Connect to Plex

Mobile


Home Screen

Profile Selection

Movie Details

TV Show Details

Episode Details

Search

Settings

Profanity Filter

Profile Statistics

Level Up

Connect to Plex

Requirements

  • Minimum SDK: Android 9 (API 28)
  • Target SDK: Android 15 (API 35)
  • Device Type: Android TV or Android Mobile
  • Plex Account: Required for media streaming

Installation

From Source

  1. Clone the repository:
git clone https://github.com/yourusername/PureStream.git
cd PureStream
  1. Open the project in Android Studio

  2. Sync Gradle dependencies

  3. Build the APK:

# Windows
.\gradlew.bat assembleDebug

# macOS/Linux
./gradlew assembleDebug
  1. Install on device:
# Windows
.\gradlew.bat installDebug

# macOS/Linux
./gradlew installDebug

Tech Stack

Core Framework

  • Language: Kotlin 1.9.24
  • UI Framework: Jetpack Compose
  • Navigation: Jetpack Navigation Compose
  • Architecture: MVVM (Model-View-ViewModel)

Libraries & Dependencies

  • Android TV: Leanback, TV Material3
  • Networking: Retrofit, OkHttp
  • Database: Room
  • Media Playback: LibVLC 3.6.5 (4K HDR support)
  • Image Loading: Coil
  • Dependency Injection: Manual (ViewModels with Repositories)
  • Coroutines: Kotlin Coroutines with Flow
  • Background Tasks: WorkManager

APIs & Services

  • Plex API: Media server integration
  • OpenSubtitles API: Subtitle fetching and analysis
  • Plex OAuth: Secure authentication

Architecture

MVVM Pattern

UI Layer (Compose)
    โ†“
ViewModels (StateFlow)
    โ†“
Repositories
    โ†“
Data Sources (API Services, Room Database)

Key Components

  • MainActivity.kt: Single-activity architecture with Compose NavHost
  • Repositories: PlexRepository, ProfileRepository, OpenSubtitlesRepository
  • ViewModels: HomeViewModel, MoviesViewModel, TvShowsViewModel, MediaPlayerViewModel
  • Database: Room database with 3 entities (Profile, SubtitleAnalysis, AppSettings)
  • Profanity Filter: Multi-tier filtering system with custom word lists

Project Structure

com.purestream/
โ”œโ”€โ”€ data/
โ”‚   โ”œโ”€โ”€ api/              # Retrofit API services
โ”‚   โ”œโ”€โ”€ database/         # Room database, DAOs, entities
โ”‚   โ”œโ”€โ”€ manager/          # Business logic managers
โ”‚   โ”œโ”€โ”€ model/            # Data models
โ”‚   โ””โ”€โ”€ repository/       # Repository pattern implementations
โ”œโ”€โ”€ profanity/            # Profanity filtering system
โ”‚   โ”œโ”€โ”€ ProfanityFilter.kt
โ”‚   โ”œโ”€โ”€ SubtitleAnalyzer.kt
โ”‚   โ””โ”€โ”€ FilteredSubtitleManager.kt
โ”œโ”€โ”€ ui/
โ”‚   โ”œโ”€โ”€ components/       # Reusable UI components
โ”‚   โ”œโ”€โ”€ screens/          # Screen composables
โ”‚   โ”œโ”€โ”€ theme/            # App theming
โ”‚   โ””โ”€โ”€ viewmodel/        # ViewModels
โ””โ”€โ”€ utils/                # Utility classes

Configuration

Plex Authentication

The app uses Plex OAuth 2.0 with the following identifiers:

  • Client ID: f7f96c82-17e5-4b11-a52f-74b1107bd0fb
  • Product Name: Pure Stream
  • Platform: Android TV

Build Configuration

  • Compile SDK: 35
  • Min SDK: 28
  • Java Compatibility: 1.8
  • Kotlin Compiler: 1.5.14

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • Plex for their media server platform and API
  • OpenSubtitles for subtitle data
  • Android Jetpack team for excellent libraries and tools

Support

For issues, questions, or feature requests, please open an issue.


Note: This app requires a Plex Media Server and valid Plex account to function. Pure Stream is not affiliated with or endorsed by Plex Inc.

About

Pure Stream seamlessly connects to your Plex media servers while providing sophisticated content filtering to ensure age-appropriate viewing for the whole family. Whether you're watching with young children or want to maintain content standards, Pure Stream gives you the tools to enjoy your media collection worry-free.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages