diff --git a/tvmon-app/app/src/main/java/com/example/tvmon/data/scraper/TvmonScraper.kt b/tvmon-app/app/src/main/java/com/example/tvmon/data/scraper/TvmonScraper.kt index 6d2dd03..dc55237 100644 --- a/tvmon-app/app/src/main/java/com/example/tvmon/data/scraper/TvmonScraper.kt +++ b/tvmon-app/app/src/main/java/com/example/tvmon/data/scraper/TvmonScraper.kt @@ -420,6 +420,8 @@ val episodes = mutableListOf() "a[href*='/$seriesId/'], a[href*='/${seriesId}/']" ) + var episodeIndex = 0 + for (link in allEpisodeLinks) { val href = link.attr("href") if (href.isBlank()) continue @@ -443,7 +445,12 @@ val episodes = mutableListOf() null } - val finalNumber = episodeTitle ?: episodeId + val finalNumber = if (!episodeTitle.isNullOrBlank()) { + episodeTitle + } else { + episodeIndex++.toString() + } + if (finalNumber in seenNumbers) continue seenNumbers.add(finalNumber) diff --git a/tvmon-app/app/src/main/java/com/example/tvmon/ui/main/MainFragment.kt b/tvmon-app/app/src/main/java/com/example/tvmon/ui/main/MainFragment.kt index fcebe05..25ed8a1 100644 --- a/tvmon-app/app/src/main/java/com/example/tvmon/ui/main/MainFragment.kt +++ b/tvmon-app/app/src/main/java/com/example/tvmon/ui/main/MainFragment.kt @@ -111,6 +111,7 @@ private fun handleRowSelection(position: Int) { private fun preloadNextPage(categoryKey: String, page: Int) { if (categoryLoading[categoryKey] == true) return + if (categoryPages[categoryKey] ?: 0 >= page) return categoryLoading[categoryKey] = true lifecycleScope.launch { @@ -322,16 +323,14 @@ private fun loadNextPage(categoryKey: String, page: Int) { } private fun checkAndPreload(categoryKey: String, position: Int) { - if (position >= PRELOAD_THRESHOLD) { - val currentPage = categoryPages[categoryKey] ?: 1 - val maxPage = categoryMaxPage[categoryKey] ?: 1 - val lastPreload = lastPreloadedPage[categoryKey] ?: 0 - - if (currentPage < maxPage && currentPage > lastPreload) { - Log.w(TAG, "checkAndPreload: $categoryKey at position $position, preloading page ${currentPage + 1}") - lastPreloadedPage[categoryKey] = currentPage - preloadNextPage(categoryKey, currentPage + 1) - } + val currentPage = categoryPages[categoryKey] ?: 1 + val maxPage = categoryMaxPage[categoryKey] ?: 1 + + val thresholdPage = (position / PRELOAD_THRESHOLD) + 1 + + if (thresholdPage > currentPage && thresholdPage <= maxPage) { + Log.w(TAG, "checkAndPreload: $categoryKey at position $position, preloading page $thresholdPage") + preloadNextPage(categoryKey, thresholdPage) } } }