diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt index da900b0a..18e54d14 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt @@ -1977,42 +1977,42 @@ class ResultViewModel2 : ViewModel() { limit: Int = 0 ): List = coroutineScope { - var currentCount = 0 - return@coroutineScope loadResponse.trailers.amap { trailerData -> - try { - val links = arrayListOf() - val subs = arrayListOf() - if (!loadExtractor( - trailerData.extractorUrl, - trailerData.referer, - { subs.add(it) }, - { links.add(it) }) && trailerData.raw - ) { - arrayListOf( - ExtractorLink( - "", - "Trailer", + val returnlist = ArrayList() + loadResponse.trailers.windowed(limit, limit, true).takeWhile { list -> + list.amap { trailerData -> + try { + val links = arrayListOf() + val subs = arrayListOf() + if (!loadExtractor( trailerData.extractorUrl, - trailerData.referer ?: "", - Qualities.Unknown.value, - trailerData.extractorUrl.contains(".m3u8") - ) - ) to arrayListOf() - } else { - links to subs - }.also { (extractor, _) -> - if (extractor.isNotEmpty() && limit != 0) { - currentCount++ - if (currentCount >= limit) { - cancel() - } + trailerData.referer, + { subs.add(it) }, + { links.add(it) }) && trailerData.raw + ) { + arrayListOf( + ExtractorLink( + "", + "Trailer", + trailerData.extractorUrl, + trailerData.referer ?: "", + Qualities.Unknown.value, + trailerData.extractorUrl.contains(".m3u8") + ) + ) to arrayListOf() + } else { + links to subs } + } catch (e: Throwable) { + logError(e) + null } - } catch (e: Throwable) { - logError(e) - null + }.filterNotNull().map { (links, subs) -> ExtractedTrailerData(links, subs) }.let { + returnlist.addAll(it) } - }.filterNotNull().map { (links, subs) -> ExtractedTrailerData(links, subs) } + + returnlist.size < limit + } + return@coroutineScope returnlist }