From 121f0591db74510583e8c0a093dccb664ca28083 Mon Sep 17 00:00:00 2001 From: Vetle Ledaal Date: Sun, 7 Jul 2024 16:32:10 +0200 Subject: [PATCH] Add MangaBuff (#3891) * Add MangaBuff * style * Update src/ru/mangabuff/src/eu/kanade/tachiyomi/extension/ru/mangabuff/MangaBuff.kt Co-authored-by: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com> * PR comments Co-authored-by: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com> --------- Co-authored-by: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com> --- src/ru/mangabuff/AndroidManifest.xml | 22 ++ src/ru/mangabuff/build.gradle | 8 + .../mangabuff/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 6707 bytes .../mangabuff/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3364 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 10644 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 22685 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 38188 bytes .../extension/ru/mangabuff/MangaBuff.kt | 343 ++++++++++++++++++ .../ru/mangabuff/MangaBuffFilters.kt | 289 +++++++++++++++ .../ru/mangabuff/MangaBuffUrlActivity.kt | 36 ++ 10 files changed, 698 insertions(+) create mode 100644 src/ru/mangabuff/AndroidManifest.xml create mode 100644 src/ru/mangabuff/build.gradle create mode 100644 src/ru/mangabuff/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/ru/mangabuff/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/ru/mangabuff/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/ru/mangabuff/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/ru/mangabuff/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/ru/mangabuff/src/eu/kanade/tachiyomi/extension/ru/mangabuff/MangaBuff.kt create mode 100644 src/ru/mangabuff/src/eu/kanade/tachiyomi/extension/ru/mangabuff/MangaBuffFilters.kt create mode 100644 src/ru/mangabuff/src/eu/kanade/tachiyomi/extension/ru/mangabuff/MangaBuffUrlActivity.kt diff --git a/src/ru/mangabuff/AndroidManifest.xml b/src/ru/mangabuff/AndroidManifest.xml new file mode 100644 index 000000000..80c894ce2 --- /dev/null +++ b/src/ru/mangabuff/AndroidManifest.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + diff --git a/src/ru/mangabuff/build.gradle b/src/ru/mangabuff/build.gradle new file mode 100644 index 000000000..7d7449c6d --- /dev/null +++ b/src/ru/mangabuff/build.gradle @@ -0,0 +1,8 @@ +ext { + extName = 'MangaBuff' + extClass = '.MangaBuff' + extVersionCode = 1 + isNsfw = false +} + +apply from: "$rootDir/common.gradle" diff --git a/src/ru/mangabuff/res/mipmap-hdpi/ic_launcher.png b/src/ru/mangabuff/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..aa839268a160f073a89f226538eb77b0f0848997 GIT binary patch literal 6707 zcmV-38qDR1P)v>lN|J4SWYrtb*D~; zP)mkOZGyCB5~Ouw!IDIK*^0?nr%_WoN?V8`a#=vcJ#&P@swlJGV}qll#r}14k=Ak(P2}DNQTWB%vf#MWix3f6zBv$4CB- zhE#{=H&>YU=SJ(#S0EI=i!g3%$0#;-in06>UoY{1GCix$KBKRUfmUwfkNmv^iDd7^ z<-r`4x@yKJKiyTeb;;Ua{oWyJYh$&X_Vu9x;x*kleQm?M2}?KjcUIkCVvq&!-USW` zI*DFnsWJgCrZi+LblI7pxG!&31ZhG|(8!yRW@%T!NNEOC90Xw|H6x1Ew}uztL8(IbOr=nQT6C$TMMIlrmn?krncwlPDW4#TKo)Tp5N-KE8*>44>V1RZFTJ~prE zL(G`(%cv_VMs%EZ_t)?J(w2iaKD(W^_n!_zrxy^$oPGh-EX^Hmsw+)=2wSL>g|qqa z9kw6^Lr}A9I%PtUh3Z;@nL#*N3zEB7W+LbeszjhJ#FI8C{dLJcv?p!Mu?b7G#NpPXkDjQT4B>fA2tDlKYy2(ZD7dzpqV*0Yt~`IE==Jc6&r7yuZxM= zeS%0H&-gByGEq-@=&>hy&wJ#3e2lY4A$^#MVNDIAA3pER<}sC1zpgXchEyr4L$hn1 zS~shJ4ybbG5KS6wNuN|Vok3e5TS2IjuMV%{3Y}#18_Z7lOA(`8bzMVD&Vd4`-kjYlS`LUdWQwWbvm+uy=*&sNJ?avHN<*LRh>??-MxAJsuinGI#AC+I zA4~VI`d0Pa)?#C0_vyUZ83lCDsE+2*x%0lR#A>uEYK;(fPH+_|oDEB+58IP*sF|9> zK?m2x^UH`;=HQuZH#NEK`@;F1(V!-)L#ohi0P{#H{Mar?4Q^aXUS8-Y z!cfZ#LRIgm0uF&<7HxLFm{{-h*2V%sKqKWKM9}SR4f$nL-!u-28{uh70$(RQU8k(Y z%)s|5z|RVhDS(9|2+AToY?2MG%{qYD%>sT*(A$&Amn0sg_d#p<7zP+|cgSjtx=hlQaFHvE|AkbWM;3KmRj4FJ^ zTNl7-zZ+H%UGZh(F|{M}A1SSwolw_4Ri>M_n5ISNhA9m~(S<$fvGl;I^|f&G#bP(> zWVj@JEhn`WfZ+B9m>3JlyqK3bd~iXCnVn^ziYy@LzP*|t+WLcCb{{5s`Zl7&+l>e^ z?mKA80u%wJ5T3_2DNVSD=$4HMO}x~&g|B6dek~Bx1@wA?%So)#k*nAogK-plx}&87 zt2WevgNopwkqQVH0tdC{m%+sHAn6dMXE}(8*q|NB34*C0y1ygCRUt}5+W=8}3(>3V znR7hWQFMqI^M3Hl9YM?w)D$mYM0EX%lt$G$`FI@9a!hG05LDc&6c#+0$R?Ap%4eku zHsNj{XhYxZUxb6&z(F10AOwnHQs!AqFyc;)2%T(YDM+%KAfP~#!_1QCt$!x^(LL}U zN8B`x_C1~94OprXJS4hQ)h2Y)nv`bUB0~!_6s7V0wR2MH1cDqf(k~FcVU$fdm@g0n z0X+r*6$&8fa=jP}$i0{h&v}e_k`gA#nJZQcwGFd?_M3RrS?N_%Yv0j?zJFUv`+jN{ zbg#N;CQgJ4Za5jbrSTt0=+5Wh!6q9*Y|bzW#$P)JBnHW zc5W+`lZ%OoA=Oxx(^SK#GGxLf^Q|l(iD-?C8L~Nem!|!mx9P@B$0`Th^YS+n`thHd zOf0@}W08`H0K>#2gqqS7OA;Yy-M;-cvh~sib5M~zsG%yc>LbTR9;wS3GG&=#5YWon z>8%CCK_f;G*P>k(1q9S#0?Lx5Q-BHk#b%?BN3xumrq2wgAgb>G8Ib3BEDH$pss={AfWq@56QaCG0eujKL3M+s`C-zM|L1T zLu6e<EJg4S_ASk z6zB2LF$id7*(7ZywmgS8D6xW>Yu*Slo3a`pq!`0QdjCP+5F;s}y)UJ-c`1v`->HyIjn-Y5dUZT(bO-dL4RyNg0XdMp5 zIg*z2M6ji+ zTfRf|(NB9BM1?K_0)k?0$V2Mkq?d#p|DNLsNtYient&KVFflb33*edPm=9PR>hsM! zjCVvpu|Jc0$7=~a^ZP0Ffd&_Tn^f}_AaeY)>Bf}aeFaOmnhgtT;w40jf09roJe6`2 z(JrJZ&wd$X+n-Y5dkI~5ohil8u?9)3n3!0&qD3NR8NkOeuV*OhmSpu8$>tH&-_?*g z_A!DE8N9E}78BwQ6Oe#f{VToqMoMjq66ywd&&LL@`xBTAaw{cxq8&fN#=nGO7x+c) zz!*1tBcXYVoliip1BkvKCHlA3M5FQ$5X^GMCnF#7r!|*?gE-9zT!RWIr!Jldo6wZh z8JQ_gH9A(UhZifNXg}g(A5Jw0f#PzGgAydGRxp<&4}(?&`x(aGvfC7H{sE4VgNY?{ zu#Wl0o#LVxr*UB6o%1DeR9DT$RE|)vZiz-!(2Th=#cdnO(AC4Mf6kwi{G7yyS^Dw@$6g84A5r?WsnyiL5}v9 zx`}yr5;gvrah1%S((a!SZTwv&_S*48cWh4Sym@Bcq9>3v5L86LOk^QpiLNVVuExwp z-`r6uipa$p%S|=-Tx>bwAQ6xSSDtF*jF0>r+&O{^>^Y94Q5z1r#R7}(U~?!_6nAUu zj9*7|{0uxnjoKKS*;~&i^bd%W29FcciiBo;#z)Z7>obc|+VPw^irR4y&=v{;lG!lE znps>A8eYx_aUpA&y(6D_hv<^)K`NlKiuRI=;Z)9rpJ!s^o8e(D% z5D=e>X|k$Ez;Kz&GgeCpl^b1)h%bSFmJ5QkjV~2kNs zu2EGtNScfG<&m^U(kOR~Ax$-Ow{|KTl0dchm|b(p6$pCI`kRngKu^JBidejn7jiR1 z$(s|J{3{Wh$MFmbC$HmX8h9}8ksYXGBb(=q>w^cW2%{K+KGwqaG-#zBm_4 zsR`M(%1=Sv$s7b1%_J?oY>I|+r zuZn|nF(zr@8i5N0^tQ$@ETA9+^d2>a=r+VN)2}oF3;0qQ9{%r?zWdt=^}zHL0xJ0G z2AC%c=;OLkFR{9S+_MJ{FR=*^p-S)^jfd1!0|+Y1#Ds$&Ab7EQaFA+TVIN{dcJ&NZ zRjRI$e^8Tt5F2ux^9{v!SU_6C@kM))?APuIC@6&$PNy<9z>`IHI0`WFls~?L=y>!L6}Z_F>efV$ zgM^R6TwOtqQm#?o!6ZFjySt-U{V{|TFfm6i$7N0lX2ij~-HeYxKr8v!hfq-*aly<; zdg-8+TqRHxgy;tJ`9OV1zKZ5h#0N<~_`btR!Q2J+&Kz_ET;zx|78k94@?PX;53|We zQ~UQdOwQJynanstOl({Nk|rR?P-|~%kl;!-A9&8tEz6JbPt4Ug)xfcjkaRhx8rUx? z{7TZ|=3Oi53S=^qnVxcR^-rK7XYj9i> z-835%9Xxh8PHJqj zI?bL1?H0ZIF6Ca+pySZZ&x%=rvm;J38`j5ETpWJ%?ax(b*AN87z0IZjxle|Hj3#tQ zPBk8bo2Rm#Fk=A$K}!eV#kk}u64KR&KSdH0XuJO{#;KO*kk0JfgdDt_1$i0-W;q7} zw@2)Pti!#-xk=6iXxs5D#we-6K2$qUs4Yf zOZ^!|GZ(|FPbgEHn++xsp3pGgXQa+gh2&(@){rqP<{9yQLcUgS@>s&yRrrk`J}?0B zvq%z7h;>>5>h=_A%PdsAnAm|NtJ*;y!7KX-GtTBIzogI3#ay9Il|i$5LDz&y{ZU~4 zZZ1wyrsCvhiqvE@@Y9W|2Mn7&$>fH4HVIf2G2!pST!?~-V2c?W)&**eYwLBoK#Lab z+0B=6HqR%kOwvpGaP%z6suHLhbvR>^iE%YUrp}{YjumYQB6R)k5#?EGMY?S!YE}7* zxrN^?=;P1g&2SZ*qZLif<}(tA?%xCwe5$Y2@no`;V;|1N%6X8y1v*-dKZjae_p_$4 z$&4l_2?rS%(enz!OdxAnqwm(uhnr$y%JVON-r6Z9#4aasn=3;UW5_T-su@NtI5cAV zV~Pk_z6FXZkF1%oz|&GEy}ja_{hwGt1^hYGh#$dgY01&Lmbx$Yyl~r$+|_@cD^((Y zj=bTM1>&;>d;KM%!WPAvhQ{TwUbg}>PSYupp~1}$&Z zg^2~m6v9GPSH2d}W&PSW%cCL&$a(qz3 zQ3nTcI*&)rQKPyrUbxlvqd;Vlny1OyBWDwZ!1lB_XZ*}kH z_UJ4C_JG42?CqjGJGQ3xF55k@^{qK`=;-$CRK_3m%CcK>)24m9rlYH)etOT`Df6oC zxpq9wyr?2qRfm%ek%w0?wP448S*QuL>sS8LkgtiboKO589YB9v$XT_IAIu8>=m0+@ z5{brc$Vi;$f+x#a3?yT#s0AY0Zf*QDnk^LV=|EaKaisLl&R0s0zjT~_ez1pnj^bZt zIDsG6=P;xUV}w(ogu)rUR87=@N4IP7Oh)f0)kx2=l0JT`t|tB3M}6ptZ^Z3r z<|cXJ3SZ#P^45nA@|F8$e(M-|CBC$Wb+iF>;5Y@w4P7vXO&4e3&S>nT6u*aRYpK7t zx4xIAboUmnr4y%ny4B}Di-6>x)yUxo1quBbH%?-`q^k=>nXx$Sqp|YVh5zu8zwsBm z^gF*~_9ytlYxm;9F=%cWy@m50f3%CeXQU4PCfbr{gx=9-3@y?uoG(_xL9O zrqy;1j2};fg+j~VhaqRg0`iV*ERW!)rBFx~9BxatZCgMKaB-V;(9hdw!2*0j>{|l6_5GtoFZSVj9002ov JPDHLkV1g#7!z};+ literal 0 HcmV?d00001 diff --git a/src/ru/mangabuff/res/mipmap-mdpi/ic_launcher.png b/src/ru/mangabuff/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..2032cc6e7db124b7fd9d92b98b04563707d7cc55 GIT binary patch literal 3364 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 literal 0 HcmV?d00001 diff --git a/src/ru/mangabuff/res/mipmap-xxxhdpi/ic_launcher.png b/src/ru/mangabuff/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..49ac0b367f38ca7d80a86fb4b08104a0a4549d9a GIT binary patch literal 38188 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 H79aixH_8Ea literal 0 HcmV?d00001 diff --git a/src/ru/mangabuff/src/eu/kanade/tachiyomi/extension/ru/mangabuff/MangaBuff.kt b/src/ru/mangabuff/src/eu/kanade/tachiyomi/extension/ru/mangabuff/MangaBuff.kt new file mode 100644 index 000000000..4d58f0366 --- /dev/null +++ b/src/ru/mangabuff/src/eu/kanade/tachiyomi/extension/ru/mangabuff/MangaBuff.kt @@ -0,0 +1,343 @@ +package eu.kanade.tachiyomi.extension.ru.mangabuff + +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.POST +import eu.kanade.tachiyomi.network.asObservableSuccess +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 +import eu.kanade.tachiyomi.source.online.ParsedHttpSource +import kotlinx.serialization.Serializable +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.Json +import okhttp3.FormBody +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Interceptor +import okhttp3.Request +import okhttp3.Response +import org.jsoup.Jsoup +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import rx.Observable +import uy.kohesive.injekt.injectLazy +import java.text.SimpleDateFormat +import java.util.Locale + +class MangaBuff : ParsedHttpSource() { + override val baseUrl = "https://mangabuff.ru" + override val lang = "ru" + override val name = "MangaBuff" + override val supportsLatest = true + + override val client = network.cloudflareClient.newBuilder() + .addInterceptor(::tokenInterceptor) + .build() + + private val json: Json by injectLazy() + + // From Akuma - CSRF token + private var storedToken: String? = null + + private fun tokenInterceptor(chain: Interceptor.Chain): Response { + val request = chain.request() + + if (request.method == "POST" && request.header("X-CSRF-TOKEN") == null) { + val newRequest = request.newBuilder() + val token = getToken() + val response = chain.proceed( + newRequest + .addHeader("X-CSRF-TOKEN", token) + .build(), + ) + + if (response.code == 419) { + response.close() + storedToken = null // reset the token + val newToken = getToken() + return chain.proceed( + newRequest + .addHeader("X-CSRF-TOKEN", newToken) + .build(), + ) + } + + return response + } + + val response = chain.proceed(request) + + if (response.header("Content-Type")?.contains("text/html") != true) { + return response + } + + storedToken = Jsoup.parse(response.peekBody(Long.MAX_VALUE).string()) + .selectFirst("head meta[name*=csrf-token]") + ?.attr("content") + + return response + } + + private fun getToken(): String { + if (storedToken.isNullOrEmpty()) { + val request = GET(baseUrl, headers) + client.newCall(request).execute().close() // updates token in interceptor + } + return storedToken!! + } + + // Popular + override fun popularMangaRequest(page: Int) = searchMangaRequest(page, "", SortFilter.POPULAR) + override fun popularMangaSelector() = searchMangaSelector() + override fun popularMangaFromElement(element: Element) = searchMangaFromElement(element) + override fun popularMangaNextPageSelector() = searchMangaNextPageSelector() + + // Latest + override fun latestUpdatesRequest(page: Int) = searchMangaRequest(page, "", SortFilter.LATEST) + override fun latestUpdatesSelector() = searchMangaSelector() + override fun latestUpdatesFromElement(element: Element) = searchMangaFromElement(element) + override fun latestUpdatesNextPageSelector() = searchMangaNextPageSelector() + + // Search + override fun fetchSearchManga( + page: Int, + query: String, + filters: FilterList, + ): Observable { + if (!query.startsWith(SEARCH_PREFIX)) { + return super.fetchSearchManga(page, query, filters) + } + + val request = GET("$baseUrl/manga/${query.substringAfter(SEARCH_PREFIX)}") + return client.newCall(request).asObservableSuccess().map { response -> + val details = mangaDetailsParse(response) + details.setUrlWithoutDomain(request.url.toString()) + MangasPage(listOf(details), false) + } + } + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + if (query.isNotEmpty()) { + val url = "$baseUrl/search".toHttpUrl().newBuilder().apply { + addQueryParameter("q", query) + if (page != 1) addQueryParameter("page", page.toString()) + }.build() + + return GET(url, headers) + } + + val url = "$baseUrl/manga".toHttpUrl().newBuilder().apply { + (filters.find { it is GenreFilter } as? GenreFilter)?.let { filter -> + filter.included?.forEach { addQueryParameter("genres[]", it) } + } + (filters.find { it is TypeFilter } as? TypeFilter)?.let { filter -> + filter.included?.forEach { addQueryParameter("type_id[]", it) } + } + (filters.find { it is TagFilter } as? TagFilter)?.let { filter -> + filter.included?.forEach { addQueryParameter("tags[]", it) } + } + (filters.find { it is StatusFilter } as? StatusFilter)?.let { filter -> + filter.checked?.forEach { addQueryParameter("status_id[]", it) } + } + (filters.find { it is AgeFilter } as? AgeFilter)?.let { filter -> + filter.checked?.forEach { addQueryParameter("age_rating[]", it) } + } + (filters.find { it is RatingFilter } as? RatingFilter)?.let { filter -> + filter.checked?.forEach { addQueryParameter("rating[]", it) } + } + (filters.find { it is YearFilter } as? YearFilter)?.let { filter -> + filter.checked?.forEach { addQueryParameter("year[]", it) } + } + (filters.find { it is ChapterCountFilter } as? ChapterCountFilter)?.let { filter -> + filter.checked?.forEach { addQueryParameter("chapters[]", it) } + } + (filters.find { it is GenreFilter } as? GenreFilter)?.let { filter -> + filter.excluded?.forEach { addQueryParameter("without_genres[]", it) } + } + (filters.find { it is TypeFilter } as? TypeFilter)?.let { filter -> + filter.excluded?.forEach { addQueryParameter("without_type_id[]", it) } + } + (filters.find { it is TagFilter } as? TagFilter)?.let { filter -> + filter.excluded?.forEach { addQueryParameter("without_tags[]", it) } + } + (filters.find { it is SortFilter } as? SortFilter)?.let { filter -> + addQueryParameter("sort", filter.selected) + } + if (page != 1) addQueryParameter("page", page.toString()) + }.build() + + return GET(url, headers) + } + + override fun searchMangaSelector() = ".cards .cards__item" + + override fun searchMangaFromElement(element: Element) = SManga.create().apply { + setUrlWithoutDomain(element.selectFirst("a")!!.absUrl("href")) + title = element.selectFirst(".cards__name")!!.text() + + val slug = "$baseUrl$url".toHttpUrl().pathSegments.last() + thumbnail_url = "$baseUrl/img/manga/posters/$slug.jpg" + } + + override fun searchMangaNextPageSelector() = + ".pagination .pagination__button--active + li:not(:last-child)" + + // Details + override fun mangaDetailsParse(document: Document) = SManga.create().apply { + title = document.selectFirst("h1, .manga__name, .manga-mobile__name")!!.text() + + description = buildString { + document + .selectFirst(".manga__description") + ?.text() + ?.also { append(it) } + + document // rating% + .selectFirst(".manga__rating") + ?.text() + ?.toDoubleOrNull() + ?.let { it / 10.0 } + ?.also { + if (isNotEmpty()) append("\n\n") + append(String.format(Locale("ru"), "Рейтинг: %.0f%%", it * 100)) + } + + document // views + .selectFirst(".manga__views") + ?.text() + ?.replace(" ", "") + ?.toIntOrNull() + ?.also { + if (isNotEmpty()) append("\n\n") + append(String.format(Locale("ru"), "Просмотров: %,d", it)) + } + + document // favorites + .selectFirst(".manga") + ?.attr("data-fav-count") + ?.takeIf { it.isNotEmpty() } + ?.toIntOrNull() + ?.also { + if (isNotEmpty()) append("\n\n") + append(String.format(Locale("ru"), "Избранное: %,d", it)) + } + + document // alternative names + .select(".manga__name-alt > span, .manga-mobile__name-alt > span") + .eachText() + .takeIf { it.isNotEmpty() } + ?.also { + if (isNotEmpty()) append("\n\n") + append("Альтернативные названия:\n") + append(it.joinToString("\n") { "• $it" }) + } + } + + genre = buildList { + addAll(document.select(".manga__middle-links > a:not(:last-child)").eachText()) + addAll(document.select(".manga-mobile__info > a:not(:last-child)").eachText()) + addAll(document.select(".tags > .tags__item").eachText()) + }.takeIf { it.isNotEmpty() }?.joinToString() + + status = document + .select(".manga__middle-links > a:last-child, .manga-mobile__info > a:last-child") + .text() + .parseStatus() + + thumbnail_url = document + .selectFirst(".manga__img img, img.manga-mobile__image") + ?.absUrl("src") + } + + // Chapters + override fun chapterListSelector() = "a.chapters__item" + + override fun chapterFromElement(element: Element) = SChapter.create().apply { + setUrlWithoutDomain(element.absUrl("href")) + name = element.select(".chapters__volume, .chapters__value, .chapters__name").text() + date_upload = runCatching { + dateFormat.parse(element.selectFirst(".chapters__add-date")!!.text())!!.time + }.getOrDefault(0L) + } + + override fun chapterListParse(response: Response): List { + val document = Jsoup.parse(response.peekBody(Long.MAX_VALUE).string()) + + val chapters = super.chapterListParse(response) + + // HTML only shows 100 entries. If this class is present it will load more via API + if (document.selectFirst(".load-chapters-trigger") == null) { + return chapters + } + + val mangaId = document.selectFirst(".manga")?.attr("data-id") + ?: throw Exception("Не удалось найти ID манги") + + val form = FormBody.Builder() + .add("manga_id", mangaId) + .build() + + val moreChapters = client + .newCall(POST("$baseUrl/chapters/load", headers, form)) + .execute() + .parseAs() + .content + .let(Jsoup::parseBodyFragment) + .select(chapterListSelector()) + .map(::chapterFromElement) + + return chapters + moreChapters + } + + // Pages + override fun imageUrlParse(document: Document) = throw UnsupportedOperationException() + + override fun pageListParse(document: Document): List { + return document.select(".reader__pages img").mapIndexed { i, img -> + Page(i, document.location(), img.imgAttr()) + } + } + + // Other + override fun getFilterList() = FilterList( + Filter.Header("ПРИМЕЧАНИЕ: Игнорируется, если используется поиск по тексту!"), + Filter.Separator(), + SortFilter(), + GenreFilter(), + TypeFilter(), + TagFilter(), + StatusFilter(), + AgeFilter(), + RatingFilter(), + YearFilter(), + ChapterCountFilter(), + ) + + private fun String.parseStatus(): Int = when (this.lowercase()) { + "завершен" -> SManga.COMPLETED + "продолжается" -> SManga.ONGOING + "заморожен" -> SManga.ON_HIATUS + "заброшен" -> SManga.CANCELLED + else -> SManga.UNKNOWN + } + + private fun Element.imgAttr(): String = when { + hasAttr("data-src") -> absUrl("data-src") + else -> absUrl("src") + } + + private inline fun Response.parseAs(): T = + json.decodeFromString(body.string()) + + @Serializable + class WrappedHtmlDto( + val content: String, + ) + + companion object { + const val SEARCH_PREFIX = "slug:" + private val dateFormat = SimpleDateFormat("dd.MM.yyyy", Locale.ROOT) + } +} diff --git a/src/ru/mangabuff/src/eu/kanade/tachiyomi/extension/ru/mangabuff/MangaBuffFilters.kt b/src/ru/mangabuff/src/eu/kanade/tachiyomi/extension/ru/mangabuff/MangaBuffFilters.kt new file mode 100644 index 000000000..2604195cf --- /dev/null +++ b/src/ru/mangabuff/src/eu/kanade/tachiyomi/extension/ru/mangabuff/MangaBuffFilters.kt @@ -0,0 +1,289 @@ +package eu.kanade.tachiyomi.extension.ru.mangabuff + +import eu.kanade.tachiyomi.source.model.Filter +import eu.kanade.tachiyomi.source.model.FilterList + +abstract class SelectFilter( + name: String, + private val options: List>, + defaultValue: String? = null, +) : Filter.Select( + name, + options.map { it.first }.toTypedArray(), + options.indexOfFirst { it.second == defaultValue }.takeIf { it != -1 } ?: 0, +) { + val selected get() = options[state].second.takeUnless { it.isEmpty() } +} + +class CheckBoxFilter(name: String, val value: String) : Filter.CheckBox(name) + +abstract class CheckBoxGroup( + name: String, + options: List>, +) : Filter.Group( + name, + options.map { CheckBoxFilter(it.first, it.second) }, +) { + val checked get() = state.filter { it.state }.map { it.value }.takeUnless { it.isEmpty() } +} + +class TriStateFilter(name: String, val value: String) : Filter.TriState(name) + +abstract class TriStateGroup( + name: String, + private val options: List>, +) : Filter.Group( + name, + options.map { TriStateFilter(it.first, it.second) }, +) { + val included get() = state.filter { it.isIncluded() }.map { it.value }.takeUnless { it.isEmpty() } + val excluded get() = state.filter { it.isExcluded() }.map { it.value }.takeUnless { it.isEmpty() } +} + +class SortFilter(defaultOrder: String? = null) : SelectFilter("Сортировать по", sort, defaultOrder) { + companion object { + private val sort = listOf( + Pair("Популярные", "views"), + Pair("Обновленные", "updated_at"), + Pair("По рейтингу", "rating"), + Pair("По новинкам", "created_at"), + ) + + val POPULAR = FilterList(SortFilter("views")) + val LATEST = FilterList(SortFilter("updated_at")) + } +} + +class GenreFilter : TriStateGroup("Жанр", genres) { + companion object { + private val genres = listOf( + Pair("Арт", "1"), + Pair("Боевик", "2"), + Pair("Боевые искусства", "4"), + Pair("Вампиры", "5"), + Pair("Гарем", "6"), + Pair("Гендерная интрига", "7"), + Pair("Героическое фэнтези", "8"), + Pair("Детектив", "9"), + Pair("Дзёсэй", "10"), + Pair("Додзинси", "11"), + Pair("Драма", "12"), + Pair("Ёнкома", "39"), + Pair("Игра", "18"), + Pair("История", "13"), + Pair("Киберпанк", "21"), + Pair("Кодомо", "40"), + Pair("Комедия", "14"), + Pair("Махо-сёдзе", "20"), + Pair("Меха", "15"), + Pair("Мистика", "16"), + Pair("Научная фантастика", "17"), + Pair("Повседневность", "19"), + Pair("Постапокалиптика", "22"), + Pair("Приключения", "24"), + Pair("Психология", "25"), + Pair("Романтика", "26"), + Pair("Самурайский боевик", "28"), + Pair("Сверхъестественное", "30"), + Pair("Сёдзё", "31"), + Pair("Сёнэн", "29"), + Pair("Спорт", "32"), + Pair("Сэйнэн", "33"), + Pair("Трагедия", "23"), + Pair("Триллер", "34"), + Pair("Ужасы", "35"), + Pair("Фантастика", "27"), + Pair("Фэнтези", "36"), + Pair("Школа", "3"), + Pair("Эротика", "37"), + Pair("Этти", "38"), + ) + } +} + +class TypeFilter : TriStateGroup("Тип", types) { + companion object { + private val types = listOf( + Pair("Манга", "1"), + Pair("OEL-манга", "2"), + Pair("Манхва", "3"), + Pair("Маньхуа", "4"), + Pair("Сингл", "5"), + Pair("Руманга", "6"), + Pair("Комикс западный", "7"), + ) + } +} + +class TagFilter : TriStateGroup("теги", tags) { + companion object { + private val tags = listOf( + Pair("Азартные игры", "7759"), + Pair("Алхимия", "7750"), + Pair("Амнезия / Потеря памяти", "7776"), + Pair("амнезия/потеря памяти", "7780"), + Pair("Ангелы", "7744"), + Pair("Антигерой", "7691"), + Pair("Антиутопия", "7755"), + Pair("Апокалипсис", "7774"), + Pair("Армия", "7767"), + Pair("Артефакты", "7727"), + Pair("Боги", "7679"), + Pair("Бои на мечах", "7700"), + Pair("Борьба за власть", "7734"), + Pair("Брат и сестра", "7725"), + Pair("Будущее", "7756"), + Pair("в первый раз", "7695"), + Pair("Ведьма", "7772"), + Pair("Вестерн", "7771"), + Pair("Видеоигры", "7704"), + Pair("Виртуальная реальность", "7760"), + Pair("Владыка демонов", "7743"), + Pair("Военные", "7676"), + Pair("Война", "7770"), + Pair("Волшебники / маги", "7680"), + Pair("Волшебные существа", "7721"), + Pair("Воспоминания из другого мира", "7713"), + Pair("Выживание", "7739"), + Pair("ГГ женщина", "7702"), + Pair("ГГ имба", "7709"), + Pair("ГГ мужчина", "7681"), + Pair("Геймеры", "7758"), + Pair("Гильдии", "7762"), + Pair("Глупый ГГ", "7718"), + Pair("Гоблины", "7766"), + Pair("Горничные", "7753"), + Pair("Гяру", "7773"), + Pair("Демоны", "7682"), + Pair("Драконы", "7751"), + Pair("Дружба", "7703"), + Pair("Жестокий мир", "7728"), + Pair("Жестокость", "7784"), + Pair("Животные компаньоны", "7752"), + Pair("Завоевание мира", "7748"), + Pair("Зверолюди", "7707"), + Pair("Злые духи", "7683"), + Pair("Зомби", "7726"), + Pair("Игровые элементы", "7723"), + Pair("Империи", "7711"), + Pair("Квесты", "7735"), + Pair("Космос", "7749"), + Pair("Кулинария", "7740"), + Pair("Культивация", "7731"), + Pair("Легендарное оружие", "7714"), + Pair("Лоли", "7791"), + Pair("Магическая академия", "7684"), + Pair("Магия", "7677"), + Pair("Мафия", "7690"), + Pair("Медицина", "7761"), + Pair("Месть", "7741"), + Pair("Монстр Девушки", "7719"), + Pair("Монстродевушки", "7720"), + Pair("Монстры", "7685"), + Pair("Музыка", "7675"), + Pair("Навыки / способности", "7715"), + Pair("Наёмники", "7764"), + Pair("Насилие / жестокость", "7692"), + Pair("Нежить", "7686"), + Pair("Ниндзя", "7732"), + Pair("Обмен телами", "7757"), + Pair("Обратный Гарем", "7705"), + Pair("Огнестрельное оружие", "7777"), + Pair("Офисные Работники", "7754"), + Pair("Пародия", "7745"), + Pair("Пираты", "7724"), + Pair("Подземелья", "7722"), + Pair("Политика", "7736"), + Pair("Полиция", "7693"), + Pair("Преступники / Криминал", "7733"), + Pair("Призраки / Духи", "7687"), + Pair("Путешествие во времени", "7710"), + Pair("Путешествия во времени", "7730"), + Pair("Рабы", "7765"), + Pair("Разумные расы", "7688"), + Pair("Ранги силы", "7746"), + Pair("Реинкарнация", "7706"), + Pair("Роботы", "7769"), + Pair("Рыцари", "7701"), + Pair("Самураи", "7698"), + Pair("Система", "7737"), + Pair("Скрытие личности", "7708"), + Pair("Спасение мира", "7747"), + Pair("Спортивное тело", "7742"), + Pair("Средневековье", "7699"), + Pair("Стимпанк", "7781"), + Pair("Супергерои", "7775"), + Pair("Традиционные игры", "7768"), + Pair("Умный ГГ", "7716"), + Pair("Учитель / ученик", "7717"), + Pair("Философия", "7729"), + Pair("Хикикомори", "7763"), + Pair("Холодное оружие", "7738"), + Pair("Шантаж", "7778"), + Pair("Эльфы", "7678"), + Pair("юные", "7696"), + Pair("Якудза", "7689"), + Pair("Яндере", "7779"), + Pair("Япония", "7674"), + ) + } +} + +class StatusFilter : CheckBoxGroup("Статус", statuses) { + companion object { + private val statuses = listOf( + Pair("Завершен", "1"), + Pair("Продолжается", "2"), + Pair("Заморожен", "3"), + Pair("Заброшен", "4"), + ) + } +} + +class AgeFilter : CheckBoxGroup("Возрастной рейтинг", ages) { + companion object { + private val ages = listOf( + Pair("18+", "18+"), + Pair("16+", "16+"), + ) + } +} + +class RatingFilter : CheckBoxGroup("Рейтинг", ratings) { + companion object { + private val ratings = listOf( + Pair("Рейтинг 50%+", "5"), + Pair("Рейтинг 60%+", "6"), + Pair("Рейтинг 70%+", "7"), + Pair("Рейтинг 80%+", "8"), + Pair("Рейтинг 90%+", "9"), + ) + } +} + +class YearFilter : CheckBoxGroup("Год выпуска", years) { + companion object { + private val years = listOf( + Pair("2024", "2024"), + Pair("2023", "2023"), + Pair("2022", "2022"), + Pair("2021", "2021"), + Pair("2020", "2020"), + Pair("2019", "2019"), + Pair("2018", "2018"), + Pair("2017", "2017"), + Pair("2016", "2016"), + ) + } +} + +class ChapterCountFilter : CheckBoxGroup("Колличество глав", chapters) { + companion object { + private val chapters = listOf( + Pair("<50", "0"), + Pair("50-100", "50"), + Pair("100-200", "100"), + Pair(">200", "200"), + ) + } +} diff --git a/src/ru/mangabuff/src/eu/kanade/tachiyomi/extension/ru/mangabuff/MangaBuffUrlActivity.kt b/src/ru/mangabuff/src/eu/kanade/tachiyomi/extension/ru/mangabuff/MangaBuffUrlActivity.kt new file mode 100644 index 000000000..65d0707df --- /dev/null +++ b/src/ru/mangabuff/src/eu/kanade/tachiyomi/extension/ru/mangabuff/MangaBuffUrlActivity.kt @@ -0,0 +1,36 @@ +package eu.kanade.tachiyomi.extension.ru.mangabuff + +import android.app.Activity +import android.content.ActivityNotFoundException +import android.content.Intent +import android.os.Bundle +import android.util.Log +import kotlin.system.exitProcess + +class MangaBuffUrlActivity : Activity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val pathSegments = intent?.data?.pathSegments + + if (pathSegments != null && pathSegments.size > 1) { + val slug = pathSegments[1] + + val mainIntent = Intent().apply { + action = "eu.kanade.tachiyomi.SEARCH" + putExtra("query", "${MangaBuff.SEARCH_PREFIX}$slug") + putExtra("filter", packageName) + } + + try { + startActivity(mainIntent) + } catch (e: ActivityNotFoundException) { + Log.e("MangaBuffUrlActivity", e.toString()) + } + } else { + Log.e("MangaBuffUrlActivity", "could not parse uri from intent $intent") + } + + finish() + exitProcess(0) + } +}