From 30feafc9589ddc926fbd3f79ae5676f64e235431 Mon Sep 17 00:00:00 2001 From: MrIkso Date: Sun, 16 Jun 2024 17:44:17 +0300 Subject: [PATCH] upadate code --- README.md | 70 ++++++++++- app/build.gradle.kts | 6 +- app/exo_player_view1.xml | 71 ----------- app/exo_player_view2.xml | 71 ----------- app/proguard-rules.pro | 8 +- app/src/main/AndroidManifest.xml | 2 +- .../app/ui/library/LibaryContentFragment.java | 118 ++++++++++-------- .../app/ui/library/LibraryFragment.java | 1 + .../search_result/SearchResultFragment.java | 56 +++++---- app/src/main/res/values/strings.xml | 2 +- images/screenshots/1.jpg | Bin 0 -> 843641 bytes images/screenshots/2.jpg | Bin 0 -> 602707 bytes images/screenshots/3.jpg | Bin 0 -> 324857 bytes images/screenshots/4.jpg | Bin 0 -> 827978 bytes images/screenshots/5.jpg | Bin 0 -> 414762 bytes images/screenshots/6.jpg | Bin 0 -> 547991 bytes 16 files changed, 175 insertions(+), 230 deletions(-) delete mode 100644 app/exo_player_view1.xml delete mode 100644 app/exo_player_view2.xml create mode 100644 images/screenshots/1.jpg create mode 100644 images/screenshots/2.jpg create mode 100644 images/screenshots/3.jpg create mode 100644 images/screenshots/4.jpg create mode 100644 images/screenshots/5.jpg create mode 100644 images/screenshots/6.jpg diff --git a/README.md b/README.md index 365222b..e41d342 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,67 @@ -# KodikDownloader -Simple app for search and download content from Kodik +
-# Screenshots - + + +[![GitHub release (latest by date)](https://img.shields.io/github/v/release/MrIkso/AnitubeApp?color=black&label=Stable&logo=github)](https://github.com/MrIkso/AnitubeApp/releases/latest/) +[![GitHub all releases](https://img.shields.io/github/downloads/MrIkso/AnitubeApp/total?label=Downloads&logo=github)](https://github.com/MrIKso/AnitubeApp/releases/) +[![Telegram Channel](https://img.shields.io/badge/Telegram-AnitubeApp-blue?style=flat&logo=telegram)](https://t.me/anitube_app) + +
+ +**Anitube App** is a simple [Open Source](https://m.wikipedia.org/wiki/Free_and_open-source_software) android client for [anitube.in.ua](https://anitube.in.ua) to help you watch anime in your phone. + +### Screenshots + +
+
+ + + + + + + +
+
+ +
+ +### Features +- Compatible with Android 8.0 and above (API 28+) +- Comes in both light and dark mode. +- Supports dynamic colors on A12+. +- Supports downloads content +- Login in your account +- Watch history +- Supports Picture-in-Picture mode. +- [Material Design 3](https://m3.material.io/) Theme. + +### Downloads +[Get it on GitHub](https://github.com/MrIkso/AnitubeApp/releases/latest) + +### Built with +- [Kotlin](https://kotlinlang.org/) +- [Java](https://dev.java/) +- [Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html) +- [Android Architecture Components](https://developer.android.com/topic/libraries/architecture) + - [LiveData](https://developer.android.com/topic/libraries/architecture/livedata) + - [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) + - [ViewBinding](https://developer.android.com/topic/libraries/view-binding) + - [Paging3](https://developer.android.com/topic/libraries/architecture/paging/v3-overview) +- [Room database](https://developer.android.com/jetpack/androidx/releases/room) +- [Material Components for Android](https://github.com/material-components/material-components-android) +- [Jsoup](https://jsoup.org/) +- [Glide](https://github.com/bumptech/glide) +- [Retrofit](https://github.com/square/retrofit) +- [Gson](https://github.com/google/gson) +- [Swiperefreshlayout](https://developer.android.com/jetpack/androidx/releases/swiperefreshlayout) +- [Media3](https://github.com/androidx/media) +- [Dagger-Hilt](https://dagger.dev/hilt/) + +### NOTE +THE CONTENT ON THIS APP IS NOT MINE NOR IS IT HOSTED BY ME OR THE APP. THESE BELONG TO THEIR RESPECTIVE OWNERS. This app just demostrates on how it is possible to build a app that can scrape websites and use their content. + +### License +AnitubeApp is licensed under the [GNU Affero General Public License v3.0](LICENSE). + +Have any suggestions? found a bug? Feel free to create an [issue](https://github.com/MrIKso/AnitubeApp/issues/new) with detailed description. diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 411d6f9..a1e9189 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -43,7 +43,6 @@ android { buildTypes { debug { - applicationIdSuffix = ".debug" versionNameSuffix = "-DEBUG" if (keystorePropertiesFile.exists()) { signingConfig = signingConfigs.getByName("release") @@ -86,9 +85,7 @@ android { buildConfig = true viewBinding = true } - lint { - abortOnError = false - } + compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 @@ -101,6 +98,7 @@ android { }*/ lint { disable += "ContentDescription" + abortOnError = false } packaging { resources { diff --git a/app/exo_player_view1.xml b/app/exo_player_view1.xml deleted file mode 100644 index 9025da7..0000000 --- a/app/exo_player_view1.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/exo_player_view2.xml b/app/exo_player_view2.xml deleted file mode 100644 index 9025da7..0000000 --- a/app/exo_player_view2.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 3b98b53..04dbce5 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -21,5 +21,11 @@ #-renamesourcefileattribute SourceFile -dontobfuscate -keep class com.mrikso.** { *; } +# For TagSoup +-keep class org.ccil.cowan.tagsoup.** { *; } + +# For Jsoup +-keep class org.jsoup.** { *; } -dontwarn org.immutables.value.Value$Default --dontwarn org.immutables.value.Value$Immutable \ No newline at end of file +-dontwarn org.immutables.value.Value$Immutable +-dontwarn org.jspecify.annotations.NullMarked \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c10bc4a..0431b4c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,7 +18,7 @@ { - animePpagingAdapter.retry(); - }))); - binding.swipeRefreshLayout.setOnRefreshListener(() -> { - animePpagingAdapter.refresh(); - binding.swipeRefreshLayout.setRefreshing(false); - }); + binding.animeList.setAdapter(animePpagingAdapter.withLoadStateFooter(new MoviesLoadStateAdapter(v -> { + animePpagingAdapter.retry(); + }))); + + binding.swipeRefreshLayout.setOnRefreshListener(() -> { + animePpagingAdapter.refresh(); + binding.swipeRefreshLayout.setRefreshing(false); + }); + } private void handleErrorState(String error) { - binding.loadStateLayout.progressBar.setVisibility(View.GONE); - binding.content.setVisibility(View.GONE); - binding.loadStateLayout.errorLayout.setVisibility(View.VISIBLE); - binding.loadStateLayout.repeat.setOnClickListener(v -> animePpagingAdapter.retry()); - binding.loadStateLayout.errorMessage.setText(error); + if (binding != null) { + binding.loadStateLayout.progressBar.setVisibility(View.GONE); + binding.content.setVisibility(View.GONE); + binding.loadStateLayout.errorLayout.setVisibility(View.VISIBLE); + binding.loadStateLayout.repeat.setOnClickListener(v -> animePpagingAdapter.retry()); + binding.loadStateLayout.errorMessage.setText(error); + } } private void openDetailsFragment(final String link) { @@ -132,38 +140,40 @@ private void openDetailsFragment(final String link) { } private void showNoDataState() { - binding.loadStateLayout.ivIcon.setImageResource(R.drawable.image_no_data); - binding.loadStateLayout.errorMessageTitle.setText(R.string.state_no_data); - - int mode = getArguments().getInt(MODE, 0); - switch (mode) { - case AnimeListType.LIST_ALL: - binding.loadStateLayout.errorMessage.setText(getString(R.string.state_no_data_favotie_anime_list_desc, getString(R.string.anime_all_list))); - break; - case AnimeListType.LIST_ADAND: - binding.loadStateLayout.errorMessage.setText(getString(R.string.state_no_data_favotie_anime_list_desc, getString(R.string.anime_status_adand))); - break; - case AnimeListType.LIST_FAVORITES: - binding.loadStateLayout.errorMessage.setText(getString(R.string.state_no_data_favotie_anime_list_desc, getString(R.string.anime_favorites_list))); - break; - case AnimeListType.LIST_PONED: - binding.loadStateLayout.errorMessage.setText(getString(R.string.state_no_data_favotie_anime_list_desc, getString(R.string.anime_status_poned))); - break; - case AnimeListType.LIST_SEEN: - binding.loadStateLayout.errorMessage.setText(getString(R.string.state_no_data_favotie_anime_list_desc, getString(R.string.anime_status_seen))); - break; - case AnimeListType.LIST_WATCH: - binding.loadStateLayout.errorMessage.setText(getString(R.string.state_no_data_favotie_anime_list_desc, getString(R.string.anime_status_watch))); - break; - case AnimeListType.LIST_WILL: - binding.loadStateLayout.errorMessage.setText(getString(R.string.state_no_data_favotie_anime_list_desc, getString(R.string.anime_status_will))); - break; - } + if (binding != null) { + binding.loadStateLayout.ivIcon.setImageResource(R.drawable.image_no_data); + binding.loadStateLayout.errorMessageTitle.setText(R.string.state_no_data); + + int mode = getArguments().getInt(MODE, 0); + switch (mode) { + case AnimeListType.LIST_ALL: + binding.loadStateLayout.errorMessage.setText(getString(R.string.state_no_data_favotie_anime_list_desc, getString(R.string.anime_all_list))); + break; + case AnimeListType.LIST_ADAND: + binding.loadStateLayout.errorMessage.setText(getString(R.string.state_no_data_favotie_anime_list_desc, getString(R.string.anime_status_adand))); + break; + case AnimeListType.LIST_FAVORITES: + binding.loadStateLayout.errorMessage.setText(getString(R.string.state_no_data_favotie_anime_list_desc, getString(R.string.anime_favorites_list))); + break; + case AnimeListType.LIST_PONED: + binding.loadStateLayout.errorMessage.setText(getString(R.string.state_no_data_favotie_anime_list_desc, getString(R.string.anime_status_poned))); + break; + case AnimeListType.LIST_SEEN: + binding.loadStateLayout.errorMessage.setText(getString(R.string.state_no_data_favotie_anime_list_desc, getString(R.string.anime_status_seen))); + break; + case AnimeListType.LIST_WATCH: + binding.loadStateLayout.errorMessage.setText(getString(R.string.state_no_data_favotie_anime_list_desc, getString(R.string.anime_status_watch))); + break; + case AnimeListType.LIST_WILL: + binding.loadStateLayout.errorMessage.setText(getString(R.string.state_no_data_favotie_anime_list_desc, getString(R.string.anime_status_will))); + break; + } - binding.content.setVisibility(View.GONE); - binding.loadStateLayout.progressBar.setVisibility(View.GONE); - binding.loadStateLayout.buttonLl.setVisibility(View.GONE); - binding.loadStateLayout.errorLayout.setVisibility(View.VISIBLE); + binding.content.setVisibility(View.GONE); + binding.loadStateLayout.progressBar.setVisibility(View.GONE); + binding.loadStateLayout.buttonLl.setVisibility(View.GONE); + binding.loadStateLayout.errorLayout.setVisibility(View.VISIBLE); + } } private void initObservers() { @@ -185,8 +195,8 @@ private void showAnimeList(final PagingData results) { @Override public void onDestroyView() { super.onDestroyView(); - binding = null; animePpagingAdapter = null; + binding = null; } public RequestManager getGlide(Context context) { diff --git a/app/src/main/java/com/mrikso/anitube/app/ui/library/LibraryFragment.java b/app/src/main/java/com/mrikso/anitube/app/ui/library/LibraryFragment.java index 0e665e3..89f38b2 100644 --- a/app/src/main/java/com/mrikso/anitube/app/ui/library/LibraryFragment.java +++ b/app/src/main/java/com/mrikso/anitube/app/ui/library/LibraryFragment.java @@ -102,6 +102,7 @@ public int getItemCount() { return arrayList.size(); } + @NonNull @Override public Fragment createFragment(int position) { return arrayList.get(position); diff --git a/app/src/main/java/com/mrikso/anitube/app/ui/search_result/SearchResultFragment.java b/app/src/main/java/com/mrikso/anitube/app/ui/search_result/SearchResultFragment.java index ca680d2..79a3071 100644 --- a/app/src/main/java/com/mrikso/anitube/app/ui/search_result/SearchResultFragment.java +++ b/app/src/main/java/com/mrikso/anitube/app/ui/search_result/SearchResultFragment.java @@ -73,29 +73,37 @@ private void initViews() { LoadState refreshLoadState = combinedLoadStates.getRefresh(); LoadState appendLoadState = combinedLoadStates.getAppend(); if (refreshLoadState instanceof LoadState.Loading) { - binding.content.setVisibility(View.GONE); - binding.loadStateLayout.progressBar.setVisibility(View.VISIBLE); - binding.loadStateLayout.errorLayout.setVisibility(View.GONE); + if(binding!=null) { + binding.content.setVisibility(View.GONE); + binding.loadStateLayout.progressBar.setVisibility(View.VISIBLE); + binding.loadStateLayout.errorLayout.setVisibility(View.GONE); + } } if (refreshLoadState instanceof LoadState.NotLoading) { - if (refreshLoadState.getEndOfPaginationReached() && animePagingAdapter.getItemCount() < 1) { + if (refreshLoadState.getEndOfPaginationReached() && animePagingAdapter!=null && animePagingAdapter.getItemCount() < 1) { showNoDataState(); } else { - binding.content.setVisibility(View.VISIBLE); + if(binding!=null) { + binding.content.setVisibility(View.VISIBLE); + } + } + if(binding!=null) { + binding.loadStateLayout.progressBar.setVisibility(View.GONE); + binding.loadStateLayout.errorLayout.setVisibility(View.GONE); } - binding.loadStateLayout.progressBar.setVisibility(View.GONE); - binding.loadStateLayout.errorLayout.setVisibility(View.GONE); } else if (refreshLoadState instanceof LoadState.Error) { - binding.loadStateLayout.progressBar.setVisibility(View.GONE); - binding.content.setVisibility(View.GONE); - binding.loadStateLayout.errorLayout.setVisibility(View.VISIBLE); - binding.loadStateLayout.repeat.setOnClickListener(v -> animePagingAdapter.retry()); - LoadState.Error loadStateError = (LoadState.Error) refreshLoadState; - binding.loadStateLayout.errorMessage.setText( - loadStateError.getError().getLocalizedMessage()); + if(binding!=null) { + binding.loadStateLayout.progressBar.setVisibility(View.GONE); + binding.content.setVisibility(View.GONE); + binding.loadStateLayout.errorLayout.setVisibility(View.VISIBLE); + binding.loadStateLayout.repeat.setOnClickListener(v -> animePagingAdapter.retry()); + LoadState.Error loadStateError = (LoadState.Error) refreshLoadState; + binding.loadStateLayout.errorMessage.setText( + loadStateError.getError().getLocalizedMessage()); + } } if (!(refreshLoadState instanceof LoadState.Loading) && appendLoadState instanceof LoadState.NotLoading) { - if (appendLoadState.getEndOfPaginationReached() && animePagingAdapter.getItemCount() < 1) { + if (appendLoadState.getEndOfPaginationReached() && animePagingAdapter!=null && animePagingAdapter.getItemCount() < 1) { showNoDataState(); } } @@ -114,14 +122,16 @@ private void openDetailsFragment(final String link) { } private void showNoDataState() { - binding.loadStateLayout.ivIcon.setImageResource(R.drawable.image_no_data); - binding.loadStateLayout.errorMessageTitle.setText(R.string.state_no_data); - binding.loadStateLayout.errorMessage.setText(R.string.state_no_data_search_desc); - - binding.content.setVisibility(View.GONE); - binding.loadStateLayout.progressBar.setVisibility(View.GONE); - binding.loadStateLayout.buttonLl.setVisibility(View.GONE); - binding.loadStateLayout.errorLayout.setVisibility(View.VISIBLE); + if(binding!=null) { + binding.loadStateLayout.ivIcon.setImageResource(R.drawable.image_no_data); + binding.loadStateLayout.errorMessageTitle.setText(R.string.state_no_data); + binding.loadStateLayout.errorMessage.setText(R.string.state_no_data_search_desc); + + binding.content.setVisibility(View.GONE); + binding.loadStateLayout.progressBar.setVisibility(View.GONE); + binding.loadStateLayout.buttonLl.setVisibility(View.GONE); + binding.loadStateLayout.errorLayout.setVisibility(View.VISIBLE); + } } private void initObservers() { viewModel.getAnimePagingData().observe(getViewLifecycleOwner(), results -> { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9bd4923..1dc9c5f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,5 @@ - Anitube App + Anitube App Головна Список аніме Бібліотека diff --git a/images/screenshots/1.jpg b/images/screenshots/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7d46827abd3c6da494394c11e86e6d244a91b38d GIT binary patch literal 843641 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