diff --git a/app/src/main/java/org/mosad/teapod/parser/crunchyroll/Crunchyroll.kt b/app/src/main/java/org/mosad/teapod/parser/crunchyroll/Crunchyroll.kt index aae91c1..08464ba 100644 --- a/app/src/main/java/org/mosad/teapod/parser/crunchyroll/Crunchyroll.kt +++ b/app/src/main/java/org/mosad/teapod/parser/crunchyroll/Crunchyroll.kt @@ -34,7 +34,6 @@ import io.ktor.http.* import io.ktor.serialization.* import io.ktor.serialization.kotlinx.json.* import kotlinx.coroutines.* -import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.buildJsonObject @@ -261,6 +260,8 @@ object Crunchyroll { /** * Browse the media available on crunchyroll. * + * TODO migrate to v2 + * * @param sortBy * @param n Number of items to return, defaults to 10 * @@ -352,22 +353,22 @@ object Crunchyroll { * Note: episode objects are currently not supported * * @param objects The object IDs as list of Strings + * @param ratings the user rating of the object * @return A **[Collection]** of Panels */ - suspend fun objects(objects: List): Collection { - val episodesEndpoint = "/cms/v2/DE/M3/crunchyroll/objects/${objects.joinToString(",")}" + suspend fun objects(objects: List, ratings: Boolean = false): Collection2 { + val episodesEndpoint = "/content/v2/cms/objects/${objects.joinToString(",")}" val parameters = listOf( - "locale" to Preferences.preferredSubtitleLocale.toLanguageTag(), - "Signature" to signature, - "Policy" to policy, - "Key-Pair-Id" to keyPairID + "ratings" to ratings, + "preferred_audio_language" to Preferences.preferredAudioLocale.toLanguageTag(), + "locale" to Preferences.preferredSubtitleLocale.toLanguageTag() ) return try { requestGet(episodesEndpoint, parameters) } catch (ex: Exception) { Log.e(TAG, "Exception in objects().", ex) - NoneCollection + NoneCollection2 } } @@ -658,7 +659,7 @@ object Crunchyroll { * @param n Number of items to return, defaults to 20. * @return A **[Collection]** containing up to n **[Item]**. */ - suspend fun watchlist(n: Int = 20): Collection { + suspend fun watchlist(n: Int = 20): Collection2 { val watchlistEndpoint = "/content/v2/discover/$accountID/watchlist" val parameters = listOf( "locale" to Preferences.preferredSubtitleLocale.toLanguageTag(), 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 cae9899..28f6314 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 @@ -222,6 +222,7 @@ data class EpisodeMetadata( ) val NoneCollection = Collection(0, emptyList()) +val NoneCollection2 = Collection2(0, emptyList()) val NoneSearchResult = SearchResult(0, emptyList()) val NoneBrowseResult = BrowseResult(0, emptyList()) val NoneSimilarToResult = SimilarToResult(0, emptyList()) diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/main/viewmodel/HomeViewModel.kt b/app/src/main/java/org/mosad/teapod/ui/activity/main/viewmodel/HomeViewModel.kt index 4c073b4..3bfbce0 100644 --- a/app/src/main/java/org/mosad/teapod/ui/activity/main/viewmodel/HomeViewModel.kt +++ b/app/src/main/java/org/mosad/teapod/ui/activity/main/viewmodel/HomeViewModel.kt @@ -67,7 +67,7 @@ class HomeViewModel : ViewModel() { try { // run the loading in parallel to speed up the process val upNextJob = viewModelScope.async { Crunchyroll.upNextAccount().data } - val watchlistJob = viewModelScope.async { Crunchyroll.watchlist(WATCHLIST_LENGTH).items } + val watchlistJob = viewModelScope.async { Crunchyroll.watchlist(WATCHLIST_LENGTH).data } val recommendationsJob = viewModelScope.async { Crunchyroll.recommendations(20).items } @@ -114,7 +114,7 @@ class HomeViewModel : ViewModel() { } // update the watchlist after a item has been added/removed - val watchlistItems = Crunchyroll.watchlist(WATCHLIST_LENGTH).items + val watchlistItems = Crunchyroll.watchlist(WATCHLIST_LENGTH).data currentUiState.copy( watchlistItems = watchlistItems, diff --git a/app/src/main/java/org/mosad/teapod/util/Utils.kt b/app/src/main/java/org/mosad/teapod/util/Utils.kt index ae2f634..7c7b884 100644 --- a/app/src/main/java/org/mosad/teapod/util/Utils.kt +++ b/app/src/main/java/org/mosad/teapod/util/Utils.kt @@ -42,6 +42,12 @@ fun Collection.toItemMediaList(): List { } } +fun Collection2.toItemMediaList(): List { + return this.data.map { + ItemMedia(it.id, it.title, it.images.poster_wide[0][0].source) + } +} + @JvmName("toItemMediaListItem") fun List.toItemMediaList(): List { return this.map {