AComics some fixes (#813)

AComics some fixes
This commit is contained in:
Pavka 2019-02-12 01:34:21 +03:00 committed by Carlos
parent 1ecd88e237
commit a605c902bb
1 changed files with 52 additions and 29 deletions

View File

@ -8,6 +8,7 @@ import okhttp3.Request
import okhttp3.Response import okhttp3.Response
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import java.net.URLEncoder
class AComics : ParsedHttpSource() { class AComics : ParsedHttpSource() {
@ -17,11 +18,36 @@ class AComics : ParsedHttpSource() {
override val lang = "ru" override val lang = "ru"
val cookiesHeader by lazy {
val cookies = mutableMapOf<String, String>()
cookies.put("ageRestrict", "17")
buildCookies(cookies)
}
fun buildCookies(cookies: Map<String, String>) = cookies.entries.map {
"${URLEncoder.encode(it.key, "UTF-8")}=${URLEncoder.encode(it.value, "UTF-8")}"
}.joinToString(separator = "; ", postfix = ";")
override val client = network.client.newBuilder()
.addNetworkInterceptor { chain ->
val newReq = chain
.request()
.newBuilder()
.addHeader("Cookie", cookiesHeader)
.build()
chain.proceed(newReq)
}.build()!!
override val supportsLatest = true override val supportsLatest = true
override fun popularMangaRequest(page: Int): Request = override fun popularMangaRequest(page: Int): Request =
GET("$baseUrl/comics?categories=&ratings[]=1&ratings[]=2&ratings[]=3&ratings[]=4&ratings[]=5ratings[]=6&&type=0&updatable=0&subscribe=0&issue_count=2&sort=subscr_count&skip=${10 * (page - 1)}", headers) GET("$baseUrl/comics?categories=&ratings[]=1&ratings[]=2&ratings[]=3&ratings[]=4&ratings[]=5ratings[]=6&&type=0&updatable=0&subscribe=0&issue_count=2&sort=subscr_count&skip=${10 * (page - 1)}", headers)
override fun latestUpdatesRequest(page: Int): Request =
GET("$baseUrl/comics?categories=&ratings[]=1&ratings[]=2&ratings[]=3&ratings[]=4&ratings[]=5ratings[]=6&&type=0&updatable=0&subscribe=0&issue_count=2&sort=last_update&skip=${10 * (page - 1)}", headers)
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
val url: String = if (query.isNotEmpty()) { val url: String = if (query.isNotEmpty()) {
"$baseUrl/search?keyword=$query" "$baseUrl/search?keyword=$query"
@ -46,7 +72,7 @@ class AComics : ParsedHttpSource() {
status = "yes" status = "yes"
} }
} }
is Rating -> { is RatingList -> {
filter.state.forEach { filter.state.forEach {
if (it.state) { if (it.state) {
rating.add(it.id) rating.add(it.id)
@ -60,10 +86,6 @@ class AComics : ParsedHttpSource() {
return GET(url, headers) return GET(url, headers)
} }
override fun latestUpdatesRequest(page: Int): Request =
GET("$baseUrl/comics?categories=&ratings[]=2&ratings[]=3&ratings[]=4&ratings[]=5&type=0&updatable=0&subscribe=0&issue_count=2&sort=last_update?skip=${10 * (page - 1)}", headers)
override fun popularMangaSelector() = "table.list-loadable > tbody > tr" override fun popularMangaSelector() = "table.list-loadable > tbody > tr"
override fun latestUpdatesSelector() = popularMangaSelector() override fun latestUpdatesSelector() = popularMangaSelector()
@ -103,7 +125,7 @@ class AComics : ParsedHttpSource() {
} }
override fun chapterListParse(response: Response): List<SChapter> { override fun chapterListParse(response: Response): List<SChapter> {
var res = mutableListOf<SChapter>() val res = mutableListOf<SChapter>()
val count = response.asJsoup() val count = response.asJsoup()
.select(".about-summary > p:contains(Количество выпусков:)") .select(".about-summary > p:contains(Количество выпусков:)")
.text() .text()
@ -132,40 +154,41 @@ class AComics : ParsedHttpSource() {
override fun imageUrlParse(document: Document) = "" override fun imageUrlParse(document: Document) = ""
private class GenreList(genres: List<Storage>) : Filter.Group<Storage>("Категории", genres) private class GenreList(genres: List<Genre>) : Filter.Group<Genre>("Категории", genres)
private class Storage(name: String, val id: Int) : Filter.CheckBox(name) private class Genre(name: String, val id: Int) : Filter.CheckBox(name)
private class Rating(name: String, val id: Int) : Filter.CheckBox(name, state = true)
private class Status : Filter.Select<String>("Статус", arrayOf("Все", "Завершенный", "Продолжающийся")) private class Status : Filter.Select<String>("Статус", arrayOf("Все", "Завершенный", "Продолжающийся"))
private class Rating : Filter.Group<Storage>("Возрастная категория", listOf( private class RatingList : Filter.Group<Rating>("Возрастная категория", listOf(
Storage("???", 1), Rating("???", 1),
Storage("0+", 2), Rating("0+", 2),
Storage("6+", 3), Rating("6+", 3),
Storage("12+", 4), Rating("12+", 4),
Storage("16+", 5), Rating("16+", 5),
Storage("18+", 6) Rating("18+", 6)
)) ))
override fun getFilterList() = FilterList( override fun getFilterList() = FilterList(
Status(), Status(),
Rating(), RatingList(),
GenreList(getGenreList()) GenreList(getGenreList())
) )
private fun getGenreList() = listOf( private fun getGenreList() = listOf(
Storage("Животные", 1), Genre("Животные", 1),
Storage("Драма", 2), Genre("Драма", 2),
Storage("Фэнтези", 3), Genre("Фэнтези", 3),
Storage("Игры", 4), Genre("Игры", 4),
Storage("Юмор", 5), Genre("Юмор", 5),
Storage("Журнал", 6), Genre("Журнал", 6),
Storage("Паранормальное", 7), Genre("Паранормальное", 7),
Storage("Конец света", 8), Genre("Конец света", 8),
Storage("Романтика", 9), Genre("Романтика", 9),
Storage("Фантастика", 10), Genre("Фантастика", 10),
Storage("Бытовое", 11), Genre("Бытовое", 11),
Storage("Стимпанк", 12), Genre("Стимпанк", 12),
Storage("Супергерои", 13) Genre("Супергерои", 13)
) )
} }