├── .github ├── ISSUE_TEMPLATE │ ├── application-bug.yml │ ├── feature-request.yml │ └── provider-bug.yml ├── downloads.jpg ├── home.jpg ├── player.jpg ├── results.jpg ├── search.jpg ├── site-list.py └── workflows │ ├── prerelease.yml │ ├── pull_request.yml │ └── site_list.yml ├── .gitignore ├── .idea ├── .name ├── compiler.xml ├── discord.xml ├── gradle.xml ├── jarRepositories.xml └── vcs.xml ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── lagradost │ │ └── cloudstream3 │ │ └── ExampleInstrumentedTest.kt │ ├── debug │ ├── ic_launcher-playstore.png │ └── res │ │ ├── drawable-anydpi-v24 │ │ └── ic_stat_name.xml │ │ ├── drawable-hdpi │ │ └── ic_stat_name.png │ │ ├── drawable-mdpi │ │ └── ic_stat_name.png │ │ ├── drawable-v24 │ │ ├── ic_banner_background.xml │ │ └── ic_launcher_foreground.xml │ │ ├── drawable-xhdpi │ │ └── ic_stat_name.png │ │ ├── drawable-xxhdpi │ │ └── ic_stat_name.png │ │ ├── drawable │ │ └── ic_banner_foreground.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_banner.xml │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_banner.png │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── ic_launcher_background.xml │ │ └── strings.xml │ ├── main │ ├── AndroidManifest.xml │ ├── ic_launcher-playstore.png │ ├── java │ │ └── com │ │ │ └── lagradost │ │ │ └── cloudstream3 │ │ │ ├── AcraApplication.kt │ │ │ ├── CommonActivity.kt │ │ │ ├── DownloaderTestImpl.kt │ │ │ ├── MainAPI.kt │ │ │ ├── MainActivity.kt │ │ │ ├── ParCollections.kt │ │ │ ├── animeproviders │ │ │ ├── AllAnimeProvider.kt │ │ │ ├── AniPlayProvider.kt │ │ │ ├── AniflixProvider.kt │ │ │ ├── AnimeFlickProvider.kt │ │ │ ├── AnimeIndoProvider.kt │ │ │ ├── AnimePaheProvider.kt │ │ │ ├── AnimeSailProvider.kt │ │ │ ├── AnimeSaturnProvider.kt │ │ │ ├── AnimeWorldProvider.kt │ │ │ ├── AnimefenixProvider.kt │ │ │ ├── AnimeflvIOProvider.kt │ │ │ ├── AnimeflvProvider.kt │ │ │ ├── AnimekisaProvider.kt │ │ │ ├── DubbedAnimeProvider.kt │ │ │ ├── GogoanimeProvider.kt │ │ │ ├── GomunimeProvider.kt │ │ │ ├── JKAnimeProvider.kt │ │ │ ├── KawaiifuProvider.kt │ │ │ ├── KimCartoonProvider.kt │ │ │ ├── KuramanimeProvider.kt │ │ │ ├── KuronimeProvider.kt │ │ │ ├── MonoschinosProvider.kt │ │ │ ├── MundoDonghuaProvider.kt │ │ │ ├── NeonimeProvider.kt │ │ │ ├── NineAnimeProvider.kt │ │ │ ├── NontonAnimeIDProvider.kt │ │ │ ├── OploverzProvider.kt │ │ │ ├── OtakudesuProvider.kt │ │ │ ├── TenshiProvider.kt │ │ │ ├── TocanimeProvider.kt │ │ │ ├── WatchCartoonOnlineProvider.kt │ │ │ ├── WcoProvider.kt │ │ │ ├── WcofunProvider.kt │ │ │ └── ZoroProvider.kt │ │ │ ├── extractors │ │ │ ├── Acefile.kt │ │ │ ├── AsianLoad.kt │ │ │ ├── Blogger.kt │ │ │ ├── BullStream.kt │ │ │ ├── DoodExtractor.kt │ │ │ ├── Evolaod.kt │ │ │ ├── Filesim.kt │ │ │ ├── GMPlayer.kt │ │ │ ├── GenericM3U8.kt │ │ │ ├── GuardareStream.kt │ │ │ ├── Hxfile.kt │ │ │ ├── JWPlayer.kt │ │ │ ├── Jawcloud.kt │ │ │ ├── Linkbox.kt │ │ │ ├── M3u8Manifest.kt │ │ │ ├── Maxstream.kt │ │ │ ├── Mcloud.kt │ │ │ ├── MixDrop.kt │ │ │ ├── Mp4Upload.kt │ │ │ ├── MultiQuality.kt │ │ │ ├── OkRuExtractor.kt │ │ │ ├── Pelisplus.kt │ │ │ ├── PlayerVoxzer.kt │ │ │ ├── SBPlay.kt │ │ │ ├── Solidfiles.kt │ │ │ ├── SpeedoStream.kt │ │ │ ├── StreamSB.kt │ │ │ ├── StreamTape.kt │ │ │ ├── Streamhub.kt │ │ │ ├── Streamlare.kt │ │ │ ├── Supervideo.kt │ │ │ ├── Tantifilm.kt │ │ │ ├── Tomatomatela.kt │ │ │ ├── UpstreamExtractor.kt │ │ │ ├── Uqload.kt │ │ │ ├── Userload.kt │ │ │ ├── VidSrcExtractor.kt │ │ │ ├── VideoVard.kt │ │ │ ├── Vidstream.kt │ │ │ ├── VoeExtractor.kt │ │ │ ├── WatchSB.kt │ │ │ ├── WcoStream.kt │ │ │ ├── XStreamCdn.kt │ │ │ ├── YourUpload.kt │ │ │ ├── YoutubeExtractor.kt │ │ │ ├── Zplayer.kt │ │ │ └── helper │ │ │ │ ├── AsianEmbedHelper.kt │ │ │ │ ├── VstreamhubHelper.kt │ │ │ │ └── WcoHelper.kt │ │ │ ├── liveproviders │ │ │ └── EjaTv.kt │ │ │ ├── metaproviders │ │ │ ├── AnilistRedirector.kt │ │ │ ├── CrossTmdbProvider.kt │ │ │ ├── MultiAnimeProvider.kt │ │ │ └── TmdbProvider.kt │ │ │ ├── movieproviders │ │ │ ├── AkwamProvider.kt │ │ │ ├── AllMoviesForYouProvider.kt │ │ │ ├── AltadefinizioneProvider.kt │ │ │ ├── AsiaFlixProvider.kt │ │ │ ├── AsianLoadProvider.kt │ │ │ ├── BflixProvider.kt │ │ │ ├── CimaNowProvider.kt │ │ │ ├── CineblogProvider.kt │ │ │ ├── CinecalidadProvider.kt │ │ │ ├── CuevanaProvider.kt │ │ │ ├── DopeboxProvider.kt │ │ │ ├── DoramasYTProvider.kt │ │ │ ├── DramaSeeProvider.kt │ │ │ ├── DramaidProvider.kt │ │ │ ├── DubokuProvider.kt │ │ │ ├── EgyBestProvider.kt │ │ │ ├── ElifilmsProvider.kt │ │ │ ├── EntrepeliculasyseriesProvider.kt │ │ │ ├── EstrenosDoramasProvider.kt │ │ │ ├── FaselHDProvider.kt │ │ │ ├── FilmanProvider.kt │ │ │ ├── FilmpertuttiProvider.kt │ │ │ ├── FmoviesToProvider.kt │ │ │ ├── FrenchStreamProvider.kt │ │ │ ├── HDMProvider.kt │ │ │ ├── HDMovie5.kt │ │ │ ├── HDTodayProvider.kt │ │ │ ├── HDrezkaProvider.kt │ │ │ ├── IHaveNoTvProvider.kt │ │ │ ├── IdlixProvider.kt │ │ │ ├── IlGenioDelloStreamingProvider.kt │ │ │ ├── KdramaHoodProvider.kt │ │ │ ├── KisskhProvider.kt │ │ │ ├── LayarKacaProvider.kt │ │ │ ├── MeloMovieProvider.kt │ │ │ ├── MultiplexProvider.kt │ │ │ ├── MyCimaProvider.kt │ │ │ ├── NginxProvider.kt │ │ │ ├── OlgplyProvider.kt │ │ │ ├── OpenVidsProvider.kt │ │ │ ├── PeliSmartProvider.kt │ │ │ ├── PelisflixProvider.kt │ │ │ ├── PelisplusHDProvider.kt │ │ │ ├── PelisplusProvider.kt │ │ │ ├── PelisplusProviderTemplate.kt │ │ │ ├── PhimmoichillProvider.kt │ │ │ ├── PinoyHDXyzProvider.kt │ │ │ ├── PinoyMoviePediaProvider.kt │ │ │ ├── PinoyMoviesEsProvider.kt │ │ │ ├── RebahinProvider.kt │ │ │ ├── SeriesflixProvider.kt │ │ │ ├── SflixProProvider.kt │ │ │ ├── SflixProvider.kt │ │ │ ├── SoaptwoDayProvider.kt │ │ │ ├── SolarmovieProvider.kt │ │ │ ├── StreamingcommunityProvider.kt │ │ │ ├── TantiFilmProvider.kt │ │ │ ├── TheFlixToProvider.kt │ │ │ ├── TrailersTwoProvider.kt │ │ │ ├── TwoEmbedProvider.kt │ │ │ ├── UakinoProvider.kt │ │ │ ├── VMoveeProvider.kt │ │ │ ├── VfFilmProvider.kt │ │ │ ├── VfSerieProvider.kt │ │ │ ├── VidEmbedProvider.kt │ │ │ ├── VidSrcProvider.kt │ │ │ ├── VidstreamProviderTemplate.kt │ │ │ ├── WatchAsianProvider.kt │ │ │ ├── XcineProvider.kt │ │ │ └── YomoviesProvider.kt │ │ │ ├── mvvm │ │ │ └── ArchComponentExt.kt │ │ │ ├── network │ │ │ ├── DdosGuardKiller.kt │ │ │ ├── DohProviders.kt │ │ │ ├── RequestsHelper.kt │ │ │ └── WebViewResolver.kt │ │ │ ├── receivers │ │ │ └── VideoDownloadRestartReceiver.kt │ │ │ ├── services │ │ │ └── VideoDownloadService.kt │ │ │ ├── subtitles │ │ │ ├── AbstractSubProvider.kt │ │ │ └── AbstractSubtitleEntities.kt │ │ │ ├── syncproviders │ │ │ ├── AccountManager.kt │ │ │ ├── AuthAPI.kt │ │ │ ├── InAppAuthAPI.kt │ │ │ ├── OAuth2API.kt │ │ │ ├── SyncAPI.kt │ │ │ ├── SyncRepo.kt │ │ │ └── providers │ │ │ │ ├── AniListApi.kt │ │ │ │ ├── DropboxApi.kt │ │ │ │ ├── IndexSubtitleApi.kt │ │ │ │ ├── KitsuApi.kt │ │ │ │ ├── MALApi.kt │ │ │ │ ├── NginxApi.kt │ │ │ │ └── OpenSubtitlesApi.kt │ │ │ ├── torrentproviders │ │ │ └── NyaaProvider.kt │ │ │ ├── ui │ │ │ ├── APIRepository.kt │ │ │ ├── AutofitRecyclerView.kt │ │ │ ├── ControllerActivity.kt │ │ │ ├── MiniControllerFragment.kt │ │ │ ├── WatchType.kt │ │ │ ├── download │ │ │ │ ├── DownloadButtonSetup.kt │ │ │ │ ├── DownloadButtonViewHolder.kt │ │ │ │ ├── DownloadChildAdapter.kt │ │ │ │ ├── DownloadChildFragment.kt │ │ │ │ ├── DownloadFragment.kt │ │ │ │ ├── DownloadHeaderAdapter.kt │ │ │ │ ├── DownloadViewModel.kt │ │ │ │ └── EasyDownloadButton.kt │ │ │ ├── home │ │ │ │ ├── HomeChildItemAdapter.kt │ │ │ │ ├── HomeFragment.kt │ │ │ │ ├── HomeParentItemAdapter.kt │ │ │ │ └── HomeViewModel.kt │ │ │ ├── player │ │ │ │ ├── AbstractPlayerFragment.kt │ │ │ │ ├── CS3IPlayer.kt │ │ │ │ ├── CustomSubtitleDecoderFactory.kt │ │ │ │ ├── CustomTextRenderer.kt │ │ │ │ ├── DownloadFileGenerator.kt │ │ │ │ ├── DownloadedPlayerActivity.kt │ │ │ │ ├── FullScreenPlayer.kt │ │ │ │ ├── GeneratorPlayer.kt │ │ │ │ ├── IGenerator.kt │ │ │ │ ├── IPlayer.kt │ │ │ │ ├── LinkGenerator.kt │ │ │ │ ├── NonFinalTextRenderer.kt │ │ │ │ ├── PlayerEpisodeAdapter.kt │ │ │ │ ├── PlayerGeneratorViewModel.kt │ │ │ │ ├── PlayerPipHelper.kt │ │ │ │ ├── PlayerSubtitleHelper.kt │ │ │ │ ├── RepoLinkGenerator.kt │ │ │ │ └── SSLTrustManager.kt │ │ │ ├── quicksearch │ │ │ │ └── QuickSearchFragment.kt │ │ │ ├── result │ │ │ │ ├── ActorAdaptor.kt │ │ │ │ ├── EpisodeAdapter.kt │ │ │ │ ├── ImageAdapter.kt │ │ │ │ ├── ResultFragment.kt │ │ │ │ ├── ResultTrailerPlayer.kt │ │ │ │ ├── ResultViewModel.kt │ │ │ │ └── SyncViewModel.kt │ │ │ ├── search │ │ │ │ ├── SearchAdaptor.kt │ │ │ │ ├── SearchFragment.kt │ │ │ │ ├── SearchHelper.kt │ │ │ │ ├── SearchHistoryAdaptor.kt │ │ │ │ ├── SearchResultBuilder.kt │ │ │ │ ├── SearchViewModel.kt │ │ │ │ └── SyncSearchViewModel.kt │ │ │ ├── settings │ │ │ │ ├── AccountAdapter.kt │ │ │ │ ├── SettingsAccount.kt │ │ │ │ ├── SettingsFragment.kt │ │ │ │ ├── SettingsGeneral.kt │ │ │ │ ├── SettingsLang.kt │ │ │ │ ├── SettingsPlayer.kt │ │ │ │ ├── SettingsUI.kt │ │ │ │ └── SettingsUpdates.kt │ │ │ ├── setup │ │ │ │ ├── SetupFragmentLanguage.kt │ │ │ │ ├── SetupFragmentLayout.kt │ │ │ │ ├── SetupFragmentMedia.kt │ │ │ │ └── SetupFragmentProviderLanguage.kt │ │ │ └── subtitles │ │ │ │ ├── ChromecastSubtitlesFragment.kt │ │ │ │ └── SubtitlesFragment.kt │ │ │ ├── utils │ │ │ ├── AppUtils.kt │ │ │ ├── BackupUtils.kt │ │ │ ├── CastHelper.kt │ │ │ ├── CastOptionsProvider.kt │ │ │ ├── Coroutines.kt │ │ │ ├── DataStore.kt │ │ │ ├── DataStoreHelper.kt │ │ │ ├── DownloadFileWorkManager.kt │ │ │ ├── Event.kt │ │ │ ├── ExtensionManager.kt │ │ │ ├── ExtractorApi.kt │ │ │ ├── FillerEpisodeCheck.kt │ │ │ ├── GlideApp.kt │ │ │ ├── IDisposable.kt │ │ │ ├── IOnBackPressed.kt │ │ │ ├── InAppUpdater.kt │ │ │ ├── JsUnpacker.kt │ │ │ ├── M3u8Helper.kt │ │ │ ├── SingleSelectionHelper.kt │ │ │ ├── SubtitleHelper.kt │ │ │ ├── SyncUtil.kt │ │ │ ├── UIHelper.kt │ │ │ ├── UnshortenUrl.kt │ │ │ ├── Vector2.kt │ │ │ ├── VideoDownloadHelper.kt │ │ │ └── VideoDownloadManager.kt │ │ │ └── widget │ │ │ ├── CenterZoomLayoutManager.kt │ │ │ └── FlowLayout.kt │ └── res │ │ ├── anim │ │ ├── .idea │ │ │ ├── .gitignore │ │ │ ├── misc.xml │ │ │ ├── modules.xml │ │ │ └── vcs.xml │ │ ├── enter_anim.xml │ │ ├── exit_anim.xml │ │ ├── go_left.xml │ │ ├── go_right.xml │ │ ├── nav_enter_anim.xml │ │ ├── nav_exit_anim.xml │ │ ├── nav_pop_enter.xml │ │ ├── nav_pop_exit.xml │ │ ├── pop_enter.xml │ │ ├── pop_exit.xml │ │ ├── rotate_left.xml │ │ └── rotate_right.xml │ │ ├── color │ │ ├── check_selection_color.xml │ │ ├── item_select_color.xml │ │ ├── player_button_tv.xml │ │ ├── player_on_button_tv.xml │ │ ├── tag_stroke_color.xml │ │ ├── text_selection_color.xml │ │ ├── toggle_button.xml │ │ ├── toggle_button_outline.xml │ │ ├── toggle_button_text.xml │ │ └── toggle_selector.xml │ │ ├── drawable-v24 │ │ ├── ic_banner_background.xml │ │ ├── ic_banner_foreground.xml │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ ├── .idea │ │ │ ├── misc.xml │ │ │ ├── modules.xml │ │ │ └── vcs.xml │ │ ├── background_shadow.xml │ │ ├── baseline_description_24.xml │ │ ├── baseline_fullscreen_24.xml │ │ ├── baseline_fullscreen_exit_24.xml │ │ ├── baseline_grid_view_24.xml │ │ ├── baseline_list_alt_24.xml │ │ ├── baseline_remove_24.xml │ │ ├── baseline_restore_page_24.xml │ │ ├── baseline_save_as_24.xml │ │ ├── baseline_sync_24.xml │ │ ├── baseline_theaters_24.xml │ │ ├── benene.xml │ │ ├── circle_shape.xml │ │ ├── circular_progress_bar.xml │ │ ├── circular_progress_bar_filled.xml │ │ ├── cloud_2.xml │ │ ├── cloud_2_gradient.xml │ │ ├── cloud_2_gradient_beta.xml │ │ ├── cloud_2_gradient_beta_old.xml │ │ ├── cloud_2_gradient_debug.xml │ │ ├── custom_rating_bar.xml │ │ ├── default_cover.xml │ │ ├── dialog__window_background.xml │ │ ├── dub_bg_color.xml │ │ ├── example_poster.jpg │ │ ├── go_back_30.xml │ │ ├── go_forward_30.xml │ │ ├── ic_anilist_icon.xml │ │ ├── ic_banner_foreground.xml │ │ ├── ic_baseline_add_24.xml │ │ ├── ic_baseline_arrow_back_24.xml │ │ ├── ic_baseline_arrow_back_ios_24.xml │ │ ├── ic_baseline_arrow_forward_24.xml │ │ ├── ic_baseline_aspect_ratio_24.xml │ │ ├── ic_baseline_autorenew_24.xml │ │ ├── ic_baseline_bookmark_24.xml │ │ ├── ic_baseline_bookmark_border_24.xml │ │ ├── ic_baseline_brightness_1_24.xml │ │ ├── ic_baseline_brightness_2_24.xml │ │ ├── ic_baseline_brightness_3_24.xml │ │ ├── ic_baseline_brightness_4_24.xml │ │ ├── ic_baseline_brightness_5_24.xml │ │ ├── ic_baseline_brightness_6_24.xml │ │ ├── ic_baseline_brightness_7_24.xml │ │ ├── ic_baseline_bug_report_24.xml │ │ ├── ic_baseline_check_24.xml │ │ ├── ic_baseline_check_24_listview.xml │ │ ├── ic_baseline_clear_24.xml │ │ ├── ic_baseline_close_24.xml │ │ ├── ic_baseline_color_lens_24.xml │ │ ├── ic_baseline_construction_24.xml │ │ ├── ic_baseline_delete_outline_24.xml │ │ ├── ic_baseline_developer_mode_24.xml │ │ ├── ic_baseline_discord_24.xml │ │ ├── ic_baseline_dns_24.xml │ │ ├── ic_baseline_fast_forward_24.xml │ │ ├── ic_baseline_favorite_24.xml │ │ ├── ic_baseline_favorite_border_24.xml │ │ ├── ic_baseline_filter_list_24.xml │ │ ├── ic_baseline_hd_24.xml │ │ ├── ic_baseline_hearing_24.xml │ │ ├── ic_baseline_keyboard_arrow_down_24.xml │ │ ├── ic_baseline_keyboard_arrow_left_24.xml │ │ ├── ic_baseline_keyboard_arrow_right_24.xml │ │ ├── ic_baseline_language_24.xml │ │ ├── ic_baseline_more_vert_24.xml │ │ ├── ic_baseline_notifications_active_24.xml │ │ ├── ic_baseline_ondemand_video_24.xml │ │ ├── ic_baseline_pause_24.xml │ │ ├── ic_baseline_picture_in_picture_alt_24.xml │ │ ├── ic_baseline_play_arrow_24.xml │ │ ├── ic_baseline_playlist_play_24.xml │ │ ├── ic_baseline_public_24.xml │ │ ├── ic_baseline_remove_red_eye_24.xml │ │ ├── ic_baseline_skip_next_24.xml │ │ ├── ic_baseline_speed_24.xml │ │ ├── ic_baseline_star_24.xml │ │ ├── ic_baseline_star_border_24.xml │ │ ├── ic_baseline_storage_24.xml │ │ ├── ic_baseline_subtitles_24.xml │ │ ├── ic_baseline_system_update_24.xml │ │ ├── ic_baseline_text_format_24.xml │ │ ├── ic_baseline_touch_app_24.xml │ │ ├── ic_baseline_tune_24.xml │ │ ├── ic_baseline_tv_24.xml │ │ ├── ic_baseline_visibility_off_24.xml │ │ ├── ic_baseline_volume_down_24.xml │ │ ├── ic_baseline_volume_mute_24.xml │ │ ├── ic_baseline_volume_up_24.xml │ │ ├── ic_baseline_warning_24.xml │ │ ├── ic_cloudstream_monochrome.xml │ │ ├── ic_cloudstreamlogotv.xml │ │ ├── ic_cloudstreamlogotv_2.xml │ │ ├── ic_cloudstreamlogotv_pre.xml │ │ ├── ic_cloudstreamlogotv_pre_2.xml │ │ ├── ic_dashboard_black_24dp.xml │ │ ├── ic_github_logo.xml │ │ ├── ic_home_black_24dp.xml │ │ ├── ic_launcher_background.xml │ │ ├── ic_launcher_foreground.xml │ │ ├── ic_notifications_black_24dp.xml │ │ ├── ic_outline_home_24.xml │ │ ├── ic_outline_info_24.xml │ │ ├── ic_outline_remove_red_eye_24.xml │ │ ├── ic_outline_settings_24.xml │ │ ├── ic_outline_share_24.xml │ │ ├── ic_outline_subtitles_24.xml │ │ ├── ic_outline_voice_over_off_24.xml │ │ ├── kitsu_icon.xml │ │ ├── mal_logo.xml │ │ ├── material_outline_background.xml │ │ ├── monke_benene.xml │ │ ├── monke_burrito.xml │ │ ├── monke_coco.xml │ │ ├── monke_cookie.xml │ │ ├── monke_drink.xml │ │ ├── monke_flusdered.xml │ │ ├── monke_funny.xml │ │ ├── monke_like.xml │ │ ├── monke_party.xml │ │ ├── monke_sob.xml │ │ ├── netflix_download.xml │ │ ├── netflix_pause.xml │ │ ├── netflix_play.xml │ │ ├── netflix_skip_back.xml │ │ ├── netflix_skip_forward.xml │ │ ├── nginx.xml │ │ ├── nginx_question.xml │ │ ├── open_subtitles_icon.xml │ │ ├── outline.xml │ │ ├── outline_card.xml │ │ ├── outline_drawable.xml │ │ ├── pause_to_play.xml │ │ ├── play_button.xml │ │ ├── play_to_pause.xml │ │ ├── player_button_tv.xml │ │ ├── player_gradient_tv.xml │ │ ├── progress_drawable_vertical.xml │ │ ├── question_mark_24.xml │ │ ├── quick_novel_icon.xml │ │ ├── rating_empty.xml │ │ ├── rating_fill.xml │ │ ├── rddone.xml │ │ ├── rderror.xml │ │ ├── rdload.xml │ │ ├── rdpause.xml │ │ ├── rounded_dialog.xml │ │ ├── rounded_progress.xml │ │ ├── search_background.xml │ │ ├── search_icon.xml │ │ ├── solid_primary.xml │ │ ├── splash_background.xml │ │ ├── sub_bg_color.xml │ │ ├── subtitles_background_gradient.xml │ │ ├── subtitles_preview_background.jpg │ │ ├── sun_1.xml │ │ ├── sun_2.xml │ │ ├── sun_3.xml │ │ ├── sun_4.xml │ │ ├── sun_5.xml │ │ ├── sun_6.xml │ │ ├── sun_7.xml │ │ ├── tab_selector.xml │ │ ├── title_shadow.xml │ │ ├── type_bg_color.xml │ │ ├── video_bottom_button.xml │ │ ├── video_locked.xml │ │ ├── video_pause.xml │ │ ├── video_play.xml │ │ ├── video_tap_button.xml │ │ ├── video_tap_button_always_white.xml │ │ ├── video_tap_button_skip.xml │ │ └── video_unlocked.xml │ │ ├── font │ │ ├── comic_sans.ttf │ │ ├── consola.ttf │ │ ├── futura.ttf │ │ ├── google_sans.xml │ │ ├── gotham.ttf │ │ ├── lucida_grande.ttf │ │ ├── netflix_sans.ttf │ │ ├── open_sans.ttf │ │ ├── poppins_regular.ttf │ │ ├── productsans_black.ttf │ │ ├── productsans_blackitalic.ttf │ │ ├── productsans_bold.ttf │ │ ├── productsans_bolditalic.ttf │ │ ├── productsans_italic.ttf │ │ ├── productsans_light.ttf │ │ ├── productsans_lightitalic.ttf │ │ ├── productsans_medium.ttf │ │ ├── productsans_mediumitalic.ttf │ │ ├── productsans_regular.ttf │ │ ├── productsans_thin.ttf │ │ ├── productsans_thinitalic.ttf │ │ ├── stix_general.ttf │ │ ├── times_new_roman.ttf │ │ ├── trebuchet_ms.ttf │ │ ├── ubuntu_regular.ttf │ │ └── verdana.ttf │ │ ├── layout │ │ ├── account_managment.xml │ │ ├── account_single.xml │ │ ├── account_switch.xml │ │ ├── activity_main.xml │ │ ├── activity_main_tv.xml │ │ ├── add_account_input.xml │ │ ├── add_remove_sites.xml │ │ ├── add_site_input.xml │ │ ├── bottom_input_dialog.xml │ │ ├── bottom_selection_dialog.xml │ │ ├── cast_item.xml │ │ ├── chromecast_subtitle_settings.xml │ │ ├── dialog_loading.xml │ │ ├── dialog_online_subtitles.xml │ │ ├── download_child_episode.xml │ │ ├── download_header_episode.xml │ │ ├── empty_layout.xml │ │ ├── fragment_child_downloads.xml │ │ ├── fragment_downloads.xml │ │ ├── fragment_home.xml │ │ ├── fragment_home_tv.xml │ │ ├── fragment_player.xml │ │ ├── fragment_player_tv.xml │ │ ├── fragment_result.xml │ │ ├── fragment_result_swipe.xml │ │ ├── fragment_search.xml │ │ ├── fragment_setup_language.xml │ │ ├── fragment_setup_layout.xml │ │ ├── fragment_setup_media.xml │ │ ├── fragment_setup_provider_languages.xml │ │ ├── fragment_trailer.xml │ │ ├── home_episodes_expanded.xml │ │ ├── home_result_big_grid.xml │ │ ├── home_result_grid.xml │ │ ├── home_result_grid_expanded.xml │ │ ├── home_select_mainpage.xml │ │ ├── homepage_parent.xml │ │ ├── homepage_parent_tv.xml │ │ ├── loading_downloads.xml │ │ ├── loading_episode.xml │ │ ├── loading_line.xml │ │ ├── loading_line_short.xml │ │ ├── loading_line_short_center.xml │ │ ├── loading_list.xml │ │ ├── loading_poster.xml │ │ ├── logcat.xml │ │ ├── main_settings.xml │ │ ├── options_popup_tv.xml │ │ ├── player_custom_layout.xml │ │ ├── player_custom_layout_tv.xml │ │ ├── player_episodes.xml │ │ ├── player_episodes_large.xml │ │ ├── player_episodes_small.xml │ │ ├── player_select_source_and_subs.xml │ │ ├── provider_list.xml │ │ ├── quick_search.xml │ │ ├── result_episode.xml │ │ ├── result_episode_both.xml │ │ ├── result_episode_large.xml │ │ ├── result_mini_image.xml │ │ ├── result_poster.xml │ │ ├── result_recommendations.xml │ │ ├── result_sync.xml │ │ ├── result_tag.xml │ │ ├── search_history_item.xml │ │ ├── search_result_compact.xml │ │ ├── search_result_grid.xml │ │ ├── search_result_grid_expanded.xml │ │ ├── search_result_super_compact.xml │ │ ├── settings_title_top.xml │ │ ├── sort_bottom_footer_add_choice.xml │ │ ├── sort_bottom_sheet.xml │ │ ├── sort_bottom_single_choice.xml │ │ ├── sort_bottom_single_choice_color.xml │ │ ├── sort_bottom_single_choice_double_text.xml │ │ ├── stream_input.xml │ │ ├── subtitle_offset.xml │ │ ├── subtitle_settings.xml │ │ ├── toast.xml │ │ └── trailer_custom_layout.xml │ │ ├── menu │ │ ├── bottom_nav_menu.xml │ │ └── cast_expanded_controller_menu.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_banner.xml │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_banner.png │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── navigation │ │ └── mobile_navigation.xml │ │ ├── values-ar │ │ └── strings.xml │ │ ├── values-bp │ │ └── strings.xml │ │ ├── values-cs │ │ └── strings.xml │ │ ├── values-de │ │ └── strings-de.xml │ │ ├── values-el │ │ └── strings.xml │ │ ├── values-es │ │ ├── array.xml │ │ └── strings-es.xml │ │ ├── values-fr │ │ └── strings.xml │ │ ├── values-hi │ │ └── strings.xml │ │ ├── values-in │ │ └── strings.xml │ │ ├── values-it │ │ └── strings.xml │ │ ├── values-mk │ │ └── strings.xml │ │ ├── values-ml │ │ └── strings.xml │ │ ├── values-mo │ │ └── string.xml │ │ ├── values-nl │ │ └── strings.xml │ │ ├── values-no │ │ └── strings.xml │ │ ├── values-pl │ │ ├── array.xml │ │ └── strings.xml │ │ ├── values-pt │ │ └── strings-pt.xml │ │ ├── values-ro │ │ └── strings.xml │ │ ├── values-sv │ │ └── strings.xml │ │ ├── values-tl │ │ └── strings.xml │ │ ├── values-tr │ │ ├── array.xml │ │ └── strings.xml │ │ ├── values-vi │ │ ├── array.xml │ │ └── strings.xml │ │ ├── values-zh │ │ └── strings.xml │ │ ├── values │ │ ├── array.xml │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── ic_launcher_background.xml │ │ ├── strings.xml │ │ └── styles.xml │ │ └── xml │ │ ├── backup_descriptor.xml │ │ ├── provider_paths.xml │ │ ├── settings_account.xml │ │ ├── settings_media_lang.xml │ │ ├── settings_player.xml │ │ ├── settings_updates.xml │ │ ├── settins_general.xml │ │ └── settins_ui.xml │ ├── prerelease │ ├── ic_launcher-playstore.png │ └── res │ │ ├── drawable-v24 │ │ ├── ic_banner_background.xml │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_banner_foreground.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_banner.xml │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_banner.png │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── ic_launcher_background.xml │ │ └── strings.xml │ ├── release │ └── res │ │ ├── drawable-v24 │ │ └── ic_banner_background.xml │ │ ├── mipmap-anydpi-v26 │ │ └── ic_banner.xml │ │ └── mipmap-xhdpi │ │ └── ic_banner.png │ └── test │ └── java │ └── com │ └── lagradost │ └── cloudstream3 │ └── ProviderTests.kt ├── build.gradle ├── docs ├── _config.yml ├── index.html ├── keys.json ├── providers.json ├── script.js └── style.css ├── fastlane └── metadata │ └── android │ ├── de-DE │ ├── full_description.txt │ └── short_description.txt │ ├── en-US │ ├── changelogs │ │ └── 2.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── es-AR │ ├── full_description.txt │ └── short_description.txt │ ├── it-IT │ ├── full_description.txt │ └── short_description.txt │ ├── mk-MK │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ └── zh-CN │ ├── full_description.txt │ └── short_description.txt ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── providers.json └── settings.gradle /.github/ISSUE_TEMPLATE/feature-request.yml: -------------------------------------------------------------------------------- 1 | name: ⭐ Feature request 2 | description: Suggest a feature to improve the app 3 | labels: [enhancement] 4 | body: 5 | 6 | - type: textarea 7 | id: feature-description 8 | attributes: 9 | label: Describe your suggested feature 10 | description: How can an existing source be improved? 11 | placeholder: | 12 | Example: 13 | "It should work like this..." 14 | validations: 15 | required: true 16 | 17 | - type: textarea 18 | id: other-details 19 | attributes: 20 | label: Other details 21 | placeholder: | 22 | Additional details and attachments. 23 | 24 | - type: checkboxes 25 | id: acknowledgements 26 | attributes: 27 | label: Acknowledgements 28 | description: Your issue will be closed if you haven't done these steps. 29 | options: 30 | - label: I have searched the existing issues and this is a new ticket, **NOT** a duplicate or related to another open issue. 31 | required: true 32 | - label: I have written a short but informative title. 33 | required: true 34 | - label: I will fill out all of the requested information in this form. 35 | required: true 36 | -------------------------------------------------------------------------------- /.github/downloads.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/.github/downloads.jpg -------------------------------------------------------------------------------- /.github/home.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/.github/home.jpg -------------------------------------------------------------------------------- /.github/player.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/.github/player.jpg -------------------------------------------------------------------------------- /.github/results.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/.github/results.jpg -------------------------------------------------------------------------------- /.github/search.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/.github/search.jpg -------------------------------------------------------------------------------- /.github/workflows/pull_request.yml: -------------------------------------------------------------------------------- 1 | name: Artifact Build 2 | 3 | on: [pull_request] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v2 10 | - name: Set up JDK 11 11 | uses: actions/setup-java@v2 12 | with: 13 | java-version: '11' 14 | distribution: 'adopt' 15 | - name: Grant execute permission for gradlew 16 | run: chmod +x gradlew 17 | - name: Run Gradle 18 | run: ./gradlew assembleDebug 19 | - name: Upload Artifact 20 | uses: actions/upload-artifact@v2 21 | with: 22 | name: pull-request-build 23 | path: "app/build/outputs/apk/debug/*.apk" 24 | -------------------------------------------------------------------------------- /.github/workflows/site_list.yml: -------------------------------------------------------------------------------- 1 | name: Create site list 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | paths: 7 | - 'app/src/main/java/com/lagradost/cloudstream3/*providers/*Provider.kt' 8 | - '.github/workflows/site_list.yml' 9 | - '.github/site-list.py' 10 | - 'docs/providers.json' 11 | - 'app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt' 12 | 13 | concurrency: 14 | group: "site-list" 15 | cancel-in-progress: true 16 | 17 | jobs: 18 | create: 19 | runs-on: ubuntu-latest 20 | steps: 21 | - uses: actions/checkout@v2 22 | - name: Edit providers.json 23 | run: | 24 | python3 .github/site-list.py 25 | - name: Commit to the repo 26 | run: | 27 | git config user.name "GitHub Actions" 28 | git config user.email "actions@github.com" 29 | git add . 30 | # "echo" returns true so the build succeeds, even if no changed files 31 | git commit -m 'chore(docs): update list of sites' || echo 32 | git push 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/misc.xml 6 | /.idea/libraries 7 | /.idea/modules.xml 8 | /.idea/workspace.xml 9 | /.idea/navEditor.xml 10 | /.idea/assetWizardSettings.xml 11 | .DS_Store 12 | /build 13 | /captures 14 | .externalNativeBuild 15 | .cxx 16 | local.properties 17 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | CloudStream -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.idea/discord.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 20 | 21 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /app/src/debug/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/debug/ic_launcher-playstore.png -------------------------------------------------------------------------------- /app/src/debug/res/drawable-hdpi/ic_stat_name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/debug/res/drawable-hdpi/ic_stat_name.png -------------------------------------------------------------------------------- /app/src/debug/res/drawable-mdpi/ic_stat_name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/debug/res/drawable-mdpi/ic_stat_name.png -------------------------------------------------------------------------------- /app/src/debug/res/drawable-xhdpi/ic_stat_name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/debug/res/drawable-xhdpi/ic_stat_name.png -------------------------------------------------------------------------------- /app/src/debug/res/drawable-xxhdpi/ic_stat_name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/debug/res/drawable-xxhdpi/ic_stat_name.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-anydpi-v26/ic_banner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/debug/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/debug/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/debug/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/debug/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-xhdpi/ic_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/debug/res/mipmap-xhdpi/ic_banner.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/debug/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/debug/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #000000 4 | -------------------------------------------------------------------------------- /app/src/debug/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | CloudStream Debug 3 | -------------------------------------------------------------------------------- /app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/extractors/BullStream.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.extractors 2 | 3 | import com.lagradost.cloudstream3.app 4 | import com.lagradost.cloudstream3.utils.ExtractorApi 5 | import com.lagradost.cloudstream3.utils.ExtractorLink 6 | import com.lagradost.cloudstream3.utils.M3u8Helper 7 | 8 | class BullStream : ExtractorApi() { 9 | override val name = "BullStream" 10 | override val mainUrl = "https://bullstream.xyz" 11 | override val requiresReferer = false 12 | val regex = Regex("(?<=sniff\\()(.*)(?=\\)\\);)") 13 | 14 | override suspend fun getUrl(url: String, referer: String?): List? { 15 | val data = regex.find(app.get(url).text)?.value 16 | ?.replace("\"", "") 17 | ?.split(",") 18 | ?: return null 19 | 20 | val m3u8 = "$mainUrl/m3u8/${data[1]}/${data[2]}/master.txt?s=1&cache=${data[4]}" 21 | println("shiv : $m3u8") 22 | return M3u8Helper.generateM3u8( 23 | name, 24 | m3u8, 25 | url, 26 | headers = mapOf("referer" to url, "accept" to "*/*") 27 | ) 28 | } 29 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/extractors/GMPlayer.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.extractors 2 | 3 | import com.lagradost.cloudstream3.app 4 | import com.lagradost.cloudstream3.utils.ExtractorApi 5 | import com.lagradost.cloudstream3.utils.ExtractorLink 6 | import com.lagradost.cloudstream3.utils.M3u8Helper 7 | 8 | class GMPlayer : ExtractorApi() { 9 | override val name = "GM Player" 10 | override val mainUrl = "https://gmplayer.xyz" 11 | override val requiresReferer = true 12 | 13 | override suspend fun getUrl(url: String, referer: String?): List? { 14 | val ref = referer ?: return null 15 | val id = url.substringAfter("/video/").substringBefore("/") 16 | 17 | val m3u8 = app.post( 18 | "$mainUrl/player/index.php?data=$id&do=getVideo", 19 | mapOf( 20 | "accept" to "*/*", 21 | "referer" to ref, 22 | "x-requested-with" to "XMLHttpRequest", 23 | "origin" to mainUrl 24 | ), 25 | data = mapOf("hash" to id, "r" to ref) 26 | ).parsed().videoSource ?: return null 27 | 28 | return M3u8Helper.generateM3u8( 29 | name, 30 | m3u8, 31 | ref, 32 | headers = mapOf("accept" to "*/*") 33 | ) 34 | } 35 | 36 | private data class GmResponse( 37 | val videoSource: String? = null 38 | ) 39 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/extractors/GenericM3U8.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.extractors 2 | 3 | import com.lagradost.cloudstream3.app 4 | import com.lagradost.cloudstream3.network.WebViewResolver 5 | import com.lagradost.cloudstream3.utils.ExtractorApi 6 | import com.lagradost.cloudstream3.utils.ExtractorLink 7 | import com.lagradost.cloudstream3.utils.M3u8Helper 8 | 9 | 10 | open class GenericM3U8 : ExtractorApi() { 11 | override var name = "Upstream" 12 | override var mainUrl = "https://upstream.to" 13 | override val requiresReferer = false 14 | 15 | override suspend fun getUrl(url: String, referer: String?): List { 16 | val response = app.get( 17 | url, interceptor = WebViewResolver( 18 | Regex("""master\.m3u8""") 19 | ) 20 | ) 21 | val sources = mutableListOf() 22 | if (response.url.contains("m3u8")) 23 | M3u8Helper.generateM3u8( 24 | name, 25 | response.url, 26 | url, 27 | headers = response.headers.toMap() 28 | ).forEach { link -> 29 | sources.add(link) 30 | } 31 | return sources 32 | } 33 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/extractors/GuardareStream.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.extractors 2 | import com.fasterxml.jackson.annotation.JsonProperty 3 | import com.lagradost.cloudstream3.utils.ExtractorLink 4 | import com.lagradost.cloudstream3.app 5 | import com.lagradost.cloudstream3.utils.* 6 | 7 | open class GuardareStream : ExtractorApi() { 8 | override var name = "Guardare" 9 | override var mainUrl = "https://guardare.stream" 10 | override val requiresReferer = false 11 | 12 | data class GuardareJsonData ( 13 | @JsonProperty("data") val data : List, 14 | ) 15 | 16 | data class GuardareData ( 17 | @JsonProperty("file") val file : String, 18 | @JsonProperty("label") val label : String, 19 | @JsonProperty("type") val type : String 20 | ) 21 | 22 | override suspend fun getUrl(url: String, referer: String?): List? { 23 | val response = app.post(url.replace("/v/","/api/source/"), data = mapOf("d" to mainUrl)).text 24 | val jsonvideodata = AppUtils.parseJson(response) 25 | return jsonvideodata.data.map { 26 | ExtractorLink( 27 | it.file+".${it.type}", 28 | this.name, 29 | it.file+".${it.type}", 30 | mainUrl, 31 | it.label.filter{ it.isDigit() }.toInt(), 32 | false 33 | ) 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/extractors/Jawcloud.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.extractors 2 | 3 | import com.lagradost.cloudstream3.app 4 | import com.lagradost.cloudstream3.utils.ExtractorApi 5 | import com.lagradost.cloudstream3.utils.ExtractorLink 6 | import com.lagradost.cloudstream3.utils.M3u8Helper 7 | 8 | 9 | open class Jawcloud : ExtractorApi() { 10 | override var name = "Jawcloud" 11 | override var mainUrl = "https://jawcloud.co" 12 | override val requiresReferer = false 13 | 14 | override suspend fun getUrl(url: String, referer: String?): List? { 15 | val doc = app.get(url).document 16 | val urlString = doc.select("html body div source").attr("src") 17 | val sources = mutableListOf() 18 | if (urlString.contains("m3u8")) 19 | M3u8Helper.generateM3u8( 20 | name, 21 | urlString, 22 | url, 23 | headers = app.get(url).headers.toMap() 24 | ).forEach { link -> sources.add(link) } 25 | return sources 26 | } 27 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/extractors/M3u8Manifest.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.extractors 2 | 3 | //{"auto":"/manifests/movies/15559/1624728920/qDwu5BOsfAwfTmnnjmkmXA/master.m3u8","1080p":"https://vdoc3.sallenes.space/qDwu5BOsfAwfTmnnjmkmXA/1624728920/storage6/movies/the-man-with-the-iron-heart-2017/1080p/index.m3u8","720p":"https://vdoc3.sallenes.space/qDwu5BOsfAwfTmnnjmkmXA/1624728920/storage6/movies/the-man-with-the-iron-heart-2017/720p/index.m3u8","360p":"https://vdoc3.sallenes.space/qDwu5BOsfAwfTmnnjmkmXA/1624728920/storage6/movies/the-man-with-the-iron-heart-2017/360p/index.m3u8","480p":"https://vdoc3.sallenes.space/qDwu5BOsfAwfTmnnjmkmXA/1624728920/storage6/movies/the-man-with-the-iron-heart-2017/480p/index.m3u8"} 4 | object M3u8Manifest { 5 | // URL = first, QUALITY = second 6 | fun extractLinks(m3u8Data: String): ArrayList> { 7 | val data: ArrayList> = ArrayList() 8 | Regex("\"(.*?)\":\"(.*?)\"").findAll(m3u8Data).forEach { 9 | var quality = it.groupValues[1].replace("auto", "Auto") 10 | if (quality != "Auto" && !quality.endsWith('p')) quality += "p" 11 | val url = it.groupValues[2] 12 | data.add(Pair(url, quality)) 13 | } 14 | return data 15 | } 16 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/extractors/Maxstream.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.extractors 2 | 3 | import com.lagradost.cloudstream3.utils.ExtractorLink 4 | import com.lagradost.cloudstream3.app 5 | import com.lagradost.cloudstream3.utils.* 6 | 7 | open class Maxstream : ExtractorApi() { 8 | override var name = "Maxstream" 9 | override var mainUrl = "https://maxstream.video/" 10 | override val requiresReferer = false 11 | override suspend fun getUrl(url: String, referer: String?): List? { 12 | val extractedLinksList: MutableList = mutableListOf() 13 | val response = app.get(url).text 14 | val jstounpack = Regex("cript\">eval((.|\\n)*?)").find(response)?.groups?.get(1)?.value 15 | val unpacjed = JsUnpacker(jstounpack).unpack() 16 | val extractedUrl = unpacjed?.let { Regex("""src:"((.|\n)*?)",type""").find(it) }?.groups?.get(1)?.value.toString() 17 | 18 | M3u8Helper.generateM3u8( 19 | name, 20 | extractedUrl, 21 | url, 22 | headers = mapOf("referer" to url) 23 | ).forEach { link -> 24 | extractedLinksList.add(link) 25 | } 26 | 27 | return extractedLinksList 28 | } 29 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/extractors/Mcloud.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.extractors 2 | 3 | open class Mcloud : WcoStream() { 4 | override var name = "Mcloud" 5 | override var mainUrl = "https://mcloud.to" 6 | override val requiresReferer = true 7 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/extractors/MixDrop.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.extractors 2 | 3 | import com.lagradost.cloudstream3.app 4 | import com.lagradost.cloudstream3.utils.* 5 | 6 | class MixDropBz : MixDrop(){ 7 | override var mainUrl = "https://mixdrop.bz" 8 | } 9 | 10 | class MixDropCh : MixDrop(){ 11 | override var mainUrl = "https://mixdrop.ch" 12 | } 13 | class MixDropTo : MixDrop(){ 14 | override var mainUrl = "https://mixdrop.to" 15 | } 16 | 17 | open class MixDrop : ExtractorApi() { 18 | override var name = "MixDrop" 19 | override var mainUrl = "https://mixdrop.co" 20 | private val srcRegex = Regex("""wurl.*?=.*?"(.*?)";""") 21 | override val requiresReferer = false 22 | 23 | override fun getExtractorUrl(id: String): String { 24 | return "$mainUrl/e/$id" 25 | } 26 | 27 | override suspend fun getUrl(url: String, referer: String?): List? { 28 | with(app.get(url)) { 29 | getAndUnpack(this.text).let { unpackedText -> 30 | srcRegex.find(unpackedText)?.groupValues?.get(1)?.let { link -> 31 | return listOf( 32 | ExtractorLink( 33 | name, 34 | name, 35 | httpsify(link), 36 | url, 37 | Qualities.Unknown.value, 38 | ) 39 | ) 40 | } 41 | } 42 | } 43 | return null 44 | } 45 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/extractors/Mp4Upload.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.extractors 2 | 3 | import com.lagradost.cloudstream3.app 4 | import com.lagradost.cloudstream3.utils.ExtractorApi 5 | import com.lagradost.cloudstream3.utils.ExtractorLink 6 | import com.lagradost.cloudstream3.utils.Qualities 7 | import com.lagradost.cloudstream3.utils.getAndUnpack 8 | 9 | class Mp4Upload : ExtractorApi() { 10 | override var name = "Mp4Upload" 11 | override var mainUrl = "https://www.mp4upload.com" 12 | private val srcRegex = Regex("""player\.src\("(.*?)"""") 13 | override val requiresReferer = true 14 | 15 | override suspend fun getUrl(url: String, referer: String?): List? { 16 | with(app.get(url)) { 17 | getAndUnpack(this.text).let { unpackedText -> 18 | val quality = unpackedText.lowercase().substringAfter(" height=").substringBefore(" ").toIntOrNull() 19 | srcRegex.find(unpackedText)?.groupValues?.get(1)?.let { link -> 20 | return listOf( 21 | ExtractorLink( 22 | name, 23 | name, 24 | link, 25 | url, 26 | quality ?: Qualities.Unknown.value, 27 | ) 28 | ) 29 | } 30 | } 31 | } 32 | return null 33 | } 34 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/extractors/PlayerVoxzer.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.extractors 2 | 3 | import com.lagradost.cloudstream3.app 4 | import com.lagradost.cloudstream3.utils.ExtractorApi 5 | import com.lagradost.cloudstream3.utils.ExtractorLink 6 | import com.lagradost.cloudstream3.utils.M3u8Helper 7 | 8 | 9 | open class PlayerVoxzer : ExtractorApi() { 10 | override var name = "Voxzer" 11 | override var mainUrl = "https://player.voxzer.org" 12 | override val requiresReferer = false 13 | 14 | override suspend fun getUrl(url: String, referer: String?): List? { 15 | val listurl = url.replace("/view/","/list/") 16 | val urltext = app.get(listurl, referer = url).text 17 | val m3u8regex = Regex("((https:|http:)\\/\\/.*\\.m3u8)") 18 | val sources = mutableListOf() 19 | val listm3 = m3u8regex.find(urltext)?.value 20 | if (listm3?.contains("m3u8") == true) 21 | M3u8Helper.generateM3u8( 22 | name, 23 | listm3, 24 | url, 25 | headers = app.get(url).headers.toMap() 26 | ).forEach { link -> 27 | sources.add(link) 28 | } 29 | return sources 30 | } 31 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/extractors/SpeedoStream.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.extractors 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | import com.lagradost.cloudstream3.app 5 | import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson 6 | import com.lagradost.cloudstream3.utils.ExtractorApi 7 | import com.lagradost.cloudstream3.utils.ExtractorLink 8 | import com.lagradost.cloudstream3.utils.M3u8Helper 9 | 10 | class SpeedoStream : ExtractorApi() { 11 | override val name = "SpeedoStream" 12 | override val mainUrl = "https://speedostream.com" 13 | override val requiresReferer = true 14 | 15 | override suspend fun getUrl(url: String, referer: String?): List { 16 | val sources = mutableListOf() 17 | app.get(url, referer = referer).document.select("script").map { script -> 18 | if (script.data().contains("jwplayer(\"vplayer\").setup(")) { 19 | val data = script.data().substringAfter("sources: [") 20 | .substringBefore("],").replace("file", "\"file\"").trim() 21 | tryParseJson(data)?.let { 22 | M3u8Helper.generateM3u8( 23 | name, 24 | it.file, 25 | "$mainUrl/", 26 | ).forEach { m3uData -> sources.add(m3uData) } 27 | } 28 | } 29 | } 30 | return sources 31 | } 32 | 33 | private data class File( 34 | @JsonProperty("file") val file: String, 35 | ) 36 | 37 | 38 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/extractors/StreamTape.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.extractors 2 | 3 | import com.lagradost.cloudstream3.app 4 | import com.lagradost.cloudstream3.utils.ExtractorApi 5 | import com.lagradost.cloudstream3.utils.ExtractorLink 6 | import com.lagradost.cloudstream3.utils.Qualities 7 | 8 | class StreamTape : ExtractorApi() { 9 | override var name = "StreamTape" 10 | override var mainUrl = "https://streamtape.com" 11 | override val requiresReferer = false 12 | 13 | private val linkRegex = 14 | Regex("""'robotlink'\)\.innerHTML = '(.+?)'\+ \('(.+?)'\)""") 15 | 16 | override suspend fun getUrl(url: String, referer: String?): List? { 17 | with(app.get(url)) { 18 | linkRegex.find(this.text)?.let { 19 | val extractedUrl = "https:${it.groups[1]!!.value + it.groups[2]!!.value.substring(3,)}" 20 | return listOf( 21 | ExtractorLink( 22 | name, 23 | name, 24 | extractedUrl, 25 | url, 26 | Qualities.Unknown.value, 27 | ) 28 | ) 29 | } 30 | } 31 | return null 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/extractors/WatchSB.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.extractors 2 | 3 | import com.lagradost.cloudstream3.app 4 | import com.lagradost.cloudstream3.network.WebViewResolver 5 | import com.lagradost.cloudstream3.utils.ExtractorApi 6 | import com.lagradost.cloudstream3.utils.ExtractorLink 7 | import com.lagradost.cloudstream3.utils.M3u8Helper.Companion.generateM3u8 8 | 9 | open class WatchSB : ExtractorApi() { 10 | override var name = "WatchSB" 11 | override var mainUrl = "https://watchsb.com" 12 | override val requiresReferer = false 13 | 14 | override suspend fun getUrl(url: String, referer: String?): List { 15 | val response = app.get( 16 | url, interceptor = WebViewResolver( 17 | Regex("""master\.m3u8""") 18 | ) 19 | ) 20 | 21 | return generateM3u8(name, response.url, url, headers = response.headers.toMap()) 22 | } 23 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/extractors/helper/AsianEmbedHelper.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.extractors.helper 2 | 3 | import android.util.Log 4 | import com.lagradost.cloudstream3.SubtitleFile 5 | import com.lagradost.cloudstream3.apmap 6 | import com.lagradost.cloudstream3.app 7 | import com.lagradost.cloudstream3.utils.ExtractorLink 8 | import com.lagradost.cloudstream3.utils.loadExtractor 9 | 10 | class AsianEmbedHelper { 11 | companion object { 12 | suspend fun getUrls( 13 | url: String, 14 | subtitleCallback: (SubtitleFile) -> Unit, 15 | callback: (ExtractorLink) -> Unit 16 | ) { 17 | // Fetch links 18 | val doc = app.get(url).document 19 | val links = doc.select("div#list-server-more > ul > li.linkserver") 20 | if (!links.isNullOrEmpty()) { 21 | links.apmap { 22 | val datavid = it.attr("data-video") ?: "" 23 | //Log.i("AsianEmbed", "Result => (datavid) ${datavid}") 24 | if (datavid.isNotBlank()) { 25 | val res = loadExtractor(datavid, url, subtitleCallback, callback) 26 | Log.i("AsianEmbed", "Result => ($res) (datavid) $datavid") 27 | } 28 | } 29 | } 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/metaproviders/AnilistRedirector.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.metaproviders 2 | 3 | import com.lagradost.cloudstream3.ErrorLoadingException 4 | import com.lagradost.cloudstream3.syncproviders.AccountManager.Companion.SyncApis 5 | import com.lagradost.cloudstream3.syncproviders.AccountManager.Companion.aniListApi 6 | import com.lagradost.cloudstream3.syncproviders.AccountManager.Companion.malApi 7 | import com.lagradost.cloudstream3.utils.SyncUtil 8 | 9 | object SyncRedirector { 10 | val syncApis = SyncApis 11 | 12 | suspend fun redirect(url: String, preferredUrl: String): String { 13 | for (api in syncApis) { 14 | if (url.contains(api.mainUrl)) { 15 | val otherApi = when (api.name) { 16 | aniListApi.name -> "anilist" 17 | malApi.name -> "myanimelist" 18 | else -> return url 19 | } 20 | 21 | return SyncUtil.getUrlsFromId(api.getIdFromUrl(url), otherApi).firstOrNull { realUrl -> 22 | realUrl.contains(preferredUrl) 23 | } ?: run { 24 | throw ErrorLoadingException("Page does not exist on $preferredUrl") 25 | } 26 | } 27 | } 28 | return url 29 | } 30 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/movieproviders/AsianLoadProvider.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.movieproviders 2 | 3 | import com.lagradost.cloudstream3.TvType 4 | 5 | /** Needs to inherit from MainAPI() to 6 | * make the app know what functions to call 7 | */ 8 | class AsianLoadProvider : VidstreamProviderTemplate() { 9 | override var name = "AsianLoad" 10 | override var mainUrl = "https://asianembed.io" 11 | override val homePageUrlList = listOf( 12 | mainUrl, 13 | "$mainUrl/recently-added-raw", 14 | "$mainUrl/movies", 15 | "$mainUrl/kshow", 16 | "$mainUrl/popular", 17 | "$mainUrl/ongoing-series" 18 | ) 19 | 20 | override val iv = "9262859232435825" 21 | override val secretKey = "93422192433952489752342908585752" 22 | override val secretDecryptKey = secretKey 23 | 24 | override val supportedTypes = setOf(TvType.AsianDrama) 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/movieproviders/DopeboxProvider.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.movieproviders 2 | 3 | class DopeboxProvider : SflixProvider() { 4 | override var mainUrl = "https://dopebox.to" 5 | override var name = "Dopebox" 6 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/movieproviders/FmoviesToProvider.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.movieproviders 2 | 3 | class FmoviesToProvider : BflixProvider() { 4 | override var mainUrl = "https://fmovies.to" 5 | override var name = "Fmovies.to" 6 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/movieproviders/HDTodayProvider.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.movieproviders 2 | 3 | class HDTodayProvider : SflixProvider() { 4 | override var mainUrl = "https://hdtoday.cc" 5 | override var name = "HDToday" 6 | } 7 | -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/movieproviders/PelisplusProvider.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.movieproviders 2 | 3 | import com.lagradost.cloudstream3.TvType 4 | 5 | /** Needs to inherit from MainAPI() to 6 | * make the app know what functions to call 7 | */ 8 | class PelisplusProvider : PelisplusProviderTemplate() { 9 | // mainUrl is good to have as a holder for the url to make future changes easier. 10 | override var mainUrl = "https://pelisplus.icu" 11 | 12 | // name is for how the provider will be named which is visible in the UI, no real rules for this. 13 | override var name = "Pelisplus" 14 | 15 | override val homePageUrlList = listOf( 16 | mainUrl, 17 | "$mainUrl/movies", 18 | "$mainUrl/series", 19 | "$mainUrl/new-season", 20 | "$mainUrl/popular" 21 | ) 22 | 23 | // This is just extra metadata about what type of movies the provider has. 24 | // Needed for search functionality. 25 | override val supportedTypes = setOf(TvType.TvSeries, TvType.Movie) 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/movieproviders/SflixProProvider.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.movieproviders 2 | 3 | class SflixProProvider : BflixProvider() { 4 | override var mainUrl = "https://sflix.pro" 5 | override var name = "Sflix.pro" 6 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/movieproviders/SolarmovieProvider.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.movieproviders 2 | 3 | class SolarmovieProvider : SflixProvider() { 4 | override var mainUrl = "https://solarmovie.pe" 5 | override var name = "Solarmovie" 6 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/movieproviders/VidEmbedProvider.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.movieproviders 2 | 3 | import com.lagradost.cloudstream3.TvType 4 | 5 | /** Needs to inherit from MainAPI() to 6 | * make the app know what functions to call 7 | */ 8 | class VidEmbedProvider : VidstreamProviderTemplate() { 9 | // mainUrl is good to have as a holder for the url to make future changes easier. 10 | override var mainUrl = "https://membed.net" 11 | 12 | // name is for how the provider will be named which is visible in the UI, no real rules for this. 13 | override var name = "VidEmbed" 14 | 15 | override val homePageUrlList: List = listOf( 16 | mainUrl, 17 | "$mainUrl/movies", 18 | "$mainUrl/series", 19 | "$mainUrl/recommended-series", 20 | "$mainUrl/cinema-movies" 21 | ) 22 | 23 | override val iv = "9225679083961858" 24 | override val secretKey = "25742532592138496744665879883281" 25 | override val secretDecryptKey = secretKey 26 | 27 | // This is just extra metadata about what type of movies the provider has. 28 | // Needed for search functionality. 29 | override val supportedTypes = setOf(TvType.TvSeries, TvType.Movie) 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/receivers/VideoDownloadRestartReceiver.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.receivers 2 | 3 | import android.content.BroadcastReceiver 4 | import android.content.Context 5 | import android.content.Intent 6 | import android.util.Log 7 | 8 | class VideoDownloadRestartReceiver : BroadcastReceiver() { 9 | override fun onReceive(context: Context?, intent: Intent?) { 10 | Log.i("Broadcast Listened", "Service tried to stop") 11 | 12 | // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 13 | // context?.startForegroundService(Intent(context, VideoDownloadKeepAliveService::class.java).putExtra(START_VALUE_KEY, RESTART_ALL_DOWNLOADS_AND_QUEUE)) 14 | // } else { 15 | // context?.startService(Intent(context, VideoDownloadKeepAliveService::class.java).putExtra(START_VALUE_KEY, RESTART_ALL_DOWNLOADS_AND_QUEUE)) 16 | // } 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/services/VideoDownloadService.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.services 2 | 3 | import android.app.IntentService 4 | import android.content.Intent 5 | import com.lagradost.cloudstream3.utils.VideoDownloadManager 6 | 7 | class VideoDownloadService : IntentService("VideoDownloadService") { 8 | override fun onHandleIntent(intent: Intent?) { 9 | if (intent != null) { 10 | val id = intent.getIntExtra("id", -1) 11 | val type = intent.getStringExtra("type") 12 | if (id != -1 && type != null) { 13 | val state = when (type) { 14 | "resume" -> VideoDownloadManager.DownloadActionType.Resume 15 | "pause" -> VideoDownloadManager.DownloadActionType.Pause 16 | "stop" -> VideoDownloadManager.DownloadActionType.Stop 17 | else -> return 18 | } 19 | VideoDownloadManager.downloadEvent.invoke(Pair(id, state)) 20 | } 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/subtitles/AbstractSubProvider.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.subtitles 2 | 3 | import androidx.annotation.WorkerThread 4 | import com.lagradost.cloudstream3.subtitles.AbstractSubtitleEntities.SubtitleEntity 5 | import com.lagradost.cloudstream3.subtitles.AbstractSubtitleEntities.SubtitleSearch 6 | import com.lagradost.cloudstream3.syncproviders.AuthAPI 7 | 8 | interface AbstractSubProvider { 9 | @WorkerThread 10 | suspend fun search(query: SubtitleSearch): List? { 11 | throw NotImplementedError() 12 | } 13 | 14 | @WorkerThread 15 | suspend fun load(data: SubtitleEntity): String? { 16 | throw NotImplementedError() 17 | } 18 | } 19 | 20 | interface AbstractSubApi : AbstractSubProvider, AuthAPI -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/subtitles/AbstractSubtitleEntities.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.subtitles 2 | 3 | import com.lagradost.cloudstream3.TvType 4 | 5 | class AbstractSubtitleEntities { 6 | data class SubtitleEntity( 7 | var idPrefix : String, 8 | var name: String = "", //Title of movie/series. This is the one to be displayed when choosing. 9 | var lang: String = "en", 10 | var data: String = "", //Id or link, depends on provider how to process 11 | var type: TvType = TvType.Movie, //Movie, TV series, etc.. 12 | var source: String, 13 | var epNumber: Int? = null, 14 | var seasonNumber: Int? = null, 15 | var year: Int? = null, 16 | var isHearingImpaired: Boolean = false 17 | ) 18 | 19 | data class SubtitleSearch( 20 | var query: String = "", 21 | var imdb: Long? = null, 22 | var lang: String? = null, 23 | var epNumber: Int? = null, 24 | var seasonNumber: Int? = null, 25 | var year: Int? = null 26 | ) 27 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/syncproviders/AuthAPI.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.syncproviders 2 | 3 | interface AuthAPI { 4 | val name: String 5 | val icon: Int? 6 | 7 | val requiresLogin: Boolean 8 | 9 | val createAccountUrl : String? 10 | 11 | // don't change this as all keys depend on it 12 | val idPrefix: String 13 | 14 | // if this returns null then you are not logged in 15 | fun loginInfo(): LoginInfo? 16 | fun logOut() 17 | 18 | class LoginInfo( 19 | val profilePicture: String? = null, 20 | val name: String?, 21 | val accountIndex: Int, 22 | ) 23 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/syncproviders/OAuth2API.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.syncproviders 2 | 3 | interface OAuth2API : AuthAPI { 4 | val key: String 5 | val redirectUrl: String 6 | 7 | suspend fun handleRedirect(url: String) : Boolean 8 | fun authenticate() 9 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/syncproviders/SyncRepo.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.syncproviders 2 | 3 | import com.lagradost.cloudstream3.ErrorLoadingException 4 | import com.lagradost.cloudstream3.mvvm.Resource 5 | import com.lagradost.cloudstream3.mvvm.normalSafeApiCall 6 | import com.lagradost.cloudstream3.mvvm.safeApiCall 7 | 8 | class SyncRepo(private val repo: SyncAPI) { 9 | val idPrefix = repo.idPrefix 10 | val name = repo.name 11 | val icon = repo.icon 12 | val mainUrl = repo.mainUrl 13 | val requiresLogin = repo.requiresLogin 14 | 15 | suspend fun score(id: String, status: SyncAPI.SyncStatus): Resource { 16 | return safeApiCall { repo.score(id, status) } 17 | } 18 | 19 | suspend fun getStatus(id : String) : Resource { 20 | return safeApiCall { repo.getStatus(id) ?: throw ErrorLoadingException("No data") } 21 | } 22 | 23 | suspend fun getResult(id : String) : Resource { 24 | return safeApiCall { repo.getResult(id) ?: throw ErrorLoadingException("No data") } 25 | } 26 | 27 | suspend fun search(query : String) : Resource> { 28 | return safeApiCall { repo.search(query) ?: throw ErrorLoadingException() } 29 | } 30 | 31 | fun hasAccount() : Boolean { 32 | return normalSafeApiCall { repo.loginInfo() != null } ?: false 33 | } 34 | 35 | fun getIdFromUrl(url : String) : String = repo.getIdFromUrl(url) 36 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/syncproviders/providers/DropboxApi.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.syncproviders.providers 2 | 3 | import com.lagradost.cloudstream3.syncproviders.AuthAPI 4 | import com.lagradost.cloudstream3.syncproviders.OAuth2API 5 | 6 | //TODO dropbox sync 7 | class Dropbox : OAuth2API { 8 | override val idPrefix = "dropbox" 9 | override var name = "Dropbox" 10 | override val key = "zlqsamadlwydvb2" 11 | override val redirectUrl = "dropboxlogin" 12 | override val requiresLogin = true 13 | override val createAccountUrl: String? = null 14 | 15 | override val icon: Int 16 | get() = TODO("Not yet implemented") 17 | 18 | override fun authenticate() { 19 | TODO("Not yet implemented") 20 | } 21 | 22 | override suspend fun handleRedirect(url: String): Boolean { 23 | TODO("Not yet implemented") 24 | } 25 | 26 | override fun logOut() { 27 | TODO("Not yet implemented") 28 | } 29 | 30 | override fun loginInfo(): AuthAPI.LoginInfo? { 31 | TODO("Not yet implemented") 32 | } 33 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/ui/WatchType.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.ui 2 | 3 | import androidx.annotation.DrawableRes 4 | import androidx.annotation.StringRes 5 | import com.lagradost.cloudstream3.R 6 | 7 | enum class WatchType(val internalId: Int, @StringRes val stringRes: Int, @DrawableRes val iconRes: Int) { 8 | // FIX ICONS 9 | WATCHING(0, R.string.type_watching, R.drawable.ic_baseline_remove_red_eye_24), 10 | COMPLETED(1, R.string.type_completed, R.drawable.ic_baseline_check_24), 11 | ONHOLD(2, R.string.type_on_hold, R.drawable.ic_baseline_pause_24), 12 | DROPPED(3, R.string.type_dropped, R.drawable.ic_baseline_close_24), 13 | PLANTOWATCH(4, R.string.type_plan_to_watch, R.drawable.ic_baseline_close_24), 14 | NONE(5, R.string.type_none, R.drawable.ic_baseline_remove_red_eye_24); 15 | 16 | companion object { 17 | fun fromInternalId(id: Int?) = values().find { value -> value.internalId == id } ?: NONE 18 | } 19 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadButtonViewHolder.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.ui.download 2 | 3 | interface DownloadButtonViewHolder { 4 | var downloadButton : EasyDownloadButton 5 | fun reattachDownloadButton() 6 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/ui/player/CustomTextRenderer.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.ui.player 2 | 3 | import android.os.Looper 4 | import com.google.android.exoplayer2.text.SubtitleDecoderFactory 5 | import com.google.android.exoplayer2.text.TextOutput 6 | 7 | class CustomTextRenderer( 8 | offset: Long, 9 | output: TextOutput?, 10 | outputLooper: Looper?, 11 | decoderFactory: SubtitleDecoderFactory = SubtitleDecoderFactory.DEFAULT 12 | ) : NonFinalTextRenderer(output, outputLooper, decoderFactory) { 13 | private var offsetPositionUs: Long = 0L 14 | 15 | init { 16 | setRenderOffsetMs(offset) 17 | } 18 | 19 | fun setRenderOffsetMs(offset : Long) { 20 | offsetPositionUs = offset * 1000L 21 | } 22 | 23 | fun getRenderOffsetMs() : Long { 24 | return offsetPositionUs / 1000L 25 | } 26 | 27 | override fun render( positionUs: Long, elapsedRealtimeUs: Long) { 28 | super.render(positionUs + offsetPositionUs, elapsedRealtimeUs + offsetPositionUs) 29 | } 30 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/ui/player/IGenerator.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.ui.player 2 | 3 | import com.lagradost.cloudstream3.utils.ExtractorLink 4 | import com.lagradost.cloudstream3.utils.ExtractorUri 5 | 6 | interface IGenerator { 7 | val hasCache: Boolean 8 | 9 | fun hasNext(): Boolean 10 | fun hasPrev(): Boolean 11 | fun next() 12 | fun prev() 13 | fun goto(index: Int) 14 | 15 | fun getCurrentId(): Int? // this is used to save data or read data about this id 16 | fun getCurrent(offset : Int = 0): Any? // this is used to get metadata about the current playing, can return null 17 | fun getAll() : List? // thus us used to get the metadata about all entries, not needed 18 | 19 | /* not safe, must use try catch */ 20 | suspend fun generateLinks( 21 | clearCache: Boolean, 22 | isCasting: Boolean, 23 | callback: (Pair) -> Unit, 24 | subtitleCallback: (SubtitleData) -> Unit, 25 | offset : Int = 0, 26 | ): Boolean 27 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/ui/player/SSLTrustManager.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.ui.player 2 | 3 | import java.security.cert.X509Certificate 4 | import javax.net.ssl.X509TrustManager 5 | 6 | class SSLTrustManager : X509TrustManager { 7 | override fun checkClientTrusted(p0: Array?, p1: String?) { 8 | } 9 | 10 | override fun checkServerTrusted(p0: Array?, p1: String?) { 11 | } 12 | 13 | override fun getAcceptedIssuers(): Array { 14 | return arrayOf() 15 | } 16 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/ui/search/SyncSearchViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.ui.search 2 | 3 | import com.lagradost.cloudstream3.SearchQuality 4 | import com.lagradost.cloudstream3.SearchResponse 5 | import com.lagradost.cloudstream3.TvType 6 | import com.lagradost.cloudstream3.syncproviders.AccountManager.Companion.SyncApis 7 | 8 | class SyncSearchViewModel { 9 | private val repos = SyncApis 10 | 11 | data class SyncSearchResultSearchResponse( 12 | override val name: String, 13 | override val url: String, 14 | override val apiName: String, 15 | override var type: TvType?, 16 | override var posterUrl: String?, 17 | override var id: Int?, 18 | override var quality: SearchQuality? = null, 19 | override var posterHeaders: Map? = null, 20 | ) : SearchResponse 21 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/utils/Coroutines.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.utils 2 | 3 | import android.os.Handler 4 | import android.os.Looper 5 | import com.lagradost.cloudstream3.mvvm.logError 6 | import kotlinx.coroutines.* 7 | 8 | object Coroutines { 9 | fun main(work: suspend (() -> Unit)): Job { 10 | return CoroutineScope(Dispatchers.Main).launch { 11 | work() 12 | } 13 | } 14 | 15 | fun ioSafe(work: suspend (() -> Unit)): Job { 16 | return CoroutineScope(Dispatchers.IO).launch { 17 | try { 18 | work() 19 | } catch (e: Exception) { 20 | logError(e) 21 | } 22 | } 23 | } 24 | 25 | suspend fun ioWork(work: suspend (() -> T)): T { 26 | return withContext(Dispatchers.IO) { 27 | work() 28 | } 29 | } 30 | 31 | fun runOnMainThread(work: (() -> Unit)) { 32 | val mainHandler = Handler(Looper.getMainLooper()) 33 | mainHandler.post { 34 | work() 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/utils/Event.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.utils 2 | 3 | class Event { 4 | private val observers = mutableSetOf<(T) -> Unit>() 5 | 6 | operator fun plusAssign(observer: (T) -> Unit) { 7 | observers.add(observer) 8 | } 9 | 10 | operator fun minusAssign(observer: (T) -> Unit) { 11 | observers.remove(observer) 12 | } 13 | 14 | operator fun invoke(value: T) { 15 | for (observer in observers) 16 | observer(value) 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/utils/ExtensionManager.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.utils 2 | 3 | /* 4 | import android.content.Context 5 | import dalvik.system.PathClassLoader 6 | import java.io.File 7 | open class TestSource { 8 | open fun doMath(): Int { 9 | return 33 10 | } 11 | } 12 | object ExtensionManager { 13 | fun getSourceFromDex(context: Context, pkgName: String, file: File): TestSource? { 14 | val loader = PathClassLoader(file.absolutePath, context.classLoader) 15 | 16 | val obj = Class.forName(pkgName, false, loader).newInstance() 17 | if (obj is TestSource) { 18 | println("MATH : ${obj.doMath()}") 19 | } 20 | 21 | return null 22 | } 23 | }*/ -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/utils/IDisposable.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.utils 2 | 3 | interface IDisposable { 4 | fun dispose() 5 | } 6 | 7 | object IDisposableHelper { 8 | fun using(disposeObject: T, work: (T) -> Unit) { 9 | work.invoke(disposeObject) 10 | disposeObject.dispose() 11 | } 12 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/utils/IOnBackPressed.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.utils 2 | 3 | interface IOnBackPressed { 4 | fun onBackPressed(): Boolean 5 | } -------------------------------------------------------------------------------- /app/src/main/java/com/lagradost/cloudstream3/utils/Vector2.kt: -------------------------------------------------------------------------------- 1 | package com.lagradost.cloudstream3.utils 2 | 3 | import kotlin.math.sqrt 4 | 5 | data class Vector2(val x : Float, val y : Float) { 6 | operator fun minus(other: Vector2) = Vector2(x - other.x, y - other.y) 7 | operator fun plus(other: Vector2) = Vector2(x + other.x, y + other.y) 8 | operator fun times(other: Int) = Vector2(x * other, y * other) 9 | override fun toString(): String = "($x, $y)" 10 | fun distanceTo(other: Vector2) = (this - other).length 11 | private val lengthSquared by lazy { x*x + y*y } 12 | val length by lazy { sqrt(lengthSquared) } 13 | } -------------------------------------------------------------------------------- /app/src/main/res/anim/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /app/src/main/res/anim/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/anim/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/anim/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/anim/enter_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 13 | 14 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/anim/exit_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 13 | 14 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/anim/go_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/anim/go_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/anim/nav_enter_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/anim/nav_exit_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/anim/nav_pop_enter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/anim/nav_pop_exit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/anim/pop_enter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 13 | 14 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/anim/pop_exit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 13 | 14 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/anim/rotate_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 12 | 19 | 23 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/anim/rotate_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 12 | 19 | 23 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/color/check_selection_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/color/item_select_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/color/player_button_tv.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/color/player_on_button_tv.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/color/tag_stroke_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/color/text_selection_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/color/toggle_button.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/color/toggle_button_outline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/color/toggle_button_text.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/color/toggle_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/background_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_description_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_fullscreen_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_fullscreen_exit_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_grid_view_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_list_alt_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_remove_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_restore_page_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_save_as_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_sync_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_theaters_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/circle_shape.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/circular_progress_bar.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 10 | 11 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/circular_progress_bar_filled.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/custom_rating_bar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/dialog__window_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/dub_bg_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/example_poster.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/drawable/example_poster.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_anilist_icon.xml: -------------------------------------------------------------------------------- 1 | 8 | 12 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_add_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_arrow_back_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_arrow_back_ios_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_arrow_forward_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_aspect_ratio_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_autorenew_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_bookmark_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_bookmark_border_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_brightness_1_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_brightness_2_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_brightness_3_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_brightness_4_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_brightness_5_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_brightness_6_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_brightness_7_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_bug_report_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_check_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_check_24_listview.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_clear_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_close_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_color_lens_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_construction_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_delete_outline_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_developer_mode_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_dns_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_fast_forward_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_favorite_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_favorite_border_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_filter_list_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_hd_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_hearing_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_keyboard_arrow_down_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_keyboard_arrow_left_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_keyboard_arrow_right_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_language_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_more_vert_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_notifications_active_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_ondemand_video_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_pause_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_picture_in_picture_alt_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_play_arrow_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_playlist_play_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_public_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_remove_red_eye_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_skip_next_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_speed_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_star_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_star_border_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_storage_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_subtitles_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_system_update_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_text_format_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_touch_app_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_tune_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_tv_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_visibility_off_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_volume_down_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_volume_mute_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_volume_up_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_warning_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_dashboard_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_home_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_notifications_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_outline_home_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_outline_info_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_outline_remove_red_eye_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_outline_share_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_outline_subtitles_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_outline_voice_over_off_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/mal_logo.xml: -------------------------------------------------------------------------------- 1 | 10 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/material_outline_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/netflix_download.xml: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/netflix_pause.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/netflix_play.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/netflix_skip_back.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 14 | 17 | 20 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/netflix_skip_forward.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 14 | 17 | 20 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/outline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/outline_card.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/outline_drawable.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/pause_to_play.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 11 | 15 | 16 | 17 | 18 | 19 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/play_to_pause.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 11 | 15 | 16 | 17 | 18 | 19 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/player_button_tv.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/player_gradient_tv.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/progress_drawable_vertical.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/question_mark_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rating_empty.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 11 | 12 | 15 | 16 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rating_fill.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 11 | 12 | 15 | 16 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rddone.xml: -------------------------------------------------------------------------------- 1 | 9 | 14 | 19 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rderror.xml: -------------------------------------------------------------------------------- 1 | 9 | 14 | 19 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rdload.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rdpause.xml: -------------------------------------------------------------------------------- 1 | 9 | 14 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rounded_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rounded_progress.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/search_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/search_icon.xml: -------------------------------------------------------------------------------- 1 | 8 | 14 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/solid_primary.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/splash_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/sub_bg_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/subtitles_background_gradient.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/subtitles_preview_background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/drawable/subtitles_preview_background.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/tab_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/title_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/type_bg_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/video_bottom_button.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/video_locked.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 16 | 21 | 26 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/video_pause.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/video_play.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/video_tap_button.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/video_tap_button_always_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/video_tap_button_skip.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/video_unlocked.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 16 | 21 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/font/comic_sans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/comic_sans.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/consola.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/consola.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/futura.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/futura.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/gotham.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/gotham.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/lucida_grande.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/lucida_grande.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/netflix_sans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/netflix_sans.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/open_sans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/open_sans.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/poppins_regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/poppins_regular.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/productsans_black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/productsans_black.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/productsans_blackitalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/productsans_blackitalic.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/productsans_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/productsans_bold.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/productsans_bolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/productsans_bolditalic.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/productsans_italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/productsans_italic.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/productsans_light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/productsans_light.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/productsans_lightitalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/productsans_lightitalic.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/productsans_medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/productsans_medium.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/productsans_mediumitalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/productsans_mediumitalic.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/productsans_regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/productsans_regular.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/productsans_thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/productsans_thin.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/productsans_thinitalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/productsans_thinitalic.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/stix_general.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/stix_general.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/times_new_roman.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/times_new_roman.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/trebuchet_ms.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/trebuchet_ms.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/ubuntu_regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/ubuntu_regular.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/verdana.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/font/verdana.ttf -------------------------------------------------------------------------------- /app/src/main/res/layout/account_single.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 | 17 | 22 | 23 | 24 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/layout/account_switch.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 17 | 18 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/layout/add_remove_sites.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 13 | 14 | 15 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 10 | 12 | 21 | 22 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/layout/empty_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/layout/homepage_parent_tv.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 17 | 18 | 19 | 32 | -------------------------------------------------------------------------------- /app/src/main/res/layout/loading_downloads.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | 11 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/layout/loading_line.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/loading_line_short.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/loading_line_short_center.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/loading_poster.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/player_episodes.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/layout/result_episode_both.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/layout/result_mini_image.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/layout/result_poster.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/layout/result_tag.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/layout/sort_bottom_footer_add_choice.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/src/main/res/layout/sort_bottom_single_choice.xml: -------------------------------------------------------------------------------- 1 | 15 | 16 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/layout/sort_bottom_single_choice_color.xml: -------------------------------------------------------------------------------- 1 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/layout/toast.xml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/menu/bottom_nav_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 12 | 16 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/menu/cast_expanded_controller_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_banner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/mipmap-xhdpi/ic_banner.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 10dp 6 | 0dp 7 | 2dp 8 | 15dp 9 | 10 | 15dp 11 | 3dp 12 | 15dp 13 | 14 | 2000 15 | -------------------------------------------------------------------------------- /app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #000000 4 | -------------------------------------------------------------------------------- /app/src/main/res/xml/backup_descriptor.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /app/src/main/res/xml/provider_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | 12 | 15 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/xml/settings_account.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 11 | 14 | 17 | 18 | 22 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/xml/settings_media_lang.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | 12 | 13 | 17 | 21 | -------------------------------------------------------------------------------- /app/src/prerelease/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/prerelease/ic_launcher-playstore.png -------------------------------------------------------------------------------- /app/src/prerelease/res/mipmap-anydpi-v26/ic_banner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/prerelease/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/prerelease/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/prerelease/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/prerelease/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/prerelease/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/prerelease/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/prerelease/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/prerelease/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/prerelease/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/prerelease/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/prerelease/res/mipmap-xhdpi/ic_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/prerelease/res/mipmap-xhdpi/ic_banner.png -------------------------------------------------------------------------------- /app/src/prerelease/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/prerelease/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/prerelease/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/prerelease/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/prerelease/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/prerelease/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/prerelease/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/prerelease/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/prerelease/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/prerelease/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/prerelease/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/prerelease/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/prerelease/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #000000 4 | -------------------------------------------------------------------------------- /app/src/prerelease/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | CloudStream Beta 3 | -------------------------------------------------------------------------------- /app/src/release/res/mipmap-anydpi-v26/ic_banner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/release/res/mipmap-xhdpi/ic_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/app/src/release/res/mipmap-xhdpi/ic_banner.png -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | buildscript { 3 | ext.kotlin_version = "1.7.10" 4 | repositories { 5 | google() 6 | jcenter() 7 | } 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:7.2.1' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | 12 | // NOTE: Do not place your application dependencies here; they belong 13 | // in the individual module build.gradle files 14 | } 15 | } 16 | 17 | allprojects { 18 | repositories { 19 | google() 20 | jcenter() 21 | } 22 | } 23 | 24 | task clean(type: Delete) { 25 | delete rootProject.buildDir 26 | } -------------------------------------------------------------------------------- /docs/_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-modernist -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | CloudStream-3 Supported Sites 10 | 11 | 12 | 13 | 14 |
15 |

