diff --git a/src/es/mahnwalatino/build.gradle b/src/es/mahnwalatino/build.gradle index 4329e7c3b..d9b289cfd 100644 --- a/src/es/mahnwalatino/build.gradle +++ b/src/es/mahnwalatino/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Manhwa-Latino' pkgNameSuffix = 'es.manhwalatino' extClass = '.ManhwaLatino' - extVersionCode = 19 + extVersionCode = 20 isNsfw = true } diff --git a/src/es/mahnwalatino/src/eu/kanade/tachiyomi/extension/es/manhwalatino/MLConstants.kt b/src/es/mahnwalatino/src/eu/kanade/tachiyomi/extension/es/manhwalatino/MLConstants.kt index e39ba55c4..631915ec7 100644 --- a/src/es/mahnwalatino/src/eu/kanade/tachiyomi/extension/es/manhwalatino/MLConstants.kt +++ b/src/es/mahnwalatino/src/eu/kanade/tachiyomi/extension/es/manhwalatino/MLConstants.kt @@ -7,7 +7,7 @@ object MLConstants { const val searchMangaNextPageSelector = "link[rel=next]" const val latestUpdatesSelector = "div.slider__item" const val searchMangaSelector = "div.page-item-detail.manga" - const val popularMangaNextPageSelector = "nav.navigation-ajax" + const val popularMangaNextPageSelector = "a.nextpostslink" const val latestUpdatesNextPageSelector = "div[role=navigation] a.last" const val popularMangaSelector = "div.page-item-detail.manga" @@ -36,4 +36,5 @@ object MLConstants { const val chapterReleaseDateLinkParser = "span.chapter-release-date a" const val chapterReleaseDateIParser = "span.chapter-release-date i" const val pageListParseSelector = "div.page-break.no-gaps img" + const val imageAttribute = "abs:data-src" } diff --git a/src/es/mahnwalatino/src/eu/kanade/tachiyomi/extension/es/manhwalatino/ManhwaLatino.kt b/src/es/mahnwalatino/src/eu/kanade/tachiyomi/extension/es/manhwalatino/ManhwaLatino.kt index 03cc96928..15f546e06 100644 --- a/src/es/mahnwalatino/src/eu/kanade/tachiyomi/extension/es/manhwalatino/ManhwaLatino.kt +++ b/src/es/mahnwalatino/src/eu/kanade/tachiyomi/extension/es/manhwalatino/ManhwaLatino.kt @@ -11,13 +11,11 @@ import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup import okhttp3.Headers -import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response import org.jsoup.nodes.Document import org.jsoup.nodes.Element import rx.Observable -import java.util.concurrent.TimeUnit class ManhwaLatino : ParsedHttpSource() { @@ -37,14 +35,6 @@ class ManhwaLatino : ParsedHttpSource() { */ override fun headersBuilder() = Headers.Builder().add("Referer", "$baseUrl") - /** - * Http Client with Cloudflare - */ - override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .connectTimeout(10, TimeUnit.SECONDS) - .readTimeout(30, TimeUnit.SECONDS) - .build() - /** * Parser for The WebSite */ diff --git a/src/es/mahnwalatino/src/eu/kanade/tachiyomi/extension/es/manhwalatino/ManhwaLatinoSiteParser.kt b/src/es/mahnwalatino/src/eu/kanade/tachiyomi/extension/es/manhwalatino/ManhwaLatinoSiteParser.kt index aeecd4b16..0503012f9 100644 --- a/src/es/mahnwalatino/src/eu/kanade/tachiyomi/extension/es/manhwalatino/ManhwaLatinoSiteParser.kt +++ b/src/es/mahnwalatino/src/eu/kanade/tachiyomi/extension/es/manhwalatino/ManhwaLatinoSiteParser.kt @@ -75,9 +75,11 @@ class ManhwaLatinoSiteParser( fun getMangaFromLastTranslatedSlide(element: Element): SManga { val manga = SManga.create() manga.url = - getUrlWithoutDomain(element.select(MLConstants.latestUpdatesSelectorUrl).first().attr("abs:href")) + getUrlWithoutDomain( + element.select(MLConstants.latestUpdatesSelectorUrl).first().attr("abs:href") + ) manga.title = element.select(MLConstants.latestUpdatesSelectorTitle).text().trim() - manga.thumbnail_url = element.select(MLConstants.latestUpdatesSelectorThumbnailUrl).attr("abs:src").replace("//", "/") + manga.thumbnail_url = getImage(element.select(MLConstants.latestUpdatesSelectorThumbnailUrl)).replace("//", "/") return manga } @@ -113,9 +115,11 @@ class ManhwaLatinoSiteParser( private fun getMangasFromSearchSite(document: Document): List<SManga> { return document.select(MLConstants.searchSiteMangasHTMLSelector).map { val manga = SManga.create() - manga.url = getUrlWithoutDomain(it.select(MLConstants.searchPageUrlHTMLSelector).attr("abs:href")) + manga.url = getUrlWithoutDomain( + it.select(MLConstants.searchPageUrlHTMLSelector).attr("abs:href") + ) manga.title = it.select(MLConstants.searchPageTitleHTMLSelector).text().trim() - manga.thumbnail_url = it.select(MLConstants.searchPageThumbnailUrlMangaHTMLSelector).attr("abs:src") + manga.thumbnail_url = getImage(it.select(MLConstants.searchPageThumbnailUrlMangaHTMLSelector)) manga } } @@ -133,9 +137,11 @@ class ManhwaLatinoSiteParser( */ fun getMangaFromList(element: Element): SManga { val manga = SManga.create() - manga.url = getUrlWithoutDomain(element.select(MLConstants.popularGenreUrlHTMLSelector).attr("abs:href")) + manga.url = getUrlWithoutDomain( + element.select(MLConstants.popularGenreUrlHTMLSelector).attr("abs:href") + ) manga.title = element.select(MLConstants.popularGenreTitleHTMLSelector).text().trim() - manga.thumbnail_url = element.select(MLConstants.popularGenreThumbnailUrlMangaHTMLSelector).attr("abs:src") + manga.thumbnail_url = getImage(element.select(MLConstants.popularGenreThumbnailUrlMangaHTMLSelector)) return manga } @@ -149,7 +155,8 @@ class ManhwaLatinoSiteParser( val titleElements = document.select("#manga-title h1") val mangaType = getMangaBadges(titleElements) - val descriptionList = document.select(MLConstants.mangaDetailsDescriptionHTMLSelector).map { it.text() } + val descriptionList = + document.select(MLConstants.mangaDetailsDescriptionHTMLSelector).map { it.text() } val author = document.select(MLConstants.mangaDetailsAuthorHTMLSelector).text() val artist = document.select(MLConstants.mangaDetailsArtistHTMLSelector).text() @@ -158,8 +165,7 @@ class ManhwaLatinoSiteParser( val genreTagList = genrelist + tagList manga.title = titleElements.last().ownText().trim() - manga.thumbnail_url = - document.select(MLConstants.mangaDetailsThumbnailUrlHTMLSelector).attr("abs:src") + manga.thumbnail_url = getImage(document.select(MLConstants.mangaDetailsThumbnailUrlHTMLSelector)) manga.description = descriptionList.joinToString("\n") manga.author = author.ifBlank { "Autor Desconocido" } manga.artist = artist @@ -238,7 +244,8 @@ class ManhwaLatinoSiteParser( * Get The String with the information about the Release date of the Chapter */ private fun getChapterReleaseDate(element: Element): String { - val chapterReleaseDateLink = element.select(MLConstants.chapterReleaseDateLinkParser).attr("title") + val chapterReleaseDateLink = + element.select(MLConstants.chapterReleaseDateLinkParser).attr("title") val chapterReleaseDateI = element.select(MLConstants.chapterReleaseDateIParser).text() return when { chapterReleaseDateLink.isNotEmpty() -> chapterReleaseDateLink @@ -296,9 +303,10 @@ class ManhwaLatinoSiteParser( */ fun getPageListParse(response: Response): List<Page> { val list = - response.asJsoup().select(MLConstants.pageListParseSelector).mapIndexed { index, imgElement -> - Page(index, "", imgElement.attr("abs:src")) - } + response.asJsoup().select(MLConstants.pageListParseSelector) + .mapIndexed { index, imgElement -> + Page(index, "", getImage(imgElement)) + } return list } @@ -357,4 +365,28 @@ class ManhwaLatinoSiteParser( * Create a Address url without the base url. */ private fun getUrlWithoutDomain(url: String) = url.substringAfter(baseUrl) + + /** + * Extract the Image from the Html Element + * The website changes often the attr of the images + * data-src or src + */ + private fun getImage(elements: Elements): String { + var imageUrl: String = elements.attr(MLConstants.imageAttribute) + if (imageUrl.isEmpty()) + imageUrl = elements.attr("abs:src") + return imageUrl + } + + /** + * Extract the Image from the Html Element + * The website changes often the attr of the images + * data-src or src + */ + private fun getImage(element: Element): String { + var imageUrl = element.attr(MLConstants.imageAttribute) + if (imageUrl.isEmpty()) + imageUrl = element.attr("abs:src") + return imageUrl + } }