Fix MangaPark latest/popular (#885)

Fix MangaPark latest/popular
This commit is contained in:
Eugene 2019-03-09 12:35:49 -05:00 committed by Carlos
parent 5f087ccb13
commit 39bd568543
2 changed files with 32 additions and 23 deletions

View File

@ -5,7 +5,7 @@ ext {
appName = 'Tachiyomi: MangaPark' appName = 'Tachiyomi: MangaPark'
pkgNameSuffix = 'en.mangapark' pkgNameSuffix = 'en.mangapark'
extClass = '.MangaPark' extClass = '.MangaPark'
extVersionCode = 7 extVersionCode = 8
libVersion = '1.2' libVersion = '1.2'
} }

View File

@ -2,14 +2,19 @@ package eu.kanade.tachiyomi.extension.en.mangapark
import android.net.Uri import android.net.Uri
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.model.* import eu.kanade.tachiyomi.source.model.Filter
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import okhttp3.Request import okhttp3.Request
import org.json.JSONObject import org.json.JSONObject
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.Calendar
import java.util.Locale
class MangaPark : ParsedHttpSource() { class MangaPark : ParsedHttpSource() {
@ -26,34 +31,29 @@ class MangaPark : ParsedHttpSource() {
private val dateFormat = SimpleDateFormat("MMM d, yyyy, HH:mm a", Locale.ENGLISH) private val dateFormat = SimpleDateFormat("MMM d, yyyy, HH:mm a", Locale.ENGLISH)
private val dateFormatTimeOnly = SimpleDateFormat("HH:mm a", Locale.ENGLISH) private val dateFormatTimeOnly = SimpleDateFormat("HH:mm a", Locale.ENGLISH)
override fun popularMangaSelector() = directorySelector
private fun cleanUrl(url: String) = if (url.startsWith("//")) private fun cleanUrl(url: String) = if (url.startsWith("//"))
"http:$url" "http:$url"
else url else url
private fun mangaFromElement(element: Element) = SManga.create().apply {
val coverElement = element.getElementsByClass("cover").first() override fun popularMangaRequest(page: Int) = GET("$baseUrl$directoryUrl/$page?views_a")
url = coverElement.attr("href")
title = coverElement.attr("title") override fun popularMangaSelector() = directorySelector
}
override fun popularMangaFromElement(element: Element) = mangaFromElement(element) override fun popularMangaFromElement(element: Element) = mangaFromElement(element)
override fun popularMangaNextPageSelector() = directoryNextPageSelector override fun popularMangaNextPageSelector() = directoryNextPageSelector
override fun searchMangaSelector() = ".item"
override fun searchMangaFromElement(element: Element) = mangaFromElement(element) override fun latestUpdatesRequest(page: Int) = GET("$baseUrl$directoryUrl/$page?update")
override fun searchMangaNextPageSelector() = ".paging:not(.order) > li:last-child > a"
override fun popularMangaRequest(page: Int) = GET("$baseUrl$directoryUrl/$page?views")
override fun latestUpdatesSelector() = directorySelector override fun latestUpdatesSelector() = directorySelector
override fun latestUpdatesFromElement(element: Element) = mangaFromElement(element) override fun latestUpdatesFromElement(element: Element) = mangaFromElement(element)
override fun latestUpdatesNextPageSelector() = directoryNextPageSelector
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
val uri = Uri.parse("$baseUrl/search").buildUpon() val uri = Uri.parse("$baseUrl/search").buildUpon()
uri.appendQueryParameter("q", query) uri.appendQueryParameter("q", query)
@ -65,7 +65,18 @@ class MangaPark : ParsedHttpSource() {
return GET(uri.toString()) return GET(uri.toString())
} }
override fun latestUpdatesNextPageSelector() = directoryNextPageSelector override fun searchMangaSelector() = ".item"
override fun searchMangaFromElement(element: Element) = mangaFromElement(element)
override fun searchMangaNextPageSelector() = ".paging:not(.order) > li:last-child > a"
private fun mangaFromElement(element: Element) = SManga.create().apply {
val coverElement = element.getElementsByClass("cover").first()
url = coverElement.attr("href")
title = coverElement.attr("title")
}
override fun mangaDetailsParse(document: Document) = SManga.create().apply { override fun mangaDetailsParse(document: Document) = SManga.create().apply {
val coverElement = document.select(".cover > img").first() val coverElement = document.select(".cover > img").first()
@ -99,8 +110,6 @@ class MangaPark : ParsedHttpSource() {
description = document.getElementsByClass("summary").text().trim() description = document.getElementsByClass("summary").text().trim()
} }
override fun latestUpdatesRequest(page: Int) = GET("$baseUrl$directoryUrl/$page?latest")
//TODO MangaPark has "versioning" //TODO MangaPark has "versioning"
//TODO Previously we just use the version that is expanded by default however this caused an issue when a manga didnt have an expanded version //TODO Previously we just use the version that is expanded by default however this caused an issue when a manga didnt have an expanded version
//TODO if we just choose one to expand it will cause potential missing chapters //TODO if we just choose one to expand it will cause potential missing chapters
@ -180,9 +189,9 @@ class MangaPark : ParsedHttpSource() {
val doc = document.toString() val doc = document.toString()
val obj = doc.substringAfter("var _load_pages = ").substringBefore(";") val obj = doc.substringAfter("var _load_pages = ").substringBefore(";")
val pages = mutableListOf<Page>() val pages = mutableListOf<Page>()
var imglist = JSONObject("""{"data": $obj}""").getJSONArray("data") val imglist = JSONObject("""{"data": $obj}""").getJSONArray("data")
for (i in 0 until imglist.length()) { for (i in 0 until imglist.length()) {
var item = imglist.getJSONObject(i) val item = imglist.getJSONObject(i)
var page = item.getString("u") var page = item.getString("u")
if (page.startsWith("//")) { if (page.startsWith("//")) {
page = "https:$page" page = "https:$page"
@ -193,8 +202,7 @@ class MangaPark : ParsedHttpSource() {
} }
//Unused, we can get image urls directly from the chapter page //Unused, we can get image urls directly from the chapter page
override fun imageUrlParse(document: Document) override fun imageUrlParse(document: Document) = throw UnsupportedOperationException("Not used")
= throw UnsupportedOperationException("This method should not be called!")
override fun getFilterList() = FilterList( override fun getFilterList() = FilterList(
AuthorArtistText(), AuthorArtistText(),
@ -410,4 +418,5 @@ class MangaPark : ParsedHttpSource() {
private interface UriFilter { private interface UriFilter {
fun addToUri(uri: Uri.Builder) fun addToUri(uri: Uri.Builder)
} }
} }