Skip to content

OttomanDeveloper/u_downloader

UDownload

License: GPL v3 Platform Built with Flutter

A Flutter video browser & downloader powered by NewPipe Extractor — search, browse, watch, and download from YouTube without an API key.

⚠️ Disclaimer. UDownload is an independent, educational project. It is not affiliated with, endorsed by, or sponsored by Google/YouTube. "YouTube" is a trademark of Google LLC. You are responsible for complying with the terms of service of any platform you access and with the copyright laws in your jurisdiction. Use it for personal, lawful purposes only.


Features

  • 🔎 Search — YouTube search with autocomplete suggestions and a YouTube Music mode.
  • 🏠 Home feed — category tabs (Trending, Music, Gaming, Movies, News, Sports) + dynamic kiosk tabs, all with infinite-scroll pagination.
  • 📺 Channels — info, uploads, and tab browsing (Videos, Shorts, Live, Playlists).
  • 🎵 Playlists — details and paginated track/video listings.
  • ▶️ Native player — ExoPlayer-based playback with quality selection, video chapters, related videos, and comments (with reply threads).
  • ⬇️ Downloads — download videos through the native layer.
  • 🌙 Polish — light/dark themes, responsive phone/tablet layouts, keep-screen-awake while playing, and reCAPTCHA handling via an in-app WebView.

Screenshots

Home Search Player
Home Search Player

Add your own captures to docs/screenshots/ (PNG) and adjust the table above.

Requirements

Requirement Version
Flutter 3.x (Dart SDK ≥ 3.12)
Platform Android only (minSdk 22 / Android 5.1+)
JDK 17

The player and extraction layers rely on native Android code; iOS/web/desktop are not supported.

Getting started

1. Clone & run

git clone https://github.com/OttomanDeveloper/u_downloader.git
cd u_downloader
flutter pub get   # pulls newpipeextractor_dart ^2.0.0 from pub.dev
flutter run

2. Third-party service keys (optional)

UDownload integrates AppLovin MAX (ads), OneSignal (push), and Firebase (analytics/messaging). These need your own accounts/keys and a google-services.json to function; core features still work without them (ads/push/analytics will simply be inert). Never commit real keys.

Tech stack

  • Flutter + Dart 3
  • State / DI: flutter_bloc, hydrated_bloc, equatable, get_it
  • Routing: go_router
  • Extraction/playback: newpipeextractor_dart (NewPipe Extractor + a native ExoPlayer view)
  • UI: google_fonts, auto_size_text, shimmer, responsive_framework, loading_indicator, animate_do
  • Misc: flutter_inappwebview (reCAPTCHA), wakelock_plus, share_plus, url_launcher, permission_handler, shared_preferences, path_provider
  • Services: applovin_max, onesignal_flutter, Firebase

Architecture

Layered, with a clear separation between data, logic, and UI:

lib/
├─ core/
│  ├─ blocs/        # Cubits / BLoCs (search, channel, playlist, comments, …)
│  ├─ server/       # Repositories wrapping the extractor (videos, channel, …)
│  ├─ functions/    # get_it setup, url handling, cookies, isolates, parsers
│  └─ models/ extensions/ database/ …
├─ views/
│  ├─ screens/      # dashboard (home/categories/downloads), search, channel,
│  │               # playlist, video_details, splash …
│  └─ widgets/      # reusable widgets (video cards, shimmers, native player …)
└─ meta/hooks/      # hooks_meta.dart — shared barrel import

Conventions: state via Cubit/BLoC (no setState), network access only through a repository, stateless token-based pagination, and a bounded native thread pool with request timeouts. See CONTRIBUTING.md for details.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for setup, conventions, and the PR workflow. By contributing you agree your work is licensed under GPL-3.0.

License

UDownload is licensed under the GNU General Public License v3.0 — see LICENSE and NOTICE.

This project depends on NewPipe Extractor (GPL-3.0); the copyleft license is inherited from that dependency. Note that combining GPL-3.0 code with the bundled proprietary SDKs (AppLovin/OneSignal/Firebase) can create licensing conflicts when distributing binaries — review with legal counsel before publishing builds. See NOTICE for full attributions.

Acknowledgements


Maintained by Muhammad Usman (@OttomanDeveloper).

About

Open-source YouTube browser & downloader built with Flutter. Browse trending, search, channels & playlists, watch with a native ExoPlayer, and download videos — powered by newpipeextractor_dart (NewPipe Extractor). No ads, no tracking. GPL-3.0.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors