fix: reduce episode merge complexity
This commit is contained in:
@@ -70,20 +70,7 @@ func mergeEpisodes(jikanEpisodes []jikan.Episode, availability domain.EpisodeAva
|
|||||||
mergeEpisode(&byNumber, number, func(item *episodePartial) {})
|
mergeEpisode(&byNumber, number, func(item *episodePartial) {})
|
||||||
}
|
}
|
||||||
|
|
||||||
for i, ep := range jikanEpisodes {
|
mergeJikanEpisodes(&byNumber, jikanEpisodes, providerNumbers, providerBacked, expectedCount)
|
||||||
if exceedsExpectedCount(i+1, expectedCount) {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
number, ok := jikanEpisodeNumber(ep, i)
|
|
||||||
if !ok || exceedsExpectedCount(number, expectedCount) || (providerBacked && !providerNumbers[number]) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
mergeEpisode(&byNumber, number, func(item *episodePartial) {
|
|
||||||
item.title = strings.TrimSpace(ep.Title)
|
|
||||||
item.filler = ep.Filler
|
|
||||||
item.recap = ep.Recap
|
|
||||||
})
|
|
||||||
}
|
|
||||||
mergeAvailability(&byNumber, availability.Sub, expectedCount, func(item *episodePartial) { item.sub = true })
|
mergeAvailability(&byNumber, availability.Sub, expectedCount, func(item *episodePartial) { item.sub = true })
|
||||||
mergeAvailability(&byNumber, availability.Dub, expectedCount, func(item *episodePartial) { item.dub = true })
|
mergeAvailability(&byNumber, availability.Dub, expectedCount, func(item *episodePartial) { item.dub = true })
|
||||||
|
|
||||||
@@ -113,6 +100,23 @@ func mergeEpisodes(jikanEpisodes []jikan.Episode, availability domain.EpisodeAva
|
|||||||
return episodes
|
return episodes
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func mergeJikanEpisodes(byNumber *map[int]episodePartial, episodes []jikan.Episode, providerNumbers map[int]bool, providerBacked bool, expectedCount int) {
|
||||||
|
for i, ep := range episodes {
|
||||||
|
if exceedsExpectedCount(i+1, expectedCount) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
number, ok := jikanEpisodeNumber(ep, i)
|
||||||
|
if !ok || exceedsExpectedCount(number, expectedCount) || (providerBacked && !providerNumbers[number]) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
mergeEpisode(byNumber, number, func(item *episodePartial) {
|
||||||
|
item.title = strings.TrimSpace(ep.Title)
|
||||||
|
item.filler = ep.Filler
|
||||||
|
item.recap = ep.Recap
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func availableEpisodeNumbers(availability domain.EpisodeAvailability, expectedCount int) map[int]bool {
|
func availableEpisodeNumbers(availability domain.EpisodeAvailability, expectedCount int) map[int]bool {
|
||||||
numbers := map[int]bool{}
|
numbers := map[int]bool{}
|
||||||
for _, number := range availability.Sub {
|
for _, number := range availability.Sub {
|
||||||
|
|||||||
Reference in New Issue
Block a user