diff --git a/src/all/emerald/AndroidManifest.xml b/src/all/batoto/AndroidManifest.xml similarity index 100% rename from src/all/emerald/AndroidManifest.xml rename to src/all/batoto/AndroidManifest.xml diff --git a/src/all/emerald/build.gradle b/src/all/batoto/build.gradle similarity index 55% rename from src/all/emerald/build.gradle rename to src/all/batoto/build.gradle index 511c7bf07..308661210 100644 --- a/src/all/emerald/build.gradle +++ b/src/all/batoto/build.gradle @@ -2,10 +2,10 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' ext { - extName = 'Emerald' - pkgNameSuffix = 'all.emerald' - extClass = '.EmeraldFactory' - extVersionCode = 7 + extName = 'Bato.to' + pkgNameSuffix = 'all.batoto' + extClass = '.BatoToFactory' + extVersionCode = 1 libVersion = '1.2' } diff --git a/src/all/batoto/res/mipmap-hdpi/ic_launcher.png b/src/all/batoto/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..0c371b3be Binary files /dev/null and b/src/all/batoto/res/mipmap-hdpi/ic_launcher.png differ diff --git a/src/all/batoto/res/mipmap-mdpi/ic_launcher.png b/src/all/batoto/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..718a3b8b1 Binary files /dev/null and b/src/all/batoto/res/mipmap-mdpi/ic_launcher.png differ diff --git a/src/all/batoto/res/mipmap-xhdpi/ic_launcher.png b/src/all/batoto/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..e705165fc Binary files /dev/null and b/src/all/batoto/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/src/all/batoto/res/mipmap-xxhdpi/ic_launcher.png b/src/all/batoto/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..7f9d6a195 Binary files /dev/null and b/src/all/batoto/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/src/all/batoto/res/mipmap-xxxhdpi/ic_launcher.png b/src/all/batoto/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..d7d91a0db Binary files /dev/null and b/src/all/batoto/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/src/all/batoto/res/web_hi_res_512.png b/src/all/batoto/res/web_hi_res_512.png new file mode 100644 index 000000000..973b65efa Binary files /dev/null and b/src/all/batoto/res/web_hi_res_512.png differ diff --git a/src/all/emerald/src/eu/kanade/tachiyomi/extension/all/emerald/Emerald.kt b/src/all/batoto/src/eu/kanade/tachiyomi/extension/all/batoto/BatoTo.kt similarity index 76% rename from src/all/emerald/src/eu/kanade/tachiyomi/extension/all/emerald/Emerald.kt rename to src/all/batoto/src/eu/kanade/tachiyomi/extension/all/batoto/BatoTo.kt index a23943af4..3a8f938bd 100644 --- a/src/all/emerald/src/eu/kanade/tachiyomi/extension/all/emerald/Emerald.kt +++ b/src/all/batoto/src/eu/kanade/tachiyomi/extension/all/batoto/BatoTo.kt @@ -1,10 +1,9 @@ -package eu.kanade.tachiyomi.extension.all.emerald +package eu.kanade.tachiyomi.extension.all.batoto import com.squareup.duktape.Duktape import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.source.model.Filter 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 @@ -12,7 +11,6 @@ import eu.kanade.tachiyomi.source.online.ParsedHttpSource import okhttp3.HttpUrl import okhttp3.OkHttpClient import okhttp3.Request -import okhttp3.Response import org.json.JSONArray import org.json.JSONObject import org.jsoup.nodes.Document @@ -20,13 +18,14 @@ import org.jsoup.nodes.Element import java.util.Calendar import java.util.concurrent.TimeUnit -open class Emerald( - override val name: String, - override val baseUrl: String, +open class BatoTo( override val lang: String, - private val Mtlang: String + private val siteLang: String ) : ParsedHttpSource() { + override val name: String = "Bato.to" + override val baseUrl: String = "https://bato.to" + override val supportsLatest = true override val client: OkHttpClient = network.cloudflareClient.newBuilder() @@ -35,7 +34,7 @@ open class Emerald( .build() override fun latestUpdatesRequest(page: Int): Request { - return GET("$baseUrl/browse?langs=$Mtlang&sort=update&page=$page") + return GET("$baseUrl/browse?langs=$siteLang&sort=update&page=$page") } override fun latestUpdatesSelector() = "div#series-list div.col" @@ -53,7 +52,7 @@ open class Emerald( override fun latestUpdatesNextPageSelector() = "div#mainer .pagination .page-item:not(.disabled) a.page-link:contains(ยป)" override fun popularMangaRequest(page: Int): Request { - return GET("$baseUrl/browse?langs=$Mtlang&sort=views_w&page=$page") + return GET("$baseUrl/browse?langs=$siteLang&sort=views_w&page=$page") } override fun popularMangaSelector() = latestUpdatesSelector() @@ -63,90 +62,92 @@ open class Emerald( override fun popularMangaNextPageSelector() = latestUpdatesNextPageSelector() override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - var author: String? = null - val url = HttpUrl.parse("$baseUrl/browse")!!.newBuilder() - url.addQueryParameter("page", page.toString()) - url.addQueryParameter("langs", Mtlang) - filters.forEach { filter -> - when (filter) { - is AuthorFilter -> { - author = filter.state - } - is StyleFilter -> { - val styleToInclude = mutableListOf() - filter.state.forEach { content -> - if (content.state) { - styleToInclude.add(content.name) + return if (query.isNotBlank()) { + GET("$baseUrl/search?word=$query&page=$page") + } else { + var author: String? = null + val url = HttpUrl.parse("$baseUrl/browse")!!.newBuilder() + url.addQueryParameter("page", page.toString()) + url.addQueryParameter("langs", siteLang) + filters.forEach { filter -> + when (filter) { + is AuthorFilter -> { + author = filter.state + } + is StyleFilter -> { + val styleToInclude = mutableListOf() + filter.state.forEach { content -> + if (content.state) { + styleToInclude.add(content.name) + } + } + if (styleToInclude.isNotEmpty()) { + url.addQueryParameter( + "styles", + styleToInclude + .joinToString(",") + ) } } - if (styleToInclude.isNotEmpty()) { - url.addQueryParameter( - "styles", - styleToInclude - .joinToString(",") - ) - } - } - is DemographicFilter -> { - val demographicToInclude = mutableListOf() - filter.state.forEach { content -> - if (content.state) { - demographicToInclude.add(content.name) + is DemographicFilter -> { + val demographicToInclude = mutableListOf() + filter.state.forEach { content -> + if (content.state) { + demographicToInclude.add(content.name) + } + } + if (demographicToInclude.isNotEmpty()) { + url.addQueryParameter( + "demogs", + demographicToInclude + .joinToString(",") + ) } } - if (demographicToInclude.isNotEmpty()) { - url.addQueryParameter( - "demogs", - demographicToInclude - .joinToString(",") - ) - } - } - is StatusFilter -> { - val status = when (filter.state) { - Filter.TriState.STATE_INCLUDE -> "1" - Filter.TriState.STATE_EXCLUDE -> "0" - else -> "" - } - if (status.isNotEmpty()) { - url.addQueryParameter("status", status) - } - } - is GenreFilter -> { - val genreToInclude = mutableListOf() - filter.state.forEach { content -> - if (content.state) { - genreToInclude.add(content.name) + is StatusFilter -> { + val status = when (filter.state) { + Filter.TriState.STATE_INCLUDE -> "1" + Filter.TriState.STATE_EXCLUDE -> "0" + else -> "" + } + if (status.isNotEmpty()) { + url.addQueryParameter("status", status) } } - if (genreToInclude.isNotEmpty()) { - url.addQueryParameter( - "genres", - genreToInclude - .joinToString(",") - ) + is GenreFilter -> { + val genreToInclude = mutableListOf() + filter.state.forEach { content -> + if (content.state) { + genreToInclude.add(content.name) + } + } + if (genreToInclude.isNotEmpty()) { + url.addQueryParameter( + "genres", + genreToInclude + .joinToString(",") + ) + } } - } - is StarFilter -> { - if (filter.state != 0) { - url.addQueryParameter("stars", filter.toUriPart()) + is StarFilter -> { + if (filter.state != 0) { + url.addQueryParameter("stars", filter.toUriPart()) + } } - } - is ChapterFilter -> { - if (filter.state != 0) { - url.addQueryParameter("chapters", filter.toUriPart()) + is ChapterFilter -> { + if (filter.state != 0) { + url.addQueryParameter("chapters", filter.toUriPart()) + } } - } - is SortBy -> { - if (filter.state != 0) { - url.addQueryParameter("sort", filter.toUriPart()) + is SortBy -> { + if (filter.state != 0) { + url.addQueryParameter("sort", filter.toUriPart()) + } } } } + GET(url.build().toString(), headers) } - return if (query.isNotBlank() || author!!.isNotBlank()) { - GET("$baseUrl/search?q=$query&a=$author") - } else GET(url.build().toString(), headers) } override fun searchMangaSelector() = latestUpdatesSelector() @@ -155,15 +156,6 @@ open class Emerald( override fun searchMangaNextPageSelector() = latestUpdatesNextPageSelector() - private val searchMangaTitles = HashSet() - - override fun searchMangaParse(response: Response): MangasPage { - val mp = super.searchMangaParse(response) - val manga = mp.mangas.distinctBy { it.title.toLowerCase() }.filterNot { searchMangaTitles.contains(it.title.toLowerCase()) } - searchMangaTitles.addAll(manga.map { it.title.toLowerCase() }) - return MangasPage(manga, mp.hasNextPage) - } - override fun mangaDetailsRequest(manga: SManga): Request { if (manga.url.startsWith("http")) { return GET(manga.url, headers) diff --git a/src/all/emerald/src/eu/kanade/tachiyomi/extension/all/emerald/EmeraldFactory.kt b/src/all/batoto/src/eu/kanade/tachiyomi/extension/all/batoto/BatoToFactory.kt similarity index 73% rename from src/all/emerald/src/eu/kanade/tachiyomi/extension/all/emerald/EmeraldFactory.kt rename to src/all/batoto/src/eu/kanade/tachiyomi/extension/all/batoto/BatoToFactory.kt index 57a226c60..16b860a1b 100644 --- a/src/all/emerald/src/eu/kanade/tachiyomi/extension/all/emerald/EmeraldFactory.kt +++ b/src/all/batoto/src/eu/kanade/tachiyomi/extension/all/batoto/BatoToFactory.kt @@ -1,18 +1,12 @@ -package eu.kanade.tachiyomi.extension.all.emerald +package eu.kanade.tachiyomi.extension.all.batoto import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceFactory -class EmeraldFactory : SourceFactory { - override fun createSources(): List = languages.map { Mangawindow(it.first, it.second) } + languages.map { Batoto(it.first, it.second) } +class BatoToFactory : SourceFactory { + override fun createSources(): List = languages.map { BatoTo(it.first, it.second) } } -class Mangawindow(tachiLang: String, siteLang: String) : - Emerald("Mangawindow", "https://mangawindow.net", tachiLang, siteLang) - -class Batoto(tachiLang: String, siteLang: String) : - Emerald("Bato.to", "https://bato.to", tachiLang, siteLang) - private val languages = listOf( Pair("ar", "ar"), Pair("bg", "bg"), @@ -40,6 +34,7 @@ private val languages = listOf( Pair("ml", "ml"), Pair("mn", "mn"), Pair("ms", "ms"), + Pair("my", "my"), Pair("nl", "nl"), Pair("no", "no"), Pair("pl", "pl"), diff --git a/src/all/emerald/res/mipmap-hdpi/ic_launcher.png b/src/all/emerald/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index ac7547faf..000000000 Binary files a/src/all/emerald/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/src/all/emerald/res/mipmap-mdpi/ic_launcher.png b/src/all/emerald/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index a6dbfa097..000000000 Binary files a/src/all/emerald/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/src/all/emerald/res/mipmap-xhdpi/ic_launcher.png b/src/all/emerald/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index a68849f59..000000000 Binary files a/src/all/emerald/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/src/all/emerald/res/mipmap-xxhdpi/ic_launcher.png b/src/all/emerald/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 55a0b6ea3..000000000 Binary files a/src/all/emerald/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/all/emerald/res/mipmap-xxxhdpi/ic_launcher.png b/src/all/emerald/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index c11a3f7b4..000000000 Binary files a/src/all/emerald/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/all/emerald/res/web_hi_res_512.png b/src/all/emerald/res/web_hi_res_512.png deleted file mode 100644 index b5dcfcd59..000000000 Binary files a/src/all/emerald/res/web_hi_res_512.png and /dev/null differ