From 29c3798c2a3026a7b71807ca74d85bcfbf43a0a5 Mon Sep 17 00:00:00 2001 From: Alessandro Jean Date: Sat, 29 Aug 2020 23:36:27 -0300 Subject: [PATCH] Update MangaHost url. (#4250) --- src/pt/mangahost/build.gradle | 2 +- .../extension/pt/mangahost/MangaHost.kt | 55 ++++++++++--------- 2 files changed, 30 insertions(+), 27 deletions(-) diff --git a/src/pt/mangahost/build.gradle b/src/pt/mangahost/build.gradle index cedaddbab..78f53a36f 100644 --- a/src/pt/mangahost/build.gradle +++ b/src/pt/mangahost/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'MangaHost' pkgNameSuffix = 'pt.mangahost' extClass = '.MangaHost' - extVersionCode = 11 + extVersionCode = 12 libVersion = '1.2' } diff --git a/src/pt/mangahost/src/eu/kanade/tachiyomi/extension/pt/mangahost/MangaHost.kt b/src/pt/mangahost/src/eu/kanade/tachiyomi/extension/pt/mangahost/MangaHost.kt index 493bbd522..a2806258c 100644 --- a/src/pt/mangahost/src/eu/kanade/tachiyomi/extension/pt/mangahost/MangaHost.kt +++ b/src/pt/mangahost/src/eu/kanade/tachiyomi/extension/pt/mangahost/MangaHost.kt @@ -24,7 +24,7 @@ class MangaHost : ParsedHttpSource() { override val name = "Mangá Host" - override val baseUrl = "https://mangahost2.com" + override val baseUrl = "https://mangahosted.com" override val lang = "pt-BR" @@ -44,8 +44,9 @@ class MangaHost : ParsedHttpSource() { } override fun popularMangaRequest(page: Int): Request { + val listPath = if (page == 1) "" else "/mais-visualizados/page/${page - 1}" val newHeaders = headersBuilder() - .set("Referer", "$baseUrl/mangas" + (if (page == 1) "" else "/mais-visualizados/page/${page - 1}")) + .set("Referer", "$baseUrl/mangas$listPath") .build() val pageStr = if (page != 1) "/page/$page" else "" @@ -59,8 +60,9 @@ class MangaHost : ParsedHttpSource() { override fun popularMangaNextPageSelector() = "div.wp-pagenavi:has(a.nextpostslink)" override fun latestUpdatesRequest(page: Int): Request { + val listPath = if (page == 1) "" else "/lancamentos/page/${page - 1}" val newHeaders = headersBuilder() - .set("Referer", baseUrl + (if (page == 1) "" else "/lancamentos/page/${page - 1}")) + .set("Referer", baseUrl + listPath) .build() val pageStr = if (page != 1) "/page/$page" else "" @@ -82,23 +84,22 @@ class MangaHost : ParsedHttpSource() { override fun searchMangaSelector() = "table.table-search > tbody > tr > td:eq(0) > a" - override fun searchMangaFromElement(element: Element): SManga = genericMangaFromElement(element, "data-path") + override fun searchMangaFromElement(element: Element): SManga = + genericMangaFromElement(element, "data-path") override fun searchMangaNextPageSelector(): String? = null - override fun mangaDetailsParse(document: Document): SManga { + override fun mangaDetailsParse(document: Document): SManga = SManga.create().apply { val infoElement = document.select("div.box-content div.w-row div.w-col:eq(1) article") - return SManga.create().apply { - author = infoElement.select("div.text li div:contains(Autor:)").textWithoutLabel() - artist = infoElement.select("div.text li div:contains(Arte:)").textWithoutLabel() - genre = infoElement.select("h3.subtitle + div.tags a").joinToString { it.text() } - description = infoElement.select("div.text div.paragraph").first()?.text() - ?.substringBefore("Relacionados:") - status = infoElement.select("div.text li div:contains(Status:)").text().toStatus() - thumbnail_url = document.select("div.box-content div.w-row div.w-col:eq(0) div.widget img") - .attr("src") - } + author = infoElement.select("div.text li div:contains(Autor:)").textWithoutLabel() + artist = infoElement.select("div.text li div:contains(Arte:)").textWithoutLabel() + genre = infoElement.select("h3.subtitle + div.tags a").joinToString { it.text() } + description = infoElement.select("div.text div.paragraph").first()?.text() + ?.substringBefore("Relacionados:") + status = infoElement.select("div.text li div:contains(Status:)").text().toStatus() + thumbnail_url = document.select("div.box-content div.w-row div.w-col:eq(0) div.widget img") + .attr("src") } override fun chapterListSelector(): String = @@ -109,7 +110,7 @@ class MangaHost : ParsedHttpSource() { scanlator = element.select("div.pop-content small strong").text() date_upload = element.select("small.clearfix").text() .substringAfter("Adicionado em ") - .let { DATE_FORMAT.tryParseTime(it) } + .toDate() chapter_number = element.select("div.pop-title span.btn-caps").text() .toFloatOrNull() ?: 1f setUrlWithoutDomain(element.select("div.tags a").attr("href")) @@ -139,20 +140,20 @@ class MangaHost : ParsedHttpSource() { return GET(page.imageUrl!!, newHeaders) } + private fun String.toDate(): Long { + return try { + DATE_FORMAT.parse(this)?.time ?: 0L + } catch (e: ParseException) { + 0L + } + } + private fun String.toStatus() = when { contains("Ativo") -> SManga.ONGOING contains("Completo") -> SManga.COMPLETED else -> SManga.UNKNOWN } - private fun SimpleDateFormat.tryParseTime(date: String): Long { - return try { - parse(date)!!.time - } catch (e: ParseException) { - 0L - } - } - private fun String.withoutLanguage(): String = replace(LANG_REGEX, "") private fun String.toLargeUrl(): String = replace(IMAGE_REGEX, ".") @@ -160,11 +161,13 @@ class MangaHost : ParsedHttpSource() { private fun Elements.textWithoutLabel(): String = text()!!.substringAfter(":").trim() companion object { - private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36" + private const val USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36" private val LANG_REGEX = "( )?\\((PT-)?BR\\)".toRegex() private val IMAGE_REGEX = "_(small|medium|xmedium)\\.".toRegex() - private val DATE_FORMAT by lazy { SimpleDateFormat("MMM dd, yyyy", Locale.ENGLISH) } + private val DATE_FORMAT by lazy { + SimpleDateFormat("MMM dd, yyyy", Locale.ENGLISH) + } } }