diff --git a/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt b/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt index 874e0af5..2a89de70 100644 --- a/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt +++ b/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt @@ -72,9 +72,9 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi @SuppressLint("SetTextI18n", "ClickableViewAccessibility") override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) LangSet.setLocale(this) -ThemeManager(this).applyTheme() + ThemeManager(this).applyTheme() + super.onCreate(savedInstanceState) binding = ActivityMediaBinding.inflate(layoutInflater) setContentView(binding.root) screenWidth = resources.displayMetrics.widthPixels.toFloat() diff --git a/app/src/main/java/ani/dantotsu/media/anime/AnimeNameAdapter.kt b/app/src/main/java/ani/dantotsu/media/anime/AnimeNameAdapter.kt new file mode 100644 index 00000000..17d20bc6 --- /dev/null +++ b/app/src/main/java/ani/dantotsu/media/anime/AnimeNameAdapter.kt @@ -0,0 +1,20 @@ +package ani.dantotsu.media.anime + +import java.util.regex.Matcher +import java.util.regex.Pattern + +class AnimeNameAdapter { + companion object { + fun findSeasonNumber(text: String): Int? { + val seasonRegex = "(season|s)[\\s:.\\-]*(\\d+)" + val seasonPattern: Pattern = Pattern.compile(seasonRegex, Pattern.CASE_INSENSITIVE) + val seasonMatcher: Matcher = seasonPattern.matcher(text) + + return if (seasonMatcher.find()) { + seasonMatcher.group(2)?.toInt() + } else { + null + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/ani/dantotsu/parsers/AniyomiAdapter.kt b/app/src/main/java/ani/dantotsu/parsers/AniyomiAdapter.kt index c5c9a3e4..7078595d 100644 --- a/app/src/main/java/ani/dantotsu/parsers/AniyomiAdapter.kt +++ b/app/src/main/java/ani/dantotsu/parsers/AniyomiAdapter.kt @@ -20,6 +20,7 @@ import ani.dantotsu.currContext import ani.dantotsu.download.manga.MangaDownloaderService import ani.dantotsu.download.manga.ServiceDataSingleton import ani.dantotsu.logger +import ani.dantotsu.media.anime.AnimeNameAdapter import ani.dantotsu.media.manga.ImageData import ani.dantotsu.media.manga.MangaCache import com.google.firebase.crashlytics.FirebaseCrashlytics @@ -115,12 +116,18 @@ class DynamicAnimeParser(extension: AnimeExtension.Installed) : AnimeParser() { it } } else { - // Sort by the episode_number field - res.sortedBy { it.episode_number } + var episodeCounter = 1f + // Group by season, sort within each season, and then renumber while keeping episode number 0 as is + val seasonGroups = res.groupBy { AnimeNameAdapter.findSeasonNumber(it.name) ?: 0 } + seasonGroups.keys.sorted().flatMap { season -> + seasonGroups[season]?.sortedBy { it.episode_number }?.map { episode -> + if (episode.episode_number != 0f) { // Skip renumbering for episode number 0 + episode.episode_number = episodeCounter++ + } + episode + } ?: emptyList() + } } - - // Transform SEpisode objects to Episode objects - return sortedEpisodes.map { SEpisodeToEpisode(it) } } catch (e: Exception) { println("Exception: $e") diff --git a/app/src/main/java/ani/dantotsu/themes/ThemeManager.kt b/app/src/main/java/ani/dantotsu/themes/ThemeManager.kt index d2b8315a..e771b54c 100644 --- a/app/src/main/java/ani/dantotsu/themes/ThemeManager.kt +++ b/app/src/main/java/ani/dantotsu/themes/ThemeManager.kt @@ -17,7 +17,6 @@ class ThemeManager(private val context: Context) { val options = DynamicColorsOptions.Builder() .setThemeOverlay(R.style.AppTheme_Amoled) .build() - //need activity from context val activity = context as Activity DynamicColors.applyToActivityIfAvailable(activity, options) } else {