diff --git a/app/build.gradle b/app/build.gradle index a3b0a88..8b59569 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,9 +11,9 @@ android { defaultConfig { applicationId "org.mosad.teapod" minSdkVersion 23 - targetSdkVersion 32 - versionCode 100990 //01.00.000 - versionName "1.1.0-beta1" + targetSdkVersion 33 + versionCode 100991 //01.00.000 + versionName "1.1.0-beta2" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resValue "string", "build_time", buildTime() diff --git a/app/src/main/java/org/mosad/teapod/parser/crunchyroll/DataTypes.kt b/app/src/main/java/org/mosad/teapod/parser/crunchyroll/DataTypes.kt index 5a43200..a03c366 100644 --- a/app/src/main/java/org/mosad/teapod/parser/crunchyroll/DataTypes.kt +++ b/app/src/main/java/org/mosad/teapod/parser/crunchyroll/DataTypes.kt @@ -245,11 +245,11 @@ data class SeriesItem( @SerialName("images") val images: Images, @SerialName("is_simulcast") val isSimulcast: Boolean, @SerialName("maturity_ratings") val maturityRatings: List, - @SerialName("audio_locales") val audioLocales: List - + @SerialName("audio_locales") val audioLocales: List, + @SerialName("episode_count") val episodeCount: Int ) -val NoneSeriesItem = SeriesItem("", "", "", Images(emptyList(), emptyList()), false, emptyList(), emptyList()) +val NoneSeriesItem = SeriesItem("", "", "", Images(emptyList(), emptyList()), false, emptyList(), emptyList(), 0) val NoneSeries = Series(1, listOf(NoneSeriesItem)) /** diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/MediaFragment.kt b/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/MediaFragment.kt index 91bd0dd..ae0f6ee 100644 --- a/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/MediaFragment.kt +++ b/app/src/main/java/org/mosad/teapod/ui/activity/main/fragments/MediaFragment.kt @@ -47,7 +47,6 @@ class MediaFragment(private val mediaIdStr: String) : Fragment() { playerFinishedCallback() } - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { binding = FragmentMediaBinding.inflate(inflater, container, false) return binding.root @@ -91,6 +90,7 @@ class MediaFragment(private val mediaIdStr: String) : Fragment() { // load poster and backdrop Glide.with(requireContext()).load(posterUrl) + .apply(RequestOptions.placeholderOf(ColorDrawable(Color.DKGRAY))) .into(binding.imagePoster) Glide.with(requireContext()).load(backdropUrl) .apply(RequestOptions.placeholderOf(ColorDrawable(Color.DKGRAY))) @@ -147,14 +147,14 @@ class MediaFragment(private val mediaIdStr: String) : Fragment() { // episodes count binding.textEpisodesOrRuntime.text = resources.getQuantityString( R.plurals.text_episodes_count, - episodesCrunchy.total, - episodesCrunchy.total + seriesCrunchy.episodeCount, + seriesCrunchy.episodeCount ) } is TMDBMovie -> { - val tmdbMovie = (tmdbResult as TMDBMovie?) + val tmdbMovie = tmdbResult as TMDBMovie - if (tmdbMovie?.runtime != null) { + if (tmdbMovie.runtime != null) { binding.textEpisodesOrRuntime.text = resources.getQuantityString( R.plurals.text_runtime, tmdbMovie.runtime, diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/main/viewmodel/MediaFragmentViewModel.kt b/app/src/main/java/org/mosad/teapod/ui/activity/main/viewmodel/MediaFragmentViewModel.kt index 4cfb28a..88f52c7 100644 --- a/app/src/main/java/org/mosad/teapod/ui/activity/main/viewmodel/MediaFragmentViewModel.kt +++ b/app/src/main/java/org/mosad/teapod/ui/activity/main/viewmodel/MediaFragmentViewModel.kt @@ -76,9 +76,9 @@ class MediaFragmentViewModel(application: Application) : AndroidViewModel(applic currentEpisodesCrunchy.clear() currentEpisodesCrunchy.addAll(episodesCrunchy.data) - // set media type + // set media type, for movies the episode field is empty mediaType = episodesCrunchy.data.firstOrNull()?.let { - if (it.episodeNumber != null) MediaType.TVSHOW else MediaType.MOVIE + if (it.episode.isNotEmpty()) MediaType.TVSHOW else MediaType.MOVIE } ?: MediaType.OTHER // load playheads and tmdb in parallel diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerViewModel.kt b/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerViewModel.kt index 9e515c7..55ff137 100644 --- a/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerViewModel.kt +++ b/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerViewModel.kt @@ -246,7 +246,7 @@ class PlayerViewModel(application: Application) : AndroidViewModel(application) } }, viewModelScope.launch(Dispatchers.IO) { - currentIntroMetadata = NoneDatalabIntro //Crunchyroll.datalabIntro(currentEpisode.id) + currentIntroMetadata = Crunchyroll.datalabIntro(currentEpisode.id) } ) Log.d(classTag, "streams: ${currentEpisode.streamsLink}") diff --git a/app/src/main/java/org/mosad/teapod/util/tmdb/TMDBApiController.kt b/app/src/main/java/org/mosad/teapod/util/tmdb/TMDBApiController.kt index 98380dc..7a0d85b 100644 --- a/app/src/main/java/org/mosad/teapod/util/tmdb/TMDBApiController.kt +++ b/app/src/main/java/org/mosad/teapod/util/tmdb/TMDBApiController.kt @@ -67,7 +67,7 @@ class TMDBApiController { ): T = coroutineScope { val path = "$apiUrl$endpoint" val params = concatenate( - listOf("api_key" to apiKey, "language" to Preferences.preferredSubtitleLocale.language), + listOf("api_key" to apiKey, "language" to Preferences.preferredSubtitleLocale.toLanguageTag()), parameters ) diff --git a/app/src/main/res/drawable/placeholder_image_2_3.xml b/app/src/main/res/drawable/placeholder_image_2_3.xml new file mode 100644 index 0000000..eebc313 --- /dev/null +++ b/app/src/main/res/drawable/placeholder_image_2_3.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_media.xml b/app/src/main/res/layout/fragment_media.xml index cdab818..15587ce 100644 --- a/app/src/main/res/layout/fragment_media.xml +++ b/app/src/main/res/layout/fragment_media.xml @@ -42,7 +42,7 @@ android:layout_height="match_parent" android:contentDescription="@string/media_poster_backdrop_desc" android:scaleType="fitCenter" - tools:srcCompat="@drawable/placeholder_image" /> + tools:srcCompat="@android:color/darker_gray" /> + tools:src="@drawable/placeholder_image_2_3" />