parent
10a29218b5
commit
cea1d0c608
|
@ -5,7 +5,7 @@ ext {
|
||||||
appName = 'Tachiyomi: HeavenManga'
|
appName = 'Tachiyomi: HeavenManga'
|
||||||
pkgNameSuffix = 'es.heavenmanga'
|
pkgNameSuffix = 'es.heavenmanga'
|
||||||
extClass = '.HeavenManga'
|
extClass = '.HeavenManga'
|
||||||
extVersionCode = 2
|
extVersionCode = 3
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 131 KiB |
|
@ -1,6 +1,5 @@
|
||||||
package eu.kanade.tachiyomi.extension.es.heavenmanga
|
package eu.kanade.tachiyomi.extension.es.heavenmanga
|
||||||
|
|
||||||
import android.util.Log
|
|
||||||
import eu.kanade.tachiyomi.network.GET
|
import eu.kanade.tachiyomi.network.GET
|
||||||
import eu.kanade.tachiyomi.network.asObservableSuccess
|
import eu.kanade.tachiyomi.network.asObservableSuccess
|
||||||
import eu.kanade.tachiyomi.source.model.*
|
import eu.kanade.tachiyomi.source.model.*
|
||||||
|
@ -32,13 +31,14 @@ class HeavenManga : ParsedHttpSource() {
|
||||||
.add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) Gecko/20100101 Firefox/60")
|
.add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) Gecko/20100101 Firefox/60")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun popularMangaSelector() = "li.ranking"
|
||||||
override fun popularMangaSelector() = ".top.clearfix .ranking"
|
|
||||||
|
|
||||||
override fun latestUpdatesSelector() = "#container .ultimos_epis .not"
|
override fun latestUpdatesSelector() = "#container .ultimos_epis .not"
|
||||||
|
|
||||||
override fun searchMangaSelector() = ".top.clearfix .cont_manga"
|
override fun searchMangaSelector() = ".top.clearfix .cont_manga"
|
||||||
|
|
||||||
private fun novelaFilterSelector() = ".lstsradd"
|
private fun novelaFilterSelector() = ".lstsradd"
|
||||||
|
|
||||||
private fun comicFilterSelector() = "section#related"
|
private fun comicFilterSelector() = "section#related"
|
||||||
|
|
||||||
override fun chapterListSelector() = "#mamain ul li"
|
override fun chapterListSelector() = "#mamain ul li"
|
||||||
|
@ -51,11 +51,37 @@ class HeavenManga : ParsedHttpSource() {
|
||||||
|
|
||||||
override fun searchMangaNextPageSelector() = "li:contains(Siguiente):not([id=inactive])"
|
override fun searchMangaNextPageSelector() = "li:contains(Siguiente):not([id=inactive])"
|
||||||
|
|
||||||
|
|
||||||
override fun popularMangaRequest(page: Int) = GET("$baseUrl/top/", headers)
|
override fun popularMangaRequest(page: Int) = GET("$baseUrl/top/", headers)
|
||||||
|
|
||||||
|
override fun popularMangaParse(response: Response): MangasPage {
|
||||||
|
val mangas = mutableListOf<SManga>()
|
||||||
|
val document = response.asJsoup()
|
||||||
|
|
||||||
|
document.select(popularMangaSelector()).map{ mangas.add(popularMangaFromElement(it)) }
|
||||||
|
|
||||||
|
return MangasPage(mangas, false)
|
||||||
|
}
|
||||||
|
|
||||||
override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/", headers)
|
override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/", headers)
|
||||||
|
|
||||||
|
override fun latestUpdatesParse(response: Response): MangasPage {
|
||||||
|
val mangas = mutableListOf<SManga>()
|
||||||
|
val document = response.asJsoup()
|
||||||
|
val checkList = mutableListOf<String>()
|
||||||
|
|
||||||
|
// Fewer duplicates makes for a better user experience and fewer Requests to make
|
||||||
|
document.select(latestUpdatesSelector()).forEach{ e ->
|
||||||
|
e.select("a").attr("href").substringBeforeLast("-").let { urlPart ->
|
||||||
|
if (urlPart !in checkList) {
|
||||||
|
mangas.add(latestUpdatesFromElement(e))
|
||||||
|
checkList.add(urlPart)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return MangasPage(mangas, false)
|
||||||
|
}
|
||||||
|
|
||||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||||
val search_url = "$baseUrl/buscar/$query.html"
|
val search_url = "$baseUrl/buscar/$query.html"
|
||||||
|
|
||||||
|
@ -96,17 +122,14 @@ class HeavenManga : ParsedHttpSource() {
|
||||||
// get contents of a url
|
// get contents of a url
|
||||||
private fun getUrlContents(url: String): Document = client.newCall(GET(url, headers)).execute().asJsoup()
|
private fun getUrlContents(url: String): Document = client.newCall(GET(url, headers)).execute().asJsoup()
|
||||||
|
|
||||||
|
override fun popularMangaFromElement(element: Element): SManga {
|
||||||
|
val manga = SManga.create()
|
||||||
|
|
||||||
override fun popularMangaFromElement(element: Element) = SManga.create().apply {
|
manga.setUrlWithoutDomain(element.select("a").attr("href"))
|
||||||
element.select("a").let {
|
manga.title = element.select("div.tit").first().ownText()
|
||||||
setUrlWithoutDomain(it.attr("href"))
|
manga.thumbnail_url = element.select("img").attr("src")
|
||||||
val allElements: Elements = it.select(".box .tit")
|
|
||||||
//get all elements under .box .tit
|
return manga
|
||||||
for (e: Element in allElements) {
|
|
||||||
title = e.childNode(0).toString() //the title
|
|
||||||
}
|
|
||||||
thumbnail_url = it.select(".box img").attr("src")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun latestUpdatesFromElement(element: Element) = SManga.create().apply {
|
override fun latestUpdatesFromElement(element: Element) = SManga.create().apply {
|
||||||
|
@ -152,7 +175,7 @@ class HeavenManga : ParsedHttpSource() {
|
||||||
|
|
||||||
override fun searchMangaParse(response: Response): MangasPage {
|
override fun searchMangaParse(response: Response): MangasPage {
|
||||||
val document = response.asJsoup()
|
val document = response.asJsoup()
|
||||||
var el: String
|
val el: String
|
||||||
|
|
||||||
if(document.select(novelaFilterSelector()).first() != null) {
|
if(document.select(novelaFilterSelector()).first() != null) {
|
||||||
el = novelaFilterSelector()
|
el = novelaFilterSelector()
|
||||||
|
@ -172,6 +195,7 @@ class HeavenManga : ParsedHttpSource() {
|
||||||
|
|
||||||
return MangasPage(mangas, hasNextPage)
|
return MangasPage(mangas, hasNextPage)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun mangaDetailsParse(document: Document) = SManga.create().apply {
|
override fun mangaDetailsParse(document: Document) = SManga.create().apply {
|
||||||
document.select(".left.home").let {
|
document.select(".left.home").let {
|
||||||
val genres = it.select(".sinopsis a")?.map {
|
val genres = it.select(".sinopsis a")?.map {
|
||||||
|
@ -200,17 +224,16 @@ class HeavenManga : ParsedHttpSource() {
|
||||||
return chapters
|
return chapters
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun imageUrlParse(document: Document) = ""
|
||||||
override fun imageUrlParse(document: Document) = document.select("#p").attr("src").toString()
|
|
||||||
|
|
||||||
override fun pageListParse(document: Document): List<Page> {
|
override fun pageListParse(document: Document): List<Page> {
|
||||||
val pages = mutableListOf<Page>()
|
val pages = mutableListOf<Page>()
|
||||||
val leerUrl = document.select(chapterPageSelector()).attr("href")
|
val leerUrl = document.select(chapterPageSelector()).attr("href")
|
||||||
val urlElement = getUrlContents(leerUrl)
|
val urlElement = getUrlContents(leerUrl)
|
||||||
urlElement.body().select("option").forEach {
|
|
||||||
pages.add(Page(pages.size, it.attr("value")))
|
urlElement.select("script:containsData(pUrl)").first().data()
|
||||||
}
|
.substringAfter("pUrl=[").substringBefore("\"},];").split("\"},")
|
||||||
pages.getOrNull(0)?.imageUrl = imageUrlParse(urlElement)
|
.forEach{ pages.add(Page(pages.size, "", it.substringAfterLast("\""))) }
|
||||||
|
|
||||||
return pages
|
return pages
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue