parent
							
								
									10a29218b5
								
							
						
					
					
						commit
						cea1d0c608
					
				@ -5,7 +5,7 @@ ext {
 | 
			
		||||
    appName = 'Tachiyomi: HeavenManga'
 | 
			
		||||
    pkgNameSuffix = 'es.heavenmanga'
 | 
			
		||||
    extClass = '.HeavenManga'
 | 
			
		||||
    extVersionCode = 2
 | 
			
		||||
    extVersionCode = 3
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
import android.util.Log
 | 
			
		||||
import eu.kanade.tachiyomi.network.GET
 | 
			
		||||
import eu.kanade.tachiyomi.network.asObservableSuccess
 | 
			
		||||
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")
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    override fun popularMangaSelector() = ".top.clearfix .ranking"
 | 
			
		||||
    override fun popularMangaSelector() = "li.ranking"
 | 
			
		||||
 | 
			
		||||
    override fun latestUpdatesSelector() = "#container .ultimos_epis .not"
 | 
			
		||||
 | 
			
		||||
    override fun searchMangaSelector() = ".top.clearfix .cont_manga"
 | 
			
		||||
 | 
			
		||||
    private fun novelaFilterSelector() = ".lstsradd"
 | 
			
		||||
 | 
			
		||||
    private fun comicFilterSelector() = "section#related"
 | 
			
		||||
 | 
			
		||||
    override fun chapterListSelector() = "#mamain ul li"
 | 
			
		||||
@ -51,11 +51,37 @@ class HeavenManga : ParsedHttpSource() {
 | 
			
		||||
 | 
			
		||||
    override fun searchMangaNextPageSelector() = "li:contains(Siguiente):not([id=inactive])"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    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 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 {
 | 
			
		||||
        val search_url = "$baseUrl/buscar/$query.html"
 | 
			
		||||
 | 
			
		||||
@ -96,17 +122,14 @@ class HeavenManga : ParsedHttpSource() {
 | 
			
		||||
    // get contents of a url
 | 
			
		||||
    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 {
 | 
			
		||||
        element.select("a").let {
 | 
			
		||||
            setUrlWithoutDomain(it.attr("href"))
 | 
			
		||||
            val allElements: Elements = it.select(".box .tit")
 | 
			
		||||
            //get all elements under .box .tit
 | 
			
		||||
            for (e: Element in allElements) {
 | 
			
		||||
                title = e.childNode(0).toString() //the title
 | 
			
		||||
            }
 | 
			
		||||
            thumbnail_url = it.select(".box img").attr("src")
 | 
			
		||||
        }
 | 
			
		||||
        manga.setUrlWithoutDomain(element.select("a").attr("href"))
 | 
			
		||||
        manga.title = element.select("div.tit").first().ownText()
 | 
			
		||||
        manga.thumbnail_url = element.select("img").attr("src")
 | 
			
		||||
 | 
			
		||||
        return manga
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun latestUpdatesFromElement(element: Element) = SManga.create().apply {
 | 
			
		||||
@ -152,7 +175,7 @@ class HeavenManga : ParsedHttpSource() {
 | 
			
		||||
 | 
			
		||||
    override fun searchMangaParse(response: Response): MangasPage {
 | 
			
		||||
        val document = response.asJsoup()
 | 
			
		||||
        var el: String
 | 
			
		||||
        val el: String
 | 
			
		||||
 | 
			
		||||
        if(document.select(novelaFilterSelector()).first() != null) {
 | 
			
		||||
            el = novelaFilterSelector()
 | 
			
		||||
@ -172,6 +195,7 @@ class HeavenManga : ParsedHttpSource() {
 | 
			
		||||
 | 
			
		||||
        return MangasPage(mangas, hasNextPage)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun mangaDetailsParse(document: Document) =  SManga.create().apply {
 | 
			
		||||
        document.select(".left.home").let {
 | 
			
		||||
            val genres = it.select(".sinopsis a")?.map {
 | 
			
		||||
@ -200,17 +224,16 @@ class HeavenManga : ParsedHttpSource() {
 | 
			
		||||
        return chapters
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    override fun imageUrlParse(document: Document) = document.select("#p").attr("src").toString()
 | 
			
		||||
    override fun imageUrlParse(document: Document) = ""
 | 
			
		||||
 | 
			
		||||
    override fun pageListParse(document: Document): List<Page> {
 | 
			
		||||
        val pages = mutableListOf<Page>()
 | 
			
		||||
        val leerUrl = document.select(chapterPageSelector()).attr("href")
 | 
			
		||||
        val urlElement = getUrlContents(leerUrl)
 | 
			
		||||
        urlElement.body().select("option").forEach {
 | 
			
		||||
            pages.add(Page(pages.size, it.attr("value")))
 | 
			
		||||
        }
 | 
			
		||||
        pages.getOrNull(0)?.imageUrl = imageUrlParse(urlElement)
 | 
			
		||||
 | 
			
		||||
        urlElement.select("script:containsData(pUrl)").first().data()
 | 
			
		||||
            .substringAfter("pUrl=[").substringBefore("\"},];").split("\"},")
 | 
			
		||||
            .forEach{ pages.add(Page(pages.size, "", it.substringAfterLast("\""))) }
 | 
			
		||||
 | 
			
		||||
        return pages
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user