Sites supported (0):

16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /docs/keys.json: -------------------------------------------------------------------------------- 1 | { 2 | "wco_key": "51wJ0FDq/UVCefLopEcmK3ni4WIQztMjZdSYOsbHr9R2h7PvxBGAuglaN8+kXT6y", 3 | "wco_cipher_key": "vZUFFBPxMqDeOfAm" 4 | } -------------------------------------------------------------------------------- /fastlane/metadata/android/de-DE/full_description.txt: -------------------------------------------------------------------------------- 1 | Mit CloudStream-3 kannst du Filme, TV-Serien und Anime streamen und herunterladen. Die App kommt ganz ohne Werbung und Analytik aus. Sie unterstützt mehrere Trailer-, Filmseiten und vieles mehr. Integrierte Features: 2 | 3 | 4 | 5 | Lesezeichen 6 | 7 | 8 | Herunterladen und Streamen von Filmen, Fernsehsendungen und Animes 9 | 10 | 11 | Downloads von Untertiteln 12 | 13 | 14 | Chromecast-Unterstützung 15 | -------------------------------------------------------------------------------- /fastlane/metadata/android/de-DE/short_description.txt: -------------------------------------------------------------------------------- 1 | Streame und downloade Filme, TV-Serien und Animes. 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/2.txt: -------------------------------------------------------------------------------- 1 | - Changelog added! 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/full_description.txt: -------------------------------------------------------------------------------- 1 | CloudStream-3 lets you stream and download Movies, TV-Series and Anime. The app comes without any ads and analytics. It supports multiple trailer & movie sites, and more. Features include: 2 | 3 | 4 | 5 | Bookmarks 6 | 7 | 8 | Download and stream movies, tv-shows and anime 9 | 10 | 11 | subtitle downloads 12 | 13 | 14 | Chromecast support 15 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/short_description.txt: -------------------------------------------------------------------------------- 1 | Stream and download Movies, TV-Series and Anime. 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/title.txt: -------------------------------------------------------------------------------- 1 | CloudStream 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/es-AR/full_description.txt: -------------------------------------------------------------------------------- 1 | CloudStream-3 te permite ver y descargar Películas, Series de TV y Anime. La app viene sin anuncios ni análisis. Soporta varios sitios de películas, trailers... Y 2 | Más. Características incluídas: 3 | 4 | 5 | Marcadores 6 | 7 | Descargar y mirar streams de películas, shows de TV y anime 8 | 9 | Descargar subtítulos 10 | 11 | Soporte para Chromecast 12 | -------------------------------------------------------------------------------- /fastlane/metadata/android/es-AR/short_description.txt: -------------------------------------------------------------------------------- 1 | Mirá y descarga Películas, Series y Anime 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it-IT/full_description.txt: -------------------------------------------------------------------------------- 1 | CloudStream-3 ti consente di riprodurre in streaming e scaricare film, serie TV e anime. L'app viene fornita senza pubblicità e tracking. Supporta più siti di trailer e film e altro ancora. Le caratteristiche includono: 2 | 3 | 4 | 5 | Preferiti 6 | 7 | 8 | Scarica e riproduci in streaming film, serie TV e anime 9 | 10 | 11 | scarica sottotitoli 12 | 13 | 14 | Supporto a Chromecast 15 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it-IT/short_description.txt: -------------------------------------------------------------------------------- 1 | Scarica e riproduci in streaming film, serie TV e anime 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/mk-MK/full_description.txt: -------------------------------------------------------------------------------- 1 | CloudStream-3 ви дозволува да гледате и превземате филмови, телевизиски серии и аниме. Апликацијата нема реклами и аналитика. Таа поддржува повеќе страници за трејлери, филмови и многу повеќе. 2 | Апликацијата вклучува: 3 | 4 | Обележувачи (bookmarks) 5 | Превземање и гледање на филмови, серии и аниме 6 | Превземање на преводи 7 | Поддршка за Chromecast 8 | -------------------------------------------------------------------------------- /fastlane/metadata/android/mk-MK/short_description.txt: -------------------------------------------------------------------------------- 1 | Гледање и превземање на филмови, серии и аниме 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/mk-MK/title.txt: -------------------------------------------------------------------------------- 1 | CloudStream 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/full_description.txt: -------------------------------------------------------------------------------- 1 | CloudStream-3可以让你串流和下载电影、剧集和动漫。这款应用没有任何广告和分析。它支持多个预告片和电影网站等。特点包括: 2 | 3 | 4 | 5 | 书签 6 | 7 | 8 | 下载和串流电影、电视节目和动漫 9 | 10 | 11 | 下载字幕 12 | 13 | 14 | 支持投屏 15 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/short_description.txt: -------------------------------------------------------------------------------- 1 | 串流和下载电影、剧集和动漫。 2 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel=true 14 | # AndroidX package structure to make it clearer which packages are bundled with the 15 | # Android operating system, and which are packaged with your app"s APK 16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 17 | android.useAndroidX=true 18 | # Automatically convert third-party libraries to use AndroidX 19 | android.enableJetifier=true 20 | # Kotlin code style for this project: "official" or "obsolete": 21 | kotlin.code.style=official -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AniFOSS/CloudStream-3/9678b068ee11f2c30f3eff3526faf430b5d966cf/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Apr 30 17:11:15 CEST 2021 2 | distributionBase=GRADLE_USER_HOME 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip 4 | distributionPath=wrapper/dists 5 | zipStorePath=wrapper/dists 6 | zipStoreBase=GRADLE_USER_HOME 7 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | rootProject.name = "CloudStream" --------------------------------------------------------------------------------