Initial commit
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 18 KiB |
BIN
multisrc/overrides/wpcomics/default/res/web_hi_res_512.png
Normal file
|
After Width: | Height: | Size: 89 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 10 KiB |
BIN
multisrc/overrides/wpcomics/nettruyen/res/web_hi_res_512.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
21
multisrc/overrides/wpcomics/nettruyen/src/NetTruyen.kt
Normal file
@@ -0,0 +1,21 @@
|
||||
package eu.kanade.tachiyomi.extension.vi.nettruyen
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.wpcomics.WPComics
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.source.model.FilterList
|
||||
import eu.kanade.tachiyomi.source.model.Page
|
||||
import okhttp3.Headers
|
||||
import okhttp3.Request
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Locale
|
||||
|
||||
class NetTruyen : WPComics("NetTruyen", "https://www.nettruyenbing.com", "vi", SimpleDateFormat("dd/MM/yy", Locale.getDefault()), null) {
|
||||
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
||||
override fun imageRequest(page: Page): Request = GET(page.imageUrl!!, headersBuilder().add("Referer", baseUrl).build())
|
||||
override fun getFilterList(): FilterList {
|
||||
return FilterList(
|
||||
StatusFilter(getStatusList()),
|
||||
GenreFilter(getGenreList()),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 10 KiB |
BIN
multisrc/overrides/wpcomics/nhattruyen/res/web_hi_res_512.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
16
multisrc/overrides/wpcomics/nhattruyen/src/NhatTruyen.kt
Normal file
@@ -0,0 +1,16 @@
|
||||
package eu.kanade.tachiyomi.extension.vi.nhattruyen
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.wpcomics.WPComics
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.source.model.FilterList
|
||||
import eu.kanade.tachiyomi.source.model.Page
|
||||
import okhttp3.Headers
|
||||
import okhttp3.Request
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Locale
|
||||
|
||||
class NhatTruyen : WPComics("NhatTruyen", "https://nhattruyenmax.com", "vi", SimpleDateFormat("dd/MM/yy", Locale.getDefault()), null) {
|
||||
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request = GET("$baseUrl/the-loai?keyword=$query&page=$page", headers)
|
||||
override fun imageRequest(page: Page): Request = GET(page.imageUrl!!, headersBuilder().add("Referer", baseUrl).build())
|
||||
}
|
||||
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 12 KiB |
BIN
multisrc/overrides/wpcomics/truyenchon/res/web_hi_res_512.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
40
multisrc/overrides/wpcomics/truyenchon/src/TruyenChon.kt
Normal file
@@ -0,0 +1,40 @@
|
||||
package eu.kanade.tachiyomi.extension.vi.truyenchon
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.wpcomics.WPComics
|
||||
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.SManga
|
||||
import okhttp3.Headers
|
||||
import okhttp3.Request
|
||||
import org.jsoup.nodes.Element
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Locale
|
||||
|
||||
class TruyenChon : WPComics("TruyenChon", "http://truyenchon.com", "vi", SimpleDateFormat("dd/MM/yy", Locale.getDefault()), null) {
|
||||
override val searchPath = "the-loai"
|
||||
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
||||
override fun imageRequest(page: Page): Request = GET(page.imageUrl!!, headersBuilder().add("Referer", baseUrl).build())
|
||||
override fun getFilterList(): FilterList {
|
||||
return FilterList(
|
||||
StatusFilter(getStatusList()),
|
||||
GenreFilter(getGenreList()),
|
||||
)
|
||||
}
|
||||
override fun popularMangaFromElement(element: Element): SManga {
|
||||
return SManga.create().apply {
|
||||
element.select("h3 a").let {
|
||||
title = it.text().replace("Truyện tranh ", "")
|
||||
setUrlWithoutDomain(it.attr("abs:href"))
|
||||
}
|
||||
thumbnail_url = imageOrNull(element.select("div.image:first-of-type img").first()!!)
|
||||
}
|
||||
}
|
||||
override fun searchMangaFromElement(element: Element): SManga {
|
||||
return SManga.create().apply {
|
||||
title = element.attr("title").replace("Truyện tranh ", "")
|
||||
setUrlWithoutDomain(element.attr("href"))
|
||||
thumbnail_url = imageOrNull(element.select("img").first()!!)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
|
After Width: | Height: | Size: 9.6 KiB |
|
After Width: | Height: | Size: 14 KiB |
BIN
multisrc/overrides/wpcomics/xoxocomics/res/web_hi_res_512.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
54
multisrc/overrides/wpcomics/xoxocomics/src/XoxoComics.kt
Normal file
@@ -0,0 +1,54 @@
|
||||
package eu.kanade.tachiyomi.extension.en.xoxocomics
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.wpcomics.WPComics
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.source.model.FilterList
|
||||
import eu.kanade.tachiyomi.source.model.SChapter
|
||||
import eu.kanade.tachiyomi.source.model.SManga
|
||||
import eu.kanade.tachiyomi.util.asJsoup
|
||||
import okhttp3.Request
|
||||
import okhttp3.Response
|
||||
import org.jsoup.nodes.Document
|
||||
import org.jsoup.nodes.Element
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Locale
|
||||
|
||||
class XoxoComics : WPComics("XOXO Comics", "https://xoxocomics.net", "en", SimpleDateFormat("MM/dd/yyyy", Locale.US), null) {
|
||||
override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/comic-updates?page=$page", headers)
|
||||
override fun latestUpdatesSelector() = "li.row"
|
||||
override fun latestUpdatesFromElement(element: Element): SManga {
|
||||
return SManga.create().apply {
|
||||
element.select("h3 a").let {
|
||||
title = it.text()
|
||||
setUrlWithoutDomain(it.attr("href"))
|
||||
}
|
||||
thumbnail_url = element.select("img").attr("data-original")
|
||||
}
|
||||
}
|
||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||
return GET("$baseUrl/search?keyword=$query&page=$page", headers)
|
||||
}
|
||||
|
||||
override fun chapterListParse(response: Response): List<SChapter> {
|
||||
val chapters = mutableListOf<SChapter>()
|
||||
|
||||
// recursively add chapters from paginated chapter list
|
||||
fun parseChapters(document: Document) {
|
||||
document.select(chapterListSelector()).map { chapters.add(chapterFromElement(it)) }
|
||||
document.select("ul.pagination a[rel=next]").firstOrNull()?.let { a ->
|
||||
parseChapters(client.newCall(GET(a.attr("abs:href"), headers)).execute().asJsoup())
|
||||
}
|
||||
}
|
||||
|
||||
parseChapters(response.asJsoup())
|
||||
return chapters
|
||||
}
|
||||
|
||||
override fun chapterFromElement(element: Element): SChapter {
|
||||
return super.chapterFromElement(element).apply {
|
||||
date_upload = element.select("div.col-xs-3").text().toDate()
|
||||
}
|
||||
}
|
||||
|
||||
override fun pageListRequest(chapter: SChapter): Request = GET(baseUrl + "${chapter.url}/all")
|
||||
}
|
||||