diff --git a/src/all/wpmanga/build.gradle b/src/all/wpmanga/build.gradle deleted file mode 100644 index 4f7b37e5a..000000000 --- a/src/all/wpmanga/build.gradle +++ /dev/null @@ -1,12 +0,0 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' - -ext { - appName = 'Tachiyomi: WPManga (Many sources)' - pkgNameSuffix = 'all.wpmanga' - extClass = '.WpMangaFactory' - extVersionCode = 3 - libVersion = '1.2' -} - -apply from: "$rootDir/common.gradle" diff --git a/src/all/wpmanga/res/mipmap-hdpi/ic_launcher.png b/src/all/wpmanga/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index e2f015fdd..000000000 Binary files a/src/all/wpmanga/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/src/all/wpmanga/res/mipmap-mdpi/ic_launcher.png b/src/all/wpmanga/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 89d8c9131..000000000 Binary files a/src/all/wpmanga/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/src/all/wpmanga/res/mipmap-xhdpi/ic_launcher.png b/src/all/wpmanga/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 5a5efe0a3..000000000 Binary files a/src/all/wpmanga/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/src/all/wpmanga/res/mipmap-xxhdpi/ic_launcher.png b/src/all/wpmanga/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 723de063e..000000000 Binary files a/src/all/wpmanga/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/all/wpmanga/res/mipmap-xxxhdpi/ic_launcher.png b/src/all/wpmanga/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index c57835705..000000000 Binary files a/src/all/wpmanga/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/all/wpmanga/res/web_hi_res_512.png b/src/all/wpmanga/res/web_hi_res_512.png deleted file mode 100644 index c8845b98b..000000000 Binary files a/src/all/wpmanga/res/web_hi_res_512.png and /dev/null differ diff --git a/src/all/wpmanga/src/eu/kanade/tachiyomi/extension/all/wpmanga/WpManga.kt b/src/all/wpmanga/src/eu/kanade/tachiyomi/extension/all/wpmanga/WpManga.kt deleted file mode 100644 index 7060ec834..000000000 --- a/src/all/wpmanga/src/eu/kanade/tachiyomi/extension/all/wpmanga/WpManga.kt +++ /dev/null @@ -1,194 +0,0 @@ -package eu.kanade.tachiyomi.extension.all.wpmanga - -import eu.kanade.tachiyomi.network.GET -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 okhttp3.Request -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element -import java.text.SimpleDateFormat -import java.util.* - - -open class WpManga(override val name: String, override val baseUrl: String, override val lang: String) : ParsedHttpSource() { - - override val supportsLatest = false - - override fun popularMangaSelector() = "div[id^=manga-item]" - - override fun popularMangaRequest(page: Int): Request = GET(baseUrl, headers) - - override fun latestUpdatesNextPageSelector(): String? = throw Exception("Not used") - - override fun latestUpdatesFromElement(element: Element): SManga = throw Exception("Not used") - - override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used") - - override fun latestUpdatesSelector(): String = throw Exception("Not used") - - override fun popularMangaNextPageSelector() = null - - - override fun popularMangaFromElement(element: Element): SManga { - val manga = SManga.create() - element.select("a").first().let { - manga.setUrlWithoutDomain(it.attr("href")) - manga.title = it.attr("title") - } - element.select("img").first()?.let { - manga.thumbnail_url = it.absUrl("src").substringBefore("?resize").substringBefore("?fit") - } - return manga - } - - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - return GET("$baseUrl/?s=$query&post_type=wp-manga", headers) - } - - override fun searchMangaSelector() = "div.post-title" - - override fun searchMangaFromElement(element: Element): SManga { - val manga = SManga.create() - element.select("a").first().let { - manga.setUrlWithoutDomain(it.attr("href")) - manga.title = it.text() - } - element.select("img").first()?.let { - manga.thumbnail_url = it.absUrl("src").substringBefore("?resize").substringBefore("?fit") - } - - return manga - } - - override fun searchMangaNextPageSelector() = null - - override fun mangaDetailsParse(document: Document): SManga { - val infoElement = document.select("div.tab-summary").first() - val manga = SManga.create() - manga.author = infoElement.select("div.author-content a")?.first()?.text() - manga.artist = infoElement.select("div.artist-content a")?.first()?.text() - manga.genre = infoElement.select("div.genres-content a")?.first()?.text() - var genres = mutableListOf() - - infoElement.select("div.genres-content a").orEmpty().forEach { id -> - genres.add(id.text()) - } - manga.genre = genres.joinToString(", ") - manga.description = document.select("div.summary__content")?.first()?.text() - manga.status = document.select("div.post-status div.post-content_item:contains(status) div.summary-content").first()?.text().orEmpty().let { parseStatus(it) } - manga.thumbnail_url = document.select("div.summary_image img")?.first()?.absUrl("src")?.substringBefore("?resize")?.substringBefore("?fit") - return manga - } - - private fun parseStatus(status: String) = when { - status.contains("Ongoing", true) -> SManga.ONGOING - status.contains("Completed", true) -> SManga.COMPLETED - else -> SManga.UNKNOWN - } - - override fun chapterListSelector() = "div.listing-chapters_wrap li.wp-manga-chapter" - - - override fun chapterFromElement(element: Element): SChapter { - val urlElement = element.select("a").first() - val dateElement = element.select("span").first() - val chapter = SChapter.create() - chapter.setUrlWithoutDomain(getUrl(urlElement)) - chapter.name = urlElement.text() - chapter.date_upload = dateElement.text()?.let { parseChapterDate(it) } ?: 0 - return chapter - } - - private fun getUrl(urlElement: Element): String { - var url = urlElement.attr("href") - return when { - url.endsWith("?style=list") -> url - else -> "$url?style=list" - } - } - - open fun parseChapterDate(date: String): Long? { - val lcDate = date.toLowerCase() - if (lcDate.endsWith(" ago")) - parseRelativeDate(lcDate)?.let { return it } - - //Handle 'yesterday' and 'today', using midnight - var relativeDate: Calendar? = null - if (lcDate.startsWith("yesterday")) { - relativeDate = Calendar.getInstance() - relativeDate.add(Calendar.DAY_OF_MONTH, -1) //yesterday - relativeDate.set(Calendar.HOUR_OF_DAY, 0) - relativeDate.set(Calendar.MINUTE, 0) - relativeDate.set(Calendar.SECOND, 0) - relativeDate.set(Calendar.MILLISECOND, 0) - } else if (lcDate.startsWith("today")) { - relativeDate = Calendar.getInstance() - relativeDate.set(Calendar.HOUR_OF_DAY, 0) - relativeDate.set(Calendar.MINUTE, 0) - relativeDate.set(Calendar.SECOND, 0) - relativeDate.set(Calendar.MILLISECOND, 0) - } - - relativeDate?.timeInMillis?.let { - return it - } - - return DATE_FORMAT_1.parse(date).time - - } - - /** - * Parses dates in this form: - * `11 days ago` - */ - private fun parseRelativeDate(date: String): Long? { - val trimmedDate = date.split(" ") - - if (trimmedDate[2] != "ago") return null - - val number = trimmedDate[0].toIntOrNull() ?: return null - val unit = trimmedDate[1].removeSuffix("s") // Remove 's' suffix - - val now = Calendar.getInstance() - - // Map English unit to Java unit - val javaUnit = when (unit) { - "year", "yr" -> Calendar.YEAR - "month" -> Calendar.MONTH - "week", "wk" -> Calendar.WEEK_OF_MONTH - "day" -> Calendar.DAY_OF_MONTH - "hour", "hr" -> Calendar.HOUR - "minute", "min" -> Calendar.MINUTE - "second", "sec" -> Calendar.SECOND - else -> return null - } - - now.add(javaUnit, -number) - - return now.timeInMillis - } - - override fun pageListParse(document: Document): List { - val doc = document.select("div.page-break img") - - val pages = mutableListOf() - doc.forEach { - // Create dummy element to resolve relative URL - val absUrl = it.select("img").attr("src") - pages.add(Page(pages.size, "", absUrl)) - } - return pages - } - - override fun imageUrlParse(document: Document) = throw UnsupportedOperationException("Not used") - - companion object { - - private val DATE_FORMAT_1 = SimpleDateFormat("MMM dd, yyyy", Locale.US) - - } -} \ No newline at end of file diff --git a/src/all/wpmanga/src/eu/kanade/tachiyomi/extension/all/wpmanga/WpMangaFactory.kt b/src/all/wpmanga/src/eu/kanade/tachiyomi/extension/all/wpmanga/WpMangaFactory.kt deleted file mode 100644 index b8b19169f..000000000 --- a/src/all/wpmanga/src/eu/kanade/tachiyomi/extension/all/wpmanga/WpMangaFactory.kt +++ /dev/null @@ -1,20 +0,0 @@ -package eu.kanade.tachiyomi.extension.all.wpmanga - -import eu.kanade.tachiyomi.source.Source -import eu.kanade.tachiyomi.source.SourceFactory - -class WpMangaFactory : SourceFactory { - override fun createSources(): List = getAllWpManga() -} - -fun getAllWpManga(): List { - return listOf( - TrashScanlations(), - ZeroScans() - ) -} - -class TrashScanlations : WpManga("Trash Scanlations", "https://trashscanlations.com/", "en") - -class ZeroScans : WpManga("Zero Scans", "https://zeroscans.com/", "en") - diff --git a/src/en/mangazuki/build.gradle b/src/en/mangazuki/build.gradle deleted file mode 100644 index b4441faa8..000000000 --- a/src/en/mangazuki/build.gradle +++ /dev/null @@ -1,12 +0,0 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' - -ext { - appName = 'Tachiyomi: Mangazuki' - pkgNameSuffix = 'en.mangazuki' - extClass = '.Mangazuki' - extVersionCode = 5 - libVersion = '1.0' -} - -apply from: "$rootDir/common.gradle" diff --git a/src/en/mangazuki/res/mipmap-hdpi/ic_launcher.png b/src/en/mangazuki/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 4b9b12366..000000000 Binary files a/src/en/mangazuki/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/mangazuki/res/mipmap-mdpi/ic_launcher.png b/src/en/mangazuki/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 8783ed72a..000000000 Binary files a/src/en/mangazuki/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/mangazuki/res/mipmap-xhdpi/ic_launcher.png b/src/en/mangazuki/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index ae69aef59..000000000 Binary files a/src/en/mangazuki/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/mangazuki/res/mipmap-xxhdpi/ic_launcher.png b/src/en/mangazuki/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 97d1ac0c7..000000000 Binary files a/src/en/mangazuki/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/mangazuki/res/mipmap-xxxhdpi/ic_launcher.png b/src/en/mangazuki/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 5497cf25d..000000000 Binary files a/src/en/mangazuki/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/mangazuki/res/web_hi_res_512.png b/src/en/mangazuki/res/web_hi_res_512.png deleted file mode 100644 index 737d74020..000000000 Binary files a/src/en/mangazuki/res/web_hi_res_512.png and /dev/null differ diff --git a/src/en/mangazuki/src/eu/kanade/tachiyomi/extension/en/mangazuki/Mangazuki.kt b/src/en/mangazuki/src/eu/kanade/tachiyomi/extension/en/mangazuki/Mangazuki.kt deleted file mode 100644 index b1d16f77a..000000000 --- a/src/en/mangazuki/src/eu/kanade/tachiyomi/extension/en/mangazuki/Mangazuki.kt +++ /dev/null @@ -1,132 +0,0 @@ -package eu.kanade.tachiyomi.extension.en.mangazuki - -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.source.model.FilterList -import eu.kanade.tachiyomi.source.model.MangasPage -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 okhttp3.Request -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element -import org.jsoup.select.Elements -import rx.Observable -import java.text.ParseException -import java.text.SimpleDateFormat -import java.util.Date -import java.util.Locale - -class Mangazuki : ParsedHttpSource() { - - override val name = "Mangazuki" - - override val baseUrl = "https://mangazuki.co" - - override val lang = "en" - - override val supportsLatest = true - - private val dateFormat = SimpleDateFormat("d MMM yyyy", Locale.ENGLISH) - - override fun popularMangaSelector() = "div.col-sm-6" - - override fun latestUpdatesSelector() = "div.timeline > dl > dd" - - override fun popularMangaRequest(page: Int): Request { - return GET("$baseUrl/filterList?page=$page&cat=&alpha=&sortBy=name&asc=true&author=&tag=", headers) - } - - override fun latestUpdatesRequest(page: Int): Request { - return GET("$baseUrl/latest-release", headers) - } - - override fun popularMangaFromElement(element: Element): SManga { - return mangaFromElement("a.chart-title", element) - } - - override fun latestUpdatesFromElement(element: Element): SManga { - return mangaFromElement("h3.events-heading > a", element) - } - - private fun mangaFromElement(query: String, element: Element): SManga { - val manga = SManga.create() - element.select(query).first().let { - manga.setUrlWithoutDomain(it.attr("href")) - manga.title = it.text() - } - manga.thumbnail_url = element.select("img").first().attr("src") - return manga - } - - override fun popularMangaNextPageSelector() = ".pagination .active + li:not(.disabled)" - - override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector() - - // Search doesn't work on the site - override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable = Observable.empty() - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request = throw Exception("Not used") - override fun searchMangaSelector() = throw Exception("Not used") - override fun searchMangaFromElement(element: Element): SManga = throw Exception("Not used") - override fun searchMangaNextPageSelector() = throw Exception("Not used") - - override fun mangaDetailsParse(document: Document): SManga { - val commonPath = "div.container > div:nth-of-type(3) > div" - val infoElement = document.select("$commonPath > div:nth-of-type(1) div.widget-container > dl > *") - - val manga = SManga.create() - manga.author = infoElement.getDetail("Author") - manga.artist = infoElement.getDetail("Artist") - manga.genre = infoElement.getDetail("Categories").replace(Regex("\\s+,\\s+"),", ") - manga.description = document.select("$commonPath > div:nth-of-type(2) > div > div.widget-container > p").text() - manga.status = parseStatus(infoElement.getDetail("Status")) - manga.thumbnail_url = document.select("div.boxed > img.img-responsive").first().attr("src") - return manga - } - - private fun Elements.getDetail(field: String): String { - for (e in this) { - if (e.text().contains(field)) { - return e.nextElementSibling().text() - } - } - return "Unknown" - } - - private fun parseStatus(status: String) = when (status) { - "Ongoing" -> SManga.ONGOING - "Complete" -> SManga.COMPLETED - else -> SManga.UNKNOWN - } - - override fun chapterListSelector() = "ul.chapters > li" - - override fun chapterFromElement(element: Element): SChapter { - val urlElement = element.select("h3.chapter-title-rtl > a") - - val chapter = SChapter.create() - chapter.setUrlWithoutDomain(urlElement.attr("href")) - chapter.name = urlElement.text() - chapter.date_upload = parseDateFromElement(element.select("div.date-chapter-title-rtl").first()) - return chapter - } - - private fun parseDateFromElement(dateElement: Element): Long { - val dateAsString = dateElement.text().filterNot { it == '.'} - - val date: Date - try { - date = dateFormat.parse(dateAsString) - } catch (e: ParseException) { - return 0 - } - - return date.time - } - - override fun pageListParse(document: Document) = document.select("div#all > img").mapIndexed { i, element -> Page(i, "", element.attr("data-src")) } - - override fun imageUrlParse(document: Document) = "" - -} diff --git a/src/en/shoujosense/build.gradle b/src/en/shoujosense/build.gradle deleted file mode 100644 index debe6d03d..000000000 --- a/src/en/shoujosense/build.gradle +++ /dev/null @@ -1,12 +0,0 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' - -ext { - appName = 'Tachiyomi: ShoujoSense' - pkgNameSuffix = 'en.shoujosense' - extClass = '.ShoujoSense' - extVersionCode = 2 - libVersion = '1.0' -} - -apply from: "$rootDir/common.gradle" diff --git a/src/en/shoujosense/res/mipmap-hdpi/ic_launcher.png b/src/en/shoujosense/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 7305a7589..000000000 Binary files a/src/en/shoujosense/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/shoujosense/res/mipmap-mdpi/ic_launcher.png b/src/en/shoujosense/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index cab365554..000000000 Binary files a/src/en/shoujosense/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/shoujosense/res/mipmap-xhdpi/ic_launcher.png b/src/en/shoujosense/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 5489b7481..000000000 Binary files a/src/en/shoujosense/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/shoujosense/res/mipmap-xxhdpi/ic_launcher.png b/src/en/shoujosense/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index d2c68a0d6..000000000 Binary files a/src/en/shoujosense/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/shoujosense/res/mipmap-xxxhdpi/ic_launcher.png b/src/en/shoujosense/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 5a0491422..000000000 Binary files a/src/en/shoujosense/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/shoujosense/res/web_hi_res_512.png b/src/en/shoujosense/res/web_hi_res_512.png deleted file mode 100644 index fcf80ff93..000000000 Binary files a/src/en/shoujosense/res/web_hi_res_512.png and /dev/null differ diff --git a/src/en/shoujosense/src/en/kanade/tachiyomi/extension/en/shoujosense/ShoujoSense.kt b/src/en/shoujosense/src/en/kanade/tachiyomi/extension/en/shoujosense/ShoujoSense.kt deleted file mode 100644 index f5a721325..000000000 --- a/src/en/shoujosense/src/en/kanade/tachiyomi/extension/en/shoujosense/ShoujoSense.kt +++ /dev/null @@ -1,151 +0,0 @@ -package eu.kanade.tachiyomi.extension.en.shoujosense - -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.POST -import eu.kanade.tachiyomi.source.model.* -import eu.kanade.tachiyomi.source.online.ParsedHttpSource -import okhttp3.FormBody -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.Response -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element -import java.text.ParseException -import java.text.SimpleDateFormat -import java.util.Calendar -import java.util.regex.Pattern - -class ShoujoSense : ParsedHttpSource() { - override val name = "ShoujoSense" - - override val baseUrl = "http://reader.shoujosense.com" - - override val lang = "en" - - override val supportsLatest = true - - override val client: OkHttpClient = network.cloudflareClient - - companion object { - val dateFormat by lazy { - SimpleDateFormat("yyyy.MM.dd") - } - - val pagesUrlPattern by lazy { - Pattern.compile("""\"url\":\"(.*?)\"""") - } - } - - override fun popularMangaSelector() = "div.list > div.group > div.title > a" - - override fun latestUpdatesSelector() = popularMangaSelector() - - override fun popularMangaRequest(page: Int) - = GET("$baseUrl/directory/$page", headers) - - override fun latestUpdatesRequest(page: Int) - = GET("$baseUrl/latest/$page", headers) - - override fun popularMangaFromElement(element: Element): SManga { - val manga = SManga.create() - manga.setUrlWithoutDomain(element.attr("href")) - manga.title = element.text().trim() - return manga - } - - override fun latestUpdatesFromElement(element: Element): SManga { - return popularMangaFromElement(element) - } - - override fun popularMangaNextPageSelector() = "div.next > a:contains(Next ยป)" - - override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector() - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val form = FormBody.Builder().apply { - add("search", query) - } - return POST("$baseUrl/search", headers, form.build()) - } - - override fun searchMangaSelector() = popularMangaSelector() - - override fun searchMangaFromElement(element: Element): SManga { - return popularMangaFromElement(element) - } - - override fun searchMangaNextPageSelector() = null - - override fun mangaDetailsParse(document: Document): SManga { - val infoElement = document.select("div.info").first() - val manga = SManga.create() - manga.author = infoElement.select("b:contains(Author)").first()?.nextSibling()?.toString()?.substringAfterLast(": ") - // ShoujoSense does not have genre tags - manga.genre = "" - manga.description = infoElement.select("b:contains(Synopsis)").first()?.nextSibling()?.toString()?.substringAfterLast(": ") - manga.status = SManga.UNKNOWN - manga.thumbnail_url = infoElement.select("img").attr("src") - return manga - } - - fun parseStatus(status: String) = when { - status.contains("Ongoing") -> SManga.ONGOING - status.contains("Completed") -> SManga.COMPLETED - else -> SManga.UNKNOWN - } - - override fun chapterListSelector() = "div.list div.element" - - override fun chapterFromElement(element: Element): SChapter { - val urlElement = element.select("a").first() - - val chapter = SChapter.create() - chapter.setUrlWithoutDomain(urlElement.attr("href")) - chapter.name = urlElement.text() - chapter.date_upload = element.select("div.meta_r").text()?.substringAfterLast(", ")?.let { - parseChapterDate(it) - } ?: 0 - return chapter - } - - private fun parseChapterDate(date: String): Long { - return if ("Today" in date) { - Calendar.getInstance().timeInMillis - } else if ("Yesterday" in date) { - Calendar.getInstance().apply { - add(Calendar.DAY_OF_YEAR, -1) - }.timeInMillis - } else { - try { - dateFormat.parse(date).time - } catch (e: ParseException) { - 0L - } - } - } - - override fun pageListRequest(chapter: SChapter) = POST(baseUrl + chapter.url, headers) - - override fun pageListParse(response: Response): List { - val body = response.body()!!.string() - val pages = mutableListOf() - - val p = pagesUrlPattern - val m = p.matcher(body) - - var i = 0 - while (m.find()) { - val url = m.group(1) - pages.add(Page(i++, "", url.replace("""\\""", "/"))) - } - return pages - } - - override fun pageListParse(document: Document): List { - throw Exception("Not used") - } - - override fun imageUrlRequest(page: Page) = GET(page.url) - - override fun imageUrlParse(document: Document) = "" -}