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