A multi-provider streaming application built with Flutter that aggregates content from various movie and TV show providers. This application provides a unified interface to browse, search, and stream content from multiple sources.
- Multi-Provider Support: Access content from 15+ streaming providers
- Global Search: Search across all providers simultaneously
- Provider Switching: Easily switch between different content providers
- Category Browsing: Browse content by categories (Hollywood, Bollywood, Web Series, etc.)
- Detailed Info Pages: View comprehensive information about movies and TV shows
- Episode Management: Browse and select episodes for TV series
- Multiple Stream Quality: Support for various quality options (480p, 720p, 1080p, etc.)
- VLC Integration: External VLC player support for streaming
- Built-in Player: Integrated video player using tha_player
- TV-Optimized UI: D-Pad navigation support for Android TV
- Cross-Platform: Available on Android, Android TV, Linux, and more
graph TB
subgraph "Presentation Layer"
A[main.dart] --> B[StartupCheck]
B --> C[MoviesScreen]
C --> D[InfoScreen]
D --> E[VideoPlayerScreen]
C --> F[GlobalSearchScreen]
end
subgraph "Business Logic"
G[ProviderManager] --> H[ProviderFactory]
H --> I[Provider Services]
end
subgraph "Data Layer"
I --> J[HTTP Requests]
J --> K[HTML Parsing]
K --> L[Stream Extractors]
end
subgraph "Models"
M[Movie]
N[MovieInfo]
O[Episode]
P[Stream]
end
C --> G
D --> I
E --> L
I --> M
I --> N
I --> O
L --> P
style A fill:#ff6b6b
style C fill:#4ecdc4
style D fill:#45b7d1
style E fill:#96ceb4
style G fill:#ffeaa7
style I fill:#dfe6e9
style L fill:#74b9ff
graph LR
A[ProviderService Interface] --> B[DriveProviderService]
A --> C[HdhubProviderService]
A --> D[XdmoviesProviderService]
A --> E[DesireMoviesProviderService]
A --> F[MoviesmodProviderService]
A --> G[ZinkmoviesProviderService]
A --> H[AnimesaltProviderService]
A --> I[Movies4uProviderService]
A --> J[VegaProviderService]
A --> K[FilmycabProviderService]
A --> L[ZeeflizProviderService]
A --> M[NfProviderService]
A --> N[AnimePaheProviderService]
A --> O[YoMoviesProviderService]
A --> P[KhdHubProviderService]
subgraph "Provider Components"
Q[catalog.dart]
R[getpost.dart]
S[info.dart]
T[geteps.dart]
U[getstream.dart]
V[headers.dart]
end
B --> Q
B --> R
B --> S
B --> T
B --> U
style A fill:#ff6b6b
style B fill:#4ecdc4
style C fill:#4ecdc4
style D fill:#4ecdc4
sequenceDiagram
participant User
participant InfoScreen
participant ProviderService
participant StreamExtractor
participant VideoPlayer
User->>InfoScreen: Select Episode
InfoScreen->>ProviderService: getMovieInfo(url)
ProviderService->>ProviderService: Parse HTML
ProviderService-->>InfoScreen: MovieInfo with Episodes
User->>InfoScreen: Play Episode
InfoScreen->>ProviderService: getStreams(url, quality)
ProviderService->>StreamExtractor: Extract Streams
alt HubCloud
StreamExtractor->>StreamExtractor: HubCloudExtractor
else GDFlix
StreamExtractor->>StreamExtractor: GDFlixExtractor
else VCloud
StreamExtractor->>StreamExtractor: VCloudExtractor
else FilePress
StreamExtractor->>StreamExtractor: FilepressExtractor
end
StreamExtractor-->>ProviderService: Stream URLs
ProviderService-->>InfoScreen: List of Streams
User->>InfoScreen: Select Stream
InfoScreen->>VideoPlayer: Play(streamUrl)
VideoPlayer-->>User: Video Playback
screenscapetv/
├── lib/
│ ├── main.dart # Application entry point
│ ├── libs/
│ │ └── baseurl.dart # Base URL management
│ ├── models/
│ │ ├── movie.dart # Movie model for catalog
│ │ └── movie_info.dart # Detailed movie/episode info
│ ├── provider/
│ │ ├── provider_manager.dart # Provider state management
│ │ ├── provider_factory.dart # Provider instantiation
│ │ ├── provider_service.dart # Abstract provider interface
│ │ ├── providers.dart # Provider data management
│ │ ├── episode_stream_extractor.dart # Episode stream extraction
│ │ ├── extractors/ # Stream extractors
│ │ │ ├── stream_types.dart
│ │ │ ├── hubcloud_extractor.dart
│ │ │ ├── gdflix_extractor.dart
│ │ │ ├── vcloud_extractor.dart
│ │ │ ├── filepress_extractor.dart
│ │ │ ├── gdirect_extractor.dart
│ │ │ └── gofile_extractor.dart
│ │ ├── drive/ # Drive provider
│ │ │ ├── drive_provider_service.dart
│ │ │ ├── catalog.dart
│ │ │ ├── getpost.dart
│ │ │ ├── geteps.dart
│ │ │ ├── info.dart
│ │ │ └── index.dart
│ │ ├── hdhub/ # Hdhub4u provider
│ │ │ ├── hdhub_provider_service.dart
│ │ │ ├── catalog.dart
│ │ │ ├── getpost.dart
│ │ │ ├── info.dart
│ │ │ ├── getstream.dart
│ │ │ ├── get_redirect_links.dart
│ │ │ ├── headers.dart
│ │ │ └── index.dart
│ │ ├── xdmovies/ # Xdmovies provider
│ │ ├── desiremovies/ # DesireMovies provider
│ │ ├── moviesmod/ # Moviesmod provider
│ │ │ └── tech_extractor.dart # Custom tech extractor
│ │ ├── zinkmovies/ # ZinkMovies provider
│ │ ├── animesalt/ # AnimeSalt provider
│ │ ├── movies4u/ # Movies4u provider
│ │ ├── vega/ # VegaMovies provider
│ │ ├── filmycab/ # FilmyCab provider
│ │ ├── zeefliz/ # Zeefliz provider
│ │ ├── nf/ # Netflix Mirror provider
│ │ │ └── nf_get_cookie.dart # Cookie management
│ │ ├── animepahe/ # AnimePahe provider
│ │ ├── yomovies/ # YoMovies provider
│ │ └── khdhub/ # 4kHDHub provider
│ ├── screens/
│ │ ├── startup_check.dart # Initial VLC check screen
│ │ ├── movies_screen.dart # Main catalog screen
│ │ ├── info.dart # Movie/Series details
│ │ ├── global_search_screen.dart # Multi-provider search
│ │ └── video_player_screen.dart # Video playback
│ ├── widgets/
│ │ ├── sidebar.dart # Navigation sidebar
│ │ ├── seasonlist.dart # Season selection
│ │ ├── episode_selection_dialog.dart # Episode picker
│ │ └── streaming_links_dialog.dart # Stream quality selector
│ └── utils/
│ ├── vlc_checker.dart # VLC availability check
│ ├── vlc_launcher.dart # External VLC launcher
│ └── key_event_handler.dart # D-Pad/keyboard navigation
├── assets/ # Application assets
│ ├── Home.png
│ ├── INFO.png
│ └── EPS.png
├── android/ # Android platform code
├── ios/ # iOS platform code
├── linux/ # Linux platform code
├── windows/ # Windows platform code
├── macos/ # macOS platform code
├── web/ # Web platform code
├── debian-package/ # Debian package files
├── pubspec.yaml # Project dependencies
└── analysis_options.yaml # Dart analyzer config
| Provider | Categories | Special Features |
|---|---|---|
| 🎥 Drive | Hollywood, Bollywood, Web Series | Default provider |
| 🎬 Hdhub4u | Multiple categories | Redirect link handling |
| 📽️ Xdmovies | Movies & Series | - |
| 🎭 DesireMovies | Hollywood, Bollywood | - |
| 🎪 Moviesmod | Multiple categories | Tech extractor |
| 💿 ZinkMovies | Movies & Series | - |
| 🎌 AnimeSalt | Anime | Episode support |
| 📺 Movies4u | Movies & TV | - |
| 🌟 VegaMovies | Hollywood, Bollywood | Multiple extractors |
| 🚗 FilmyCab | Movies | - |
| 🎦 Zeefliz | Movies & Series | - |
| 📡 Netflix Mirror | Mirror content | Cookie management |
| 🎯 AnimePahe | Anime | - |
| 🎬 YoMovies | Movies | - |
| 🎞️ 4kHDHub | 4K content | Redirect handling |
- Framework: Flutter 3.10.8+
- Language: Dart
- UI: Material Design (Dark Theme)
- State Management: ChangeNotifier (Provider Pattern)
- HTTP Client: http package
- HTML Parsing: html package
- Video Player: tha_player
- External Player: VLC (via url_launcher)
- Wakelock: wakelock_plus
- Local Storage: shared_preferences
dependencies:
flutter_html: ^3.0.0 # HTML rendering
http: ^1.2.0 # HTTP requests
html: ^0.15.4 # HTML parsing
tha_player: ^0.5.1 # Video player
wakelock_plus: ^1.2.9 # Screen wake lock
package_info_plus: ^8.1.1 # App info
url_launcher: ^6.3.1 # External links/VLC
installed_apps: ^2.1.1 # Check installed apps
shared_preferences: ^2.5.4 # Local storage- Flutter SDK (3.10.8 or higher)
- Dart SDK
- Android Studio / VS Code with Flutter extension
- VLC Media Player (for external playback)
-
Clone the repository
git clone https://github.com/yourusername/screenscapetv.git cd screenscapetv -
Install dependencies
flutter pub get
-
Run the app
# For Android flutter run # For Android TV flutter run # For Linux flutter run -d linux # For Web flutter run -d chrome
-
Build release APK
# Universal APK flutter build apk # Split per ABI (smaller file size) flutter build apk --split-per-abi
-
Build for other platforms
# Linux flutter build linux # Windows flutter build windows # macOS flutter build macos
- D-Pad/Arrow Keys: Navigate through UI elements
- Enter/Select: Confirm selection
- Back: Return to previous screen
- Menu: Open provider selection
- Select Provider: Use the sidebar to switch between content providers
- Browse Categories: Choose from available categories for each provider
- Search: Use the global search to find content across all providers
- View Details: Click on any movie/series to see detailed information
- Select Quality: Choose your preferred streaming quality
- Play: Stream directly in-app or open with external VLC player
Each provider implements the ProviderService interface with these methods:
abstract class ProviderService {
Future<MovieInfo> getMovieInfo(String url);
Future<List<Stream>> getStreams(String url, String quality);
Future<String> processDownloadUrl(String url);
}- catalog.dart: Defines categories and base URLs
- getpost.dart: Fetches movie/series catalog
- info.dart: Parses detailed movie information
- geteps.dart: Extracts episode information
- getstream.dart: Extracts streaming links
- headers.dart: HTTP headers for requests
Stream extractors handle different hosting services:
- HubCloud Extractor: Extracts from HubCloud links
- GDFlix Extractor: Handles GDFlix links with GoFile support
- VCloud Extractor: Processes VCloud streaming links
- FilePress Extractor: Extracts from FilePress
- GDirect Extractor: Direct Google Drive links
Debug prints are available throughout the codebase:
- Provider requests and responses
- Stream extraction process
- Navigation events
- VLC Not Found: Install VLC Media Player on your system
- Stream Not Playing: Try different quality options or external VLC
- Provider Not Loading: Check internet connection and provider availability
Contributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Create a new folder in
lib/provider/ - Implement the
ProviderServiceinterface - Add provider components (catalog, getpost, info, etc.)
- Register in
ProviderFactory - Add to
ProviderManager.availableProviders
This project is for educational purposes only. Please respect content providers' terms of service and copyright laws.
This application is a content aggregator and does not host any content. All content is fetched from third-party providers. Users are responsible for ensuring they have the right to access and stream content through these providers.
Developed with ❤️ using Flutter
- Add more providers
- Implement download functionality
- Add watchlist/favorites
- User authentication
- Continue watching feature
- Subtitle support
- Chromecast support
- iOS app optimization
- Web app optimization
- Cache management
- Offline viewing
For issues and questions:
- Open an issue on GitHub
- Check existing issues for solutions
Note: This README uses Mermaid diagrams. To view them properly, install:
bierner.markdown-mermaid,mermaidchart.vscode-mermaid-chart
Made with Flutter 💙





