@@ -133,14 +133,24 @@ class AnimeVerseProvider : MainAPI() {
133133 return response.items
134134 }
135135
136+ private fun getPosterUrl (seriesId : String ): String {
137+ val url = " https://misc.nekkoto.app/poster_image/$seriesId .jpg"
138+ val b64 = base64UrlEncode(url.toByteArray(Charsets .UTF_8 ))
139+ return " $mainUrl /i/$b64 "
140+ }
141+
136142 override suspend fun search (query : String ): List <SearchResponse > {
137143 val items = getCatalog()
138- val lowerQuery = query.lowercase()
139-
140- return items.filter {
141- it.title.lowercase().contains(lowerQuery) ||
142- (it.alternativeTitle?.lowercase()?.contains(lowerQuery) ? : false ) ||
143- (it.searchTitle?.lowercase()?.contains(lowerQuery) ? : false )
144+ val queryWords = query.lowercase().split(Regex (" \\ s+" )).filter { it.isNotEmpty() }
145+ if (queryWords.isEmpty()) return emptyList()
146+
147+ return items.filter { item ->
148+ val title = item.title.lowercase()
149+ val altTitle = item.alternativeTitle?.lowercase() ? : " "
150+ val searchTitle = item.searchTitle?.lowercase() ? : " "
151+ queryWords.all { word ->
152+ title.contains(word) || altTitle.contains(word) || searchTitle.contains(word)
153+ }
144154 }.map { item ->
145155 val isDub = item.slug.contains(" -dub" , ignoreCase = true ) ||
146156 item.title.contains(" (dub)" , ignoreCase = true )
@@ -178,8 +188,8 @@ class AnimeVerseProvider : MainAPI() {
178188 val jsonText = signedGet(" /api/v1/recent" )
179189 val items = mapper.readValue(jsonText, RecentResponse ::class .java).items
180190 items.map { item ->
181- newAnimeSearchResponse(item.seriesTitle, item.seriesSlug) {
182- this .posterUrl = if (item.thumb.startsWith( " /i/ " )) " $mainUrl${item.thumb} " else item.thumb
191+ newAnimeSearchResponse(" ${ item.seriesTitle} - Episode ${item.number} " , item.seriesSlug) {
192+ this .posterUrl = getPosterUrl (item.seriesId)
183193 }
184194 }
185195 }
0 commit comments