Fixed name and search (#1257)

Renascans fix and update
This commit is contained in:
Mike 2019-07-03 23:24:45 -04:00 committed by Eugene
parent 2af1f635b7
commit 4eb688c8b9
2 changed files with 19 additions and 46 deletions

View File

@ -5,8 +5,13 @@ ext {
appName = 'Tachiyomi: Renaissance Scans' appName = 'Tachiyomi: Renaissance Scans'
pkgNameSuffix = 'en.renascans' pkgNameSuffix = 'en.renascans'
extClass = '.Renascans' extClass = '.Renascans'
extVersionCode = 1 extVersionCode = 2
libVersion = '1.2' libVersion = '1.2'
} }
dependencies {
compileOnly 'com.google.code.gson:gson:2.8.2'
compileOnly 'com.github.salomonbrys.kotson:kotson:2.5.0'
}
apply from: "$rootDir/common.gradle" apply from: "$rootDir/common.gradle"

View File

@ -3,19 +3,20 @@ package eu.kanade.tachiyomi.extension.en.renascans
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.model.* import eu.kanade.tachiyomi.source.model.*
import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import okhttp3.Request import okhttp3.Request
import okhttp3.Response import okhttp3.Response
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import org.jsoup.select.Elements
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
import com.github.salomonbrys.kotson.*
import com.google.gson.Gson
import com.google.gson.JsonObject
class Renascans : ParsedHttpSource() { class Renascans : ParsedHttpSource() {
override val name = "Mangasail" override val name = "Renascence Scans (Renascans)"
override val baseUrl = "https://renascans.com" override val baseUrl = "https://renascans.com"
@ -61,62 +62,29 @@ class Renascans : ParsedHttpSource() {
override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector() override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector()
// source returns JSON data, doing a local search instead
// need some variables accessible by multiple search functions
private var searchQuery = ""
private var searchPage = 1
private var nextPageSelectorElement = Elements()
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
if (page == 1) searchPage = 1 return GET("$baseUrl/search?query=$query")
searchQuery = query.toLowerCase()
return GET("$baseUrl/manga-list?page=$page")
} }
override fun searchMangaParse(response: Response): MangasPage { override fun searchMangaParse(response: Response): MangasPage {
val searchMatches = mutableListOf<SManga>() val searchMatches = mutableListOf<SManga>()
val document = response.asJsoup()
searchMatches.addAll(getMatchesFrom(document))
/* call another function if there's more pages to search val array = Gson().fromJson<JsonObject>(response.body()!!.string())["suggestions"].asJsonArray
not doing it this way can lead to a false "no results found" for (i in 0 until array.size()) {
if no matches are found on the first page but there are matches val manga = SManga.create()
on subsequent pages */ manga.title = array[i]["value"].asString
nextPageSelectorElement = document.select(searchMangaNextPageSelector()) manga.url = "/manga/" + array[i]["data"].asString
while (nextPageSelectorElement.hasText()) { manga.thumbnail_url = "$baseUrl/uploads/manga/" + array[i]["data"].asString + "/cover/cover_250x350"
searchMatches.addAll(searchMorePages()) searchMatches.add(manga)
} }
return MangasPage(searchMatches, false) return MangasPage(searchMatches, false)
} }
// search the given document for matches
private fun getMatchesFrom(document: Document): MutableList<SManga> {
val searchMatches = mutableListOf<SManga>()
document.select(searchMangaSelector()).forEach {
if (it.text().toLowerCase().contains(searchQuery)) {
searchMatches.add(searchMangaFromElement(it))
}
}
return searchMatches
}
// search additional pages if called
private fun searchMorePages(): MutableList<SManga> {
searchPage++
val nextPage = client.newCall(GET("$baseUrl/manga-list?page=$searchPage", headers)).execute().asJsoup()
val searchMatches = mutableListOf<SManga>()
searchMatches.addAll(getMatchesFrom(nextPage))
nextPageSelectorElement = nextPage.select(searchMangaNextPageSelector())
return searchMatches
}
override fun searchMangaSelector() = popularMangaSelector() override fun searchMangaSelector() = popularMangaSelector()
override fun searchMangaFromElement(element: Element) = popularMangaFromElement(element) override fun searchMangaFromElement(element: Element) = popularMangaFromElement(element)
override fun searchMangaNextPageSelector() = popularMangaNextPageSelector() override fun searchMangaNextPageSelector() = "None"
override fun mangaDetailsParse(document: Document): SManga { override fun mangaDetailsParse(document: Document): SManga {
val infoElement = document.select("div.row") val infoElement = document.select("div.row")