mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
Fix episode removal in simkl (#555)
This commit is contained in:
parent
4d98690adb
commit
4e01d327c6
1 changed files with 47 additions and 28 deletions
|
@ -60,8 +60,8 @@ class SimklApi(index: Int) : AccountManager(index), SyncAPI {
|
|||
private var lastScoreTime = -1L
|
||||
|
||||
companion object {
|
||||
private const val clientId = BuildConfig.SIMKL_CLIENT_ID
|
||||
private const val clientSecret = BuildConfig.SIMKL_CLIENT_SECRET
|
||||
private const val clientId: String = BuildConfig.SIMKL_CLIENT_ID
|
||||
private const val clientSecret: String = BuildConfig.SIMKL_CLIENT_SECRET
|
||||
private var lastLoginState = ""
|
||||
|
||||
const val SIMKL_TOKEN_KEY: String = "simkl_token"
|
||||
|
@ -498,6 +498,9 @@ class SimklApi(index: Int) : AccountManager(index), SyncAPI {
|
|||
val episodes: Array<EpisodeMetadata>?,
|
||||
override var isFavorite: Boolean? = null,
|
||||
override var maxEpisodes: Int? = null,
|
||||
/** Save seen episodes separately to know the change from old to new.
|
||||
* Required to remove seen episodes if count decreases */
|
||||
val oldEpisodes: Int,
|
||||
) : SyncAPI.AbstractSyncStatus()
|
||||
|
||||
override suspend fun getStatus(id: String): SyncAPI.AbstractSyncStatus? {
|
||||
|
@ -521,7 +524,8 @@ class SimklApi(index: Int) : AccountManager(index), SyncAPI {
|
|||
score = foundItem.user_rating,
|
||||
watchedEpisodes = foundItem.watched_episodes_count,
|
||||
maxEpisodes = foundItem.total_episodes_count,
|
||||
episodes = episodes
|
||||
episodes = episodes,
|
||||
oldEpisodes = foundItem.watched_episodes_count ?: 0,
|
||||
)
|
||||
} else {
|
||||
return if (searchResult != null) {
|
||||
|
@ -530,7 +534,8 @@ class SimklApi(index: Int) : AccountManager(index), SyncAPI {
|
|||
score = 0,
|
||||
watchedEpisodes = 0,
|
||||
maxEpisodes = if (searchResult.type == "movie") 0 else null,
|
||||
episodes = episodes
|
||||
episodes = episodes,
|
||||
oldEpisodes = 0,
|
||||
)
|
||||
} else {
|
||||
null
|
||||
|
@ -604,17 +609,18 @@ class SimklApi(index: Int) : AccountManager(index), SyncAPI {
|
|||
SimklListStatusType.ReWatching.value
|
||||
).contains(status.status)
|
||||
) {
|
||||
val cutEpisodes = simklStatus.episodes.take(watchedEpisodes)
|
||||
|
||||
val (seasons, episodes) = if (cutEpisodes.any { it.season != null }) {
|
||||
EpisodeMetadata.convertToSeasons(cutEpisodes) to null
|
||||
suspend fun postEpisodes(
|
||||
url: String,
|
||||
rawEpisodes: List<EpisodeMetadata>
|
||||
): Boolean {
|
||||
val (seasons, episodes) = if (rawEpisodes.any { it.season != null }) {
|
||||
EpisodeMetadata.convertToSeasons(rawEpisodes) to null
|
||||
} else {
|
||||
null to EpisodeMetadata.convertToEpisodes(cutEpisodes)
|
||||
null to EpisodeMetadata.convertToEpisodes(rawEpisodes)
|
||||
}
|
||||
|
||||
debugPrint { "Synced history for ${status.watchedEpisodes} given size of ${simklStatus.episodes.size}: seasons=${seasons?.toList()}, episodes=${episodes?.toList()}" }
|
||||
val episodeResponse = app.post(
|
||||
"$mainUrl/sync/history",
|
||||
debugPrint { "Synced history using $url: seasons=${seasons?.toList()}, episodes=${episodes?.toList()}" }
|
||||
return app.post(
|
||||
url,
|
||||
json = StatusRequest(
|
||||
shows = listOf(
|
||||
HistoryMediaObject(
|
||||
|
@ -628,8 +634,21 @@ class SimklApi(index: Int) : AccountManager(index), SyncAPI {
|
|||
movies = emptyList()
|
||||
),
|
||||
interceptor = interceptor
|
||||
)
|
||||
episodeResponse.isSuccessful
|
||||
).isSuccessful
|
||||
}
|
||||
|
||||
// If episodes decrease: remove all episodes beyond watched episodes.
|
||||
val removeResponse = if (simklStatus.oldEpisodes > watchedEpisodes) {
|
||||
val removeEpisodes = simklStatus.episodes
|
||||
.drop(watchedEpisodes)
|
||||
postEpisodes("$mainUrl/sync/history/remove", removeEpisodes)
|
||||
} else {
|
||||
true
|
||||
}
|
||||
val cutEpisodes = simklStatus.episodes.take(watchedEpisodes)
|
||||
val addResponse = postEpisodes("$mainUrl/sync/history/", cutEpisodes)
|
||||
|
||||
removeResponse && addResponse
|
||||
} else true
|
||||
|
||||
val newStatus =
|
||||
|
|
Loading…
Reference in a new issue