regex fix

This commit is contained in:
rebelonion 2024-01-18 01:55:47 -06:00
parent 39fc508cfe
commit 5bd8f1a3c7
2 changed files with 14 additions and 14 deletions

View file

@ -30,7 +30,15 @@ class AnimeNameAdapter {
if (episodeMatcher.group(2) != null) { if (episodeMatcher.group(2) != null) {
episodeMatcher.group(2)?.toFloat() episodeMatcher.group(2)?.toFloat()
} else { } else {
episodeMatcher.group(4)?.toFloat() val failedEpisodeNumberPattern: Pattern =
Pattern.compile(failedEpisodeNumberRegex, Pattern.CASE_INSENSITIVE)
val failedEpisodeNumberMatcher: Matcher =
failedEpisodeNumberPattern.matcher(text)
if (failedEpisodeNumberMatcher.find()) {
failedEpisodeNumberMatcher.group(1)?.toFloat()
} else {
null
}
} }
} else { } else {
null null
@ -39,18 +47,9 @@ class AnimeNameAdapter {
fun removeEpisodeNumber(text: String): String { fun removeEpisodeNumber(text: String): String {
val regexPattern = Regex(episodeRegex, RegexOption.IGNORE_CASE) val regexPattern = Regex(episodeRegex, RegexOption.IGNORE_CASE)
val removedNumber = text.replace(regexPattern, "").ifEmpty { return text.replace(regexPattern, "").ifEmpty {
text text
} }
return if (removedNumber.equals(text, true)) {
val failedEpisodeNumberPattern: Regex =
Regex(failedEpisodeNumberRegex, RegexOption.IGNORE_CASE)
failedEpisodeNumberPattern.replace(removedNumber) { mr ->
mr.value.replaceFirst(mr.groupValues[1], "")
}.ifEmpty { removedNumber }
} else {
removedNumber
}
} }
fun removeEpisodeNumberCompletely(text: String): String { fun removeEpisodeNumberCompletely(text: String): String {

View file

@ -93,8 +93,8 @@ class DynamicAnimeParser(extension: AnimeExtension.Installed) : AnimeParser() {
val sortedEpisodes = if (res[0].episode_number == -1f) { val sortedEpisodes = if (res[0].episode_number == -1f) {
// Find the number in the string and sort by that number // Find the number in the string and sort by that number
val sortedByStringNumber = res.sortedBy { val sortedByStringNumber = res.sortedBy {
val matchResult = "\\d+".toRegex().find(it.name) val matchResult = AnimeNameAdapter.findEpisodeNumber(it.name)
val number = matchResult?.value?.toFloat() ?: Float.MAX_VALUE val number = matchResult ?: Float.MAX_VALUE
it.episode_number = number // Store the found number in episode_number it.episode_number = number // Store the found number in episode_number
number number
} }
@ -113,7 +113,8 @@ class DynamicAnimeParser(extension: AnimeExtension.Installed) : AnimeParser() {
// Group by season, sort within each season, and then renumber while keeping episode number 0 as is // Group by season, sort within each season, and then renumber while keeping episode number 0 as is
val seasonGroups = val seasonGroups =
res.groupBy { AnimeNameAdapter.findSeasonNumber(it.name) ?: 0 } res.groupBy { AnimeNameAdapter.findSeasonNumber(it.name) ?: 0 }
seasonGroups.keys.sorted().flatMap { season -> seasonGroups.keys.sortedBy { it.toInt() }
.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
val potentialNumber = val potentialNumber =