fix for decimal episodes

This commit is contained in:
Finnley Somdahl 2023-12-27 07:07:10 -06:00
parent ebabff4667
commit bf908c5e37
2 changed files with 24 additions and 2 deletions

View file

@ -16,5 +16,17 @@ class AnimeNameAdapter {
null null
} }
} }
fun findEpisodeNumber(text: String): Float? {
val episodeRegex = "(episode|ep|e)[\\s:.\\-]*([\\d]+\\.?[\\d]*)"
val episodePattern: Pattern = Pattern.compile(episodeRegex, Pattern.CASE_INSENSITIVE)
val episodeMatcher: Matcher = episodePattern.matcher(text)
return if (episodeMatcher.find()) {
episodeMatcher.group(2)?.toFloat()
} else {
null
}
}
} }
} }

View file

@ -112,7 +112,13 @@ class DynamicAnimeParser(extension: AnimeExtension.Installed) : AnimeParser() {
seasonGroups.keys.sorted().flatMap { season -> seasonGroups.keys.sorted().flatMap { season ->
seasonGroups[season]?.sortedBy { it.episode_number }?.map { episode -> seasonGroups[season]?.sortedBy { it.episode_number }?.map { episode ->
if (episode.episode_number != 0f) { // Skip renumbering for episode number 0 if (episode.episode_number != 0f) { // Skip renumbering for episode number 0
episode.episode_number = episodeCounter++ val potentialNumber = AnimeNameAdapter.findEpisodeNumber(episode.name)
if (potentialNumber != null) {
episode.episode_number = potentialNumber
} else {
episode.episode_number = episodeCounter
}
episodeCounter++
} }
episode episode
} ?: emptyList() } ?: emptyList()
@ -202,7 +208,11 @@ class DynamicAnimeParser(extension: AnimeExtension.Installed) : AnimeParser() {
} }
return Episode( return Episode(
if (episodeNumberInt.toInt() != -1) { if (episodeNumberInt.toInt() != -1) {
episodeNumberInt.toString() if (sEpisode.episode_number % 1 == 0f) {
episodeNumberInt.toInt().toString()
} else {
sEpisode.episode_number.toString()
}
} else { } else {
sEpisode.name sEpisode.name
}, },