regex fix
This commit is contained in:
parent
39fc508cfe
commit
5bd8f1a3c7
2 changed files with 14 additions and 14 deletions
|
@ -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 {
|
||||||
|
|
|
@ -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 =
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue