replace tv credits with aggregate credits API

This commit is contained in:
Owen LeJeune
2023-06-28 13:31:58 -04:00
parent fba63e33d4
commit e6f8931c74
35 changed files with 93 additions and 76 deletions

View File

@@ -1,9 +1,10 @@
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
import com.google.gson.annotations.SerializedName
import java.util.Date
class BaseEpisode(
@SerializedName("air_date") val airDate: String,
@SerializedName("air_date") val airDate: Date?,
@SerializedName("episode_number") val episodeNumber: Int,
@SerializedName("id") val id: Int,
@SerializedName("name") val name: String,

View File

@@ -1,10 +1,11 @@
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
import com.google.gson.annotations.SerializedName
import java.util.Date
data class BaseSeason(
@SerializedName("id") val id: Int,
@SerializedName("air_date") val airDate: String,
@SerializedName("air_date") val airDate: Date?,
@SerializedName("episode_count") val episodeCount: Int,
@SerializedName("name") val name: String,
@SerializedName("overview") val overview: String,

View File

@@ -26,7 +26,7 @@ abstract class CreditMedia(
@SerializedName("media_type") val mediaType: MediaViewType,
@SerializedName("genre_ids") val genreIds: List<Int>,
@SerializedName("popularity") val popularity: Float,
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: Date,
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: Date?,
@SerializedName("vote_average") val voteAverage: Float,
@SerializedName("vote_count") val voteCount: Int,
@SerializedName("character") val character: String
@@ -73,7 +73,7 @@ class CreditTv(
MediaViewType.TV, genreIds, popularity, releaseDate, voteAverage, voteCount, character)
class CreditEpisode(
@SerializedName("air_date") val airDate: Date,
@SerializedName("air_date") val airDate: Date?,
@SerializedName("episode_number") val episodeNumber: Int,
@SerializedName("id") val id: Int,
@SerializedName("name") val name: String,
@@ -86,7 +86,7 @@ class CreditEpisode(
)
class CreditSeason(
@SerializedName("air_date") val airDate: Date,
@SerializedName("air_date") val airDate: Date?,
@SerializedName("episode_count") val episodeCount: Int,
@SerializedName("id") val id: Int,
@SerializedName("name") val name: String,

View File

@@ -1,6 +1,7 @@
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
import com.google.gson.annotations.SerializedName
import java.util.Date
class DetailedMovie(
id: Int,
@@ -21,7 +22,7 @@ class DetailedMovie(
spokenLanguages: List<SpokenLanguage>,
@SerializedName("adult") val isAdult: Boolean,
@SerializedName("budget") val budget: Int,
@SerializedName("release_date") val releaseDate: String,
@SerializedName("release_date") val releaseDate: Date?,
@SerializedName("revenue") val revenue: Long,
@SerializedName("runtime") val runtime: Int?,
@SerializedName("imdb_id") val imdbId: String?,

View File

@@ -1,6 +1,7 @@
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
import com.google.gson.annotations.SerializedName
import java.util.Date
class DetailedTv(
id: Int,
@@ -20,8 +21,8 @@ class DetailedTv(
popularity: Float,
spokenLanguages: List<SpokenLanguage>,
@SerializedName("created_by") val createdBy: List<Person>,
@SerializedName("first_air_date") val firstAirDate: String,
@SerializedName("last_air_date") val lastAirDate: String,
@SerializedName("first_air_date") val firstAirDate: Date?,
@SerializedName("last_air_date") val lastAirDate: Date?,
@SerializedName("in_production") val inProduction: Boolean,
@SerializedName("networks") val networks: List<Network>,
@SerializedName("number_of_episodes") val numberOfEpisodes: Int,

View File

@@ -1,6 +1,7 @@
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
import com.google.gson.annotations.SerializedName
import java.util.Date
abstract class FavoriteMedia(
@SerializedName("poster_path") val posterPath: String?,
@@ -9,7 +10,7 @@ abstract class FavoriteMedia(
@SerializedName("backdrop_path") val backdropPath: String?,
@SerializedName("vote_average") val voteAverage: Float,
@SerializedName("overview") val overview: String,
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: String,
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: Date?,
@SerializedName("genre_ids") val genreIds: List<Int>,
@SerializedName("original_language") val originalLanguage: String,
@SerializedName("vote_count") val voteCount: Int,

View File

@@ -1,6 +1,7 @@
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
import com.google.gson.annotations.SerializedName
import java.util.Date
class FavoriteMovie(
posterPath: String?,
@@ -9,7 +10,7 @@ class FavoriteMovie(
backdropPath: String?,
voteAverage: Float,
overview: String,
releaseDate: String,
releaseDate: Date?,
genreIds: List<Int>,
originalLanguage: String,
voteCount: Int,

View File

@@ -1,6 +1,7 @@
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
import com.google.gson.annotations.SerializedName
import java.util.Date
class FavoriteTvSeries(
posterPath: String?,
@@ -9,7 +10,7 @@ class FavoriteTvSeries(
backdropPath: String?,
voteAverage: Float,
overview: String,
releaseDate: String,
releaseDate: Date?,
genreIds: List<Int>,
originalLanguage: String,
voteCount: Int,

View File

@@ -2,10 +2,11 @@ package com.owenlejeune.tvtime.api.tmdb.api.v3.model
import com.google.gson.annotations.SerializedName
import com.owenlejeune.tvtime.utils.types.MediaViewType
import java.util.Date
abstract class KnownFor(
@SerializedName("backdrop_path") val backdropPath: String?,
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: String,
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: Date?,
@SerializedName("genre_ids") val genreIds: List<Int>,
@SerializedName("id") val id: Int,
@SerializedName("media_type") val mediaType: MediaViewType,

View File

@@ -2,10 +2,11 @@ package com.owenlejeune.tvtime.api.tmdb.api.v3.model
import com.google.gson.annotations.SerializedName
import com.owenlejeune.tvtime.utils.types.MediaViewType
import java.util.Date
class KnownForMovie(
backdropPath: String?,
releaseDate: String,
releaseDate: Date?,
genreIds: List<Int>,
id: Int,
mediaType: MediaViewType,

View File

@@ -2,10 +2,11 @@ package com.owenlejeune.tvtime.api.tmdb.api.v3.model
import com.google.gson.annotations.SerializedName
import com.owenlejeune.tvtime.utils.types.MediaViewType
import java.util.Date
class KnownForTv(
backdropPath: String?,
releaseDate: String,
releaseDate: Date?,
genreIds: List<Int>,
id: Int,
mediaType: MediaViewType,

View File

@@ -1,6 +1,7 @@
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
import com.google.gson.annotations.SerializedName
import java.util.Date
data class MovieReleaseResults(
@SerializedName("results") val releaseDates: List<ReleaseDateResult>
@@ -13,7 +14,7 @@ data class MovieReleaseResults(
inner class ReleaseDate(
@SerializedName("certification") val certification: String,
@SerializedName("release_date") val releaseDate: String
@SerializedName("release_date") val releaseDate: Date?
)
}

View File

@@ -1,12 +1,13 @@
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
import com.google.gson.annotations.SerializedName
import java.util.Date
class Review(
@SerializedName("id") val id: String,
@SerializedName("author") val author: String,
@SerializedName("author_details") val authorDetails: AuthorDetails,
@SerializedName("content") val content: String,
@SerializedName("created_at") val createdAt: String,
@SerializedName("updated_at") val updatedAt: String
@SerializedName("created_at") val createdAt: Date?,
@SerializedName("updated_at") val updatedAt: Date?
)

View File

@@ -2,12 +2,13 @@ package com.owenlejeune.tvtime.api.tmdb.api.v3.model
import com.google.gson.annotations.SerializedName
import com.owenlejeune.tvtime.utils.types.MediaViewType
import java.util.Date
abstract class SearchResultMedia(
@SerializedName("overview") val overview: String,
@SerializedName("vote_average") val voteAverage: Float,
@SerializedName("vote_count") val voteCount: Int,
@SerializedName("release_date", alternate = ["first_air_date", "air_date"]) val releaseDate: String,
@SerializedName("release_date", alternate = ["first_air_date", "air_date"]) val releaseDate: Date?,
@SerializedName("backdrop_path") val backdropPath: String?,
@SerializedName("genre_ids") val genreIds: List<Int>,
@SerializedName("original_language") val originalLanguage: String,

View File

@@ -2,6 +2,7 @@ package com.owenlejeune.tvtime.api.tmdb.api.v3.model
import com.google.gson.annotations.SerializedName
import com.owenlejeune.tvtime.utils.types.MediaViewType
import java.util.Date
class SearchResultMovie(
id: Int,
@@ -15,7 +16,7 @@ class SearchResultMovie(
originalName: String,
posterPath: String?,
popularity: Float,
releaseDate: String,
releaseDate: Date?,
@SerializedName("adult") val isAdult: Boolean,
@SerializedName("video") val video: Boolean,
): SearchResultMedia(

View File

@@ -2,6 +2,7 @@ package com.owenlejeune.tvtime.api.tmdb.api.v3.model
import com.google.gson.annotations.SerializedName
import com.owenlejeune.tvtime.utils.types.MediaViewType
import java.util.Date
class SearchResultTv(
id: Int,
@@ -15,7 +16,7 @@ class SearchResultTv(
originalName: String,
posterPath: String?,
popularity: Float,
releaseDate: String,
releaseDate: Date?,
@SerializedName("origin_country") val originCountry: List<String>,
): SearchResultMedia(
overview, voteAverage, voteCount, releaseDate, backdropPath, genreIds,

View File

@@ -1,6 +1,7 @@
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
import com.google.gson.annotations.SerializedName
import java.util.Date
abstract class WatchlistMedia(
@SerializedName("poster_path") val posterPath: String?,
@@ -9,7 +10,7 @@ abstract class WatchlistMedia(
@SerializedName("backdrop_path") val backdropPath: String?,
@SerializedName("vote_average") val voteAverage: Float,
@SerializedName("overview") val overview: String,
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: String,
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: Date?,
@SerializedName("genre_ids") val genreIds: List<Int>,
@SerializedName("original_language") val originalLanguage: String,
@SerializedName("vote_count") val voteCount: Int,

View File

@@ -1,6 +1,7 @@
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
import com.google.gson.annotations.SerializedName
import java.util.Date
class WatchlistMovie(
posterPath: String?,
@@ -9,7 +10,7 @@ class WatchlistMovie(
backdropPath: String?,
voteAverage: Float,
overview: String,
releaseDate: String,
releaseDate: Date?,
genreIds: List<Int>,
originalLanguage: String,
voteCount: Int,

View File

@@ -1,6 +1,7 @@
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
import com.google.gson.annotations.SerializedName
import java.util.Date
class WatchlistTvSeries(
posterPath: String?,
@@ -9,7 +10,7 @@ class WatchlistTvSeries(
backdropPath: String?,
voteAverage: Float,
overview: String,
releaseDate: String,
releaseDate: Date?,
genreIds: List<Int>,
originalLanguage: String,
voteCount: Int,

View File

@@ -1,6 +1,7 @@
package com.owenlejeune.tvtime.api.tmdb.api.v4.model
import com.google.gson.annotations.SerializedName
import java.util.Date
class AccountList(
@SerializedName("iso_639_1") val languageCode: String,
@@ -10,8 +11,8 @@ class AccountList(
@SerializedName("revenue") val revenue: String,
@SerializedName("public") val public: Int,
@SerializedName("name") val name: String,
@SerializedName("updated_at") val updatedAt: String,
@SerializedName("created_at") val createdAt: String,
@SerializedName("updated_at") val updatedAt: Date?,
@SerializedName("created_at") val createdAt: Date?,
// @SerializedName("sort_by")
@SerializedName("backdrop_path") val backdropPath: String,
@SerializedName("runtime") val runtime: Int,

View File

@@ -2,10 +2,11 @@ package com.owenlejeune.tvtime.api.tmdb.api.v4.model
import com.google.gson.annotations.SerializedName
import com.owenlejeune.tvtime.utils.types.MediaViewType
import java.util.Date
abstract class ListItem(
@SerializedName("backdrop_path") val backdropPath: String?,
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: String,
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: Date?,
@SerializedName("genre_ids") val genreIds: List<Int>,
@SerializedName("id") val id: Int,
@SerializedName("media_type") val mediaType: MediaViewType,

View File

@@ -2,10 +2,11 @@ package com.owenlejeune.tvtime.api.tmdb.api.v4.model
import com.google.gson.annotations.SerializedName
import com.owenlejeune.tvtime.utils.types.MediaViewType
import java.util.Date
class ListMovie(
backdropPath: String?,
releaseDate: String,
releaseDate: Date?,
genreIds: List<Int>,
id: Int,
mediaType: MediaViewType,

View File

@@ -2,10 +2,11 @@ package com.owenlejeune.tvtime.api.tmdb.api.v4.model
import com.google.gson.annotations.SerializedName
import com.owenlejeune.tvtime.utils.types.MediaViewType
import java.util.Date
class ListTv(
backdropPath: String?,
releaseDate: String,
releaseDate: Date?,
genreIds: List<Int>,
id: Int,
mediaType: MediaViewType,

View File

@@ -1,6 +1,7 @@
package com.owenlejeune.tvtime.api.tmdb.api.v4.model
import com.google.gson.annotations.SerializedName
import java.util.Date
abstract class RatedMedia(
var type: RatedType,
@@ -10,7 +11,7 @@ abstract class RatedMedia(
@SerializedName("vote_average") val voteAverage: Float,
@SerializedName("vote_count") val voteCount: Int,
@SerializedName("account_rating") val rating: AccountRating,
@SerializedName("release_date", alternate = ["first_air_date", "air_date"]) val releaseDate: String,
@SerializedName("release_date", alternate = ["first_air_date", "air_date"]) val releaseDate: Date?,
@SerializedName("backdrop_path") val backdropPath: String?,
@SerializedName("genre_ids") val genreIds: List<Int>,
@SerializedName("original_language") val originalLanguage: String,
@@ -26,6 +27,6 @@ abstract class RatedMedia(
inner class AccountRating(
@SerializedName("value") val value: Float,
@SerializedName("created_at") val createdAt: String
@SerializedName("created_at") val createdAt: Date?
)
}

View File

@@ -1,6 +1,7 @@
package com.owenlejeune.tvtime.api.tmdb.api.v4.model
import com.google.gson.annotations.SerializedName
import java.util.Date
class RatedMovie(
id: Int,
@@ -15,7 +16,7 @@ class RatedMovie(
originalName: String,
posterPath: String?,
popularity: Float,
releaseDate: String,
releaseDate: Date?,
@SerializedName("adult") val isAdult: Boolean,
@SerializedName("video") val video: Boolean
): RatedMedia(

View File

@@ -1,6 +1,7 @@
package com.owenlejeune.tvtime.api.tmdb.api.v4.model
import com.google.gson.annotations.SerializedName
import java.util.Date
class RatedTv(
id: Int,
@@ -15,7 +16,7 @@ class RatedTv(
originalName: String,
posterPath: String?,
popularity: Float,
releaseDate: String,
releaseDate: Date?,
@SerializedName("origin_country") val originCountry: List<String>,
): RatedMedia(
RatedType.SERIES, id, overview, name, voteAverage, voteCount, rating, releaseDate,

View File

@@ -2,6 +2,7 @@ package com.owenlejeune.tvtime.api.tmdb.api.v4.model
import com.google.gson.annotations.SerializedName
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.TmdbItem
import java.util.Date
abstract class RecommendedMedia(
id: Int,
@@ -25,7 +26,7 @@ abstract class RecommendedMedia(
@SerializedName("popularity")
val popularity: Float,
@SerializedName("release_date", alternate = ["first_air_date"])
val releaseDate: String,
val releaseDate: Date?,
@SerializedName("vote_average")
val voteAverage: Float,
@SerializedName("vote_count")

View File

@@ -1,6 +1,7 @@
package com.owenlejeune.tvtime.api.tmdb.api.v4.model
import com.google.gson.annotations.SerializedName
import java.util.Date
class RecommendedMovie (
id: Int,
@@ -14,7 +15,7 @@ class RecommendedMovie (
mediaType: String,
genreIds: List<Int>,
popularity: Float,
releaseDate: String,
releaseDate: Date?,
voteAverage: Float,
voteCount: Int,
@SerializedName("video")

View File

@@ -1,6 +1,7 @@
package com.owenlejeune.tvtime.api.tmdb.api.v4.model
import com.google.gson.annotations.SerializedName
import java.util.Date
class RecommendedTv(
id: Int,
@@ -14,7 +15,7 @@ class RecommendedTv(
mediaType: String,
genreIds: List<Int>,
popularity: Float,
releaseDate: String,
releaseDate: Date?,
voteAverage: Float,
voteCount: Int,
@SerializedName("origin_country")

View File

@@ -145,12 +145,12 @@ fun PosterItem(
)
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun PosterItem(
url: String?,
modifier: Modifier = Modifier,
width: Dp = POSTER_WIDTH,
height: Dp = POSTER_HEIGHT,
onClick: () -> Unit = {},
enabled: Boolean = true,
placeholder: ImageVector = Icons.Filled.Movie,
@@ -164,6 +164,7 @@ fun PosterItem(
elevation = CardDefaults.elevatedCardElevation(defaultElevation = elevation),
modifier = modifier
.width(width = width)
.height(height = height)
.wrapContentHeight()
.clickable(
enabled = enabled,
@@ -176,7 +177,7 @@ fun PosterItem(
val m = if (backgroundColor == Color.Transparent) {
Modifier.wrapContentHeight()
} else {
Modifier.height(POSTER_HEIGHT)
Modifier.height(height)
}
Box(
modifier = m

View File

@@ -34,6 +34,7 @@ import com.owenlejeune.tvtime.api.tmdb.api.v4.model.AccountList
import com.owenlejeune.tvtime.api.tmdb.api.v4.model.RatedMedia
import com.owenlejeune.tvtime.api.tmdb.api.v4.model.RatedMovie
import com.owenlejeune.tvtime.api.tmdb.api.v4.model.RatedTv
import com.owenlejeune.tvtime.extensions.getCalendarYear
import com.owenlejeune.tvtime.extensions.lazyPagingItems
import com.owenlejeune.tvtime.extensions.unlessEmpty
import com.owenlejeune.tvtime.ui.components.AccountIcon
@@ -47,6 +48,7 @@ import com.owenlejeune.tvtime.utils.SessionManager
import com.owenlejeune.tvtime.utils.TmdbUtils
import com.owenlejeune.tvtime.utils.types.MediaViewType
import kotlinx.coroutines.launch
import java.util.Date
import kotlin.reflect.KClass
@OptIn(ExperimentalMaterial3Api::class)
@@ -281,19 +283,23 @@ private fun MediaItemRow(
mediaViewType: MediaViewType,
id: Int,
name: String,
date: String,
date: Date?,
description: String,
posterPath: String? = null,
backdropPath: String? = null,
rating: Float? = null
) {
var title = "$name"
date?.let {
title += " (${date.getCalendarYear()})"
}
MediaResultCard(
appNavController = appNavController,
mediaViewType = mediaViewType,
id = id,
backdropPath = backdropPath,
posterPath = posterPath,
title = "$name (${date.split("-")[0]})",
title = title,
additionalDetails = listOf(description),
rating = rating
)

View File

@@ -317,7 +317,7 @@ private fun MiscMovieDetails(
.fillMaxWidth()
.wrapContentHeight()
.padding(horizontal = 16.dp),
year = TmdbUtils.getMovieReleaseYear(movie),
year = movie.releaseDate?.getCalendarYear()?.toString() ?: "",
runtime = TmdbUtils.convertRuntimeToHoursMinutes(movie),
genres = movie.genres,
contentRating = contentRating
@@ -673,7 +673,7 @@ private fun SeasonCard(
lastSeason?.let {
ContentCard(
title = "Latest Season"
title = stringResource(R.string.latest_season_title)
) {
Row(
horizontalArrangement = Arrangement.spacedBy(12.dp),
@@ -696,7 +696,7 @@ private fun SeasonCard(
style = MaterialTheme.typography.titleMedium
)
Text(
text = "${it.airDate?.getCalendarYear()} | ${it.episodes.size} Episodes"
text = stringResource(id = R.string.season_ep_count, it.airDate?.getCalendarYear() ?: 0, it.episodes.size)
)
Text(
text = it.overview,
@@ -715,7 +715,7 @@ private fun SeasonCard(
}
) {
Text(
text = "See all seasons",
text = stringResource(id = R.string.see_all_seasons_text),
color = MaterialTheme.colorScheme.onSurfaceVariant,
fontSize = 14.sp,
modifier = Modifier.padding(4.dp)

View File

@@ -29,6 +29,7 @@ import com.owenlejeune.tvtime.R
import com.owenlejeune.tvtime.api.tmdb.api.v3.MoviesService
import com.owenlejeune.tvtime.api.tmdb.api.v3.TvService
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.*
import com.owenlejeune.tvtime.extensions.getCalendarYear
import com.owenlejeune.tvtime.extensions.lazyPagingItems
import com.owenlejeune.tvtime.ui.components.MediaResultCard
import com.owenlejeune.tvtime.ui.components.SelectableTextChip
@@ -400,7 +401,7 @@ private fun MovieSearchResultView(
backdropModel = { TmdbUtils.getFullBackdropPath(result.backdropPath) },
additionalDetails = {
listOf(
TmdbUtils.releaseYearFromData(result.releaseDate),
result.releaseDate?.getCalendarYear()?.toString() ?: "",
cast?.joinToString(separator = ", ") { it.name } ?: ""
)
}
@@ -429,7 +430,7 @@ private fun TvSearchResultView(
backdropModel = { TmdbUtils.getFullBackdropPath(result.backdropPath) },
additionalDetails = {
listOf(
"${TmdbUtils.releaseYearFromData(result.releaseDate)} ${context.getString(R.string.search_result_tv_series)}",
"${result.releaseDate?.getCalendarYear() ?: ""} ${context.getString(R.string.search_result_tv_series)}",
cast?.joinToString(separator = ", ") { it.name } ?: ""
)
}
@@ -445,7 +446,7 @@ private fun PeopleSearchResultView(
val additional = mostKnownFor?.let {
listOf(
"${mostKnownFor.title} (${TmdbUtils.releaseYearFromData(mostKnownFor.releaseDate)})"
"${mostKnownFor.title} (${mostKnownFor.releaseDate?.getCalendarYear()})"
)
} ?: emptyList()

View File

@@ -15,6 +15,7 @@ import com.owenlejeune.tvtime.api.tmdb.api.v3.model.Status
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.TmdbItem
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.TvContentRatings
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.Video
import com.owenlejeune.tvtime.extensions.getCalendarYear
import com.owenlejeune.tvtime.ui.viewmodel.ConfigurationViewModel
import java.text.SimpleDateFormat
import java.util.Date
@@ -93,32 +94,16 @@ object TmdbUtils {
}
}
fun getFullEpisodeStillPath(episode: Episode): String? {
return getFullEpisodeStillPath(episode.stillPath)
}
fun getMovieReleaseYear(movie: DetailedMovie): String {
return movie.releaseDate.split("-")[0]
}
fun getSeriesRun(series: DetailedTv): String {
val startYear = getTvStartYear(series)
val startYear = series.firstAirDate?.getCalendarYear() ?: ""
val endYear = if (series.status == Status.ACTIVE) {
getTvEndYear(series)
series.lastAirDate?.getCalendarYear() ?: ""
} else {
""
}
return "${startYear}-${endYear}"
}
fun getTvStartYear(series: DetailedTv): String {
return series.firstAirDate.split("-")[0]
}
fun getTvEndYear(series: DetailedTv): String {
return series.lastAirDate.split("-")[0]
}
fun convertRuntimeToHoursMinutes(movie: DetailedMovie): String {
movie.runtime?.let { runtime ->
return convertRuntimeToHoursAndMinutes(runtime)
@@ -197,12 +182,12 @@ object TmdbUtils {
return ""
}
fun formatDate(inDate: String): String {
val orig = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", java.util.Locale.US)
fun formatDate(inDate: Date?): String {
if (inDate == null) {
return ""
}
val formatter = SimpleDateFormat("yyyy-MM-dd HH:mm", java.util.Locale.US)
val date = orig.parse(inDate)//.replace("Z", "+0000"))
return formatter.format(date)
return formatter.format(inDate)
}
fun getAccountGravatarUrl(accountDetails: AccountDetails): String {
@@ -219,13 +204,6 @@ object TmdbUtils {
return IMAGE_BASE.plus(LOGO_SIZE).plus(path)
}
fun releaseYearFromData(releaseDate: String): String {
if (releaseDate.length >=4) {
return releaseDate.split("-").first { it.length == 4 }
}
return ""
}
fun formatRevenue(revenue: Long): String {
val decFormat = "%.1f"
val thousands = revenue.toFloat() / 1000f

View File

@@ -238,4 +238,7 @@
<string name="cast_tv_character_template">as %1$s (%2$d eps.)</string>
<string name="crew_template">… %1$s</string>
<string name="images_title">Images</string>
<string name="latest_season_title">Latest Season</string>
<string name="season_ep_count">%1$d | %2$d Episodes</string>
<string name="see_all_seasons_text">See all seasons</string>
</resources>