From ca55ea1d3b0f8aa5a5b305dbdd63c8fef93ef363 Mon Sep 17 00:00:00 2001 From: Chopper <156493704+choppeh@users.noreply.github.com> Date: Fri, 11 Oct 2024 08:17:14 -0300 Subject: [PATCH] Add MangaLivre (#5447) --- src/pt/mangalivre/build.gradle | 8 + .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 4781 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2469 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 7435 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 14713 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 23837 bytes .../extension/pt/mangalivre/MangaLivre.kt | 150 ++++++++++++++++++ .../extension/pt/mangalivre/MangaLivreDto.kt | 56 +++++++ 8 files changed, 214 insertions(+) create mode 100644 src/pt/mangalivre/build.gradle create mode 100644 src/pt/mangalivre/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/pt/mangalivre/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/pt/mangalivre/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/pt/mangalivre/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/pt/mangalivre/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/pt/mangalivre/src/eu/kanade/tachiyomi/extension/pt/mangalivre/MangaLivre.kt create mode 100644 src/pt/mangalivre/src/eu/kanade/tachiyomi/extension/pt/mangalivre/MangaLivreDto.kt diff --git a/src/pt/mangalivre/build.gradle b/src/pt/mangalivre/build.gradle new file mode 100644 index 000000000..e2f939df3 --- /dev/null +++ b/src/pt/mangalivre/build.gradle @@ -0,0 +1,8 @@ +ext { + extName = 'Manga Livre' + extClass = '.MangaLivre' + extVersionCode = 1 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" diff --git a/src/pt/mangalivre/res/mipmap-hdpi/ic_launcher.png b/src/pt/mangalivre/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..7f7a2fd61c682cf820cf2a88a6d52678a2fda6e7 GIT binary patch literal 4781 zcmV;e5>oAnP)t5X;c6AOcIRAv}6+gfB%P@=R7mH_uO;t_nz;2zjEC?XU z5s;k2$29`y0CJ-t=Kwkfkar|RHxHv!^6YZ zRaaMECkAjPh^u2~S$L<{=;%6vgM)X`DyHf6dZ(J?3Lr&%eEgKg#>Q3DoZyZVcnXLo z{dx*u$FX}lhD0JU`1||cMeEqa@r;hN$QeLlzbYakVj(%_NnU`$nOS)PLSOXhDJY#5 z+Colx#%MIY%4=+P#7E8mlCrZVC@APD+UWvMIHxZ_@Mg?z0Qed$ete?CeW` zmJy&w+X3n;GdoK_*u`)F+;Rf+3=bI`k+m}o5&-!Tprrz!&cJk@$QuD2f!{t~H?+W+ z@Sf}!06oi&`fdY6FSd*}`iQ6e)7!wEC4g46X;AM2% z)VlQqIB}kw3m~93TP$bBIBNho@?zqmB2q>`84`}dom-s>C=LYoPe4TC0A&359c zYN2t72#e{5-*)e?110zIK~sI*AApi_zkg^1lrkyGPoA(JQ!ACw`uRg;G(kmJ0#s_` z^Sp}YCRlq=oATPkoB}lAYA6N`$LSANz-nynvicIK3{oEzhTS$F)HoES?nDcPwOPz|FcPl15n&fyf#PpI#HoEd(BD4*Gbc{M z%&9jb``fQko1Y7RnF70Ns<0+68wP4<`^F+4L}MxAjM;UpGVzfZ7L@NTi6H z^#GdtC&94geY6zjQZP|-YTcwVIn=>n(2bsmfC*QkJp3w(@z`ZoB32g+l}?Ma z)P1lT3<%ZuVrNwuJ~^HZqtyaox}!&r#)1V4kdcvrk3aqxNlAlHUS5W@v^1F7K^k2&V5gqLd&74ju{r+a86UeL^%!T!Wke4L|k(-;-cL24kr7mtDbhrN%25m5j(E>jTRr1oKFjbZz=DJz1PMnHH5-YVG zy5mQX_x3Z8%9TiX_!%^Z_JgUun(Q48%P-%da?^W=yy13OM*j)s(vy%!^@HWmUYHK< zM%bK3U_H7Y6U*{2UZKLi{2aWWbp#5IdwFy$6x3v!#DB~!@xqHQ!$R$= ztE)p9&8n`p20C3J4jnp#RjdAK=cG=Nws#sto9<#_!9y>A`et&FuND?_3uNRZ>Gq8< zWThkUwgqSj2!UBfH_nCiOZ^@v{=Evp6Rslf%z-sO8>YhJz@+K0rtL(<#?^?ua}msO zNvK-)212gC1xA{p`Pd=&4<85V!5x?r7J#|eUV~R(eFblA{Tjn*o{tY64(cHRl44hN z1>Vj*hF9Ns14GUmfo6KN)6^beU)kAN@>`kCGZ(}F&Z<|AR920UQ7+i7ym*{b_POkeF$>8?B=bX!a`uBf0_o_ zZwFAm@g4Mk;3=5>v?yM=464v@XlFkFlSBpu0Wg!JW(TS4qkOIZ=pgZyygtXW7)Pe)j27$Tyg>_Dh|lu)v*erGjOQ&VAS^N@DFY&Fx~ z0qBeeBN0Yic@t!lZvg5lq5tM1Xs){zW^#{|93m?(Le=K=2)_3TUV#MFuP=t*;PauL zGzF@vQq&zi09<$(EPgtuau1_o(;Dy9S`OkU~DzgbiuPi{s9Da|ENB!sT0x<(%j2!@3Xbe;ZnW*}D10o-O4hEWD>Dt#| z;Vr75QR8{LQ-bgrx1(gk+t8DT7LB?HmuLeZrPgLKdOyi{X-rTkd=(08pqo#+VJZ>_ z4#Ji#n{hDhAm+`x7m0}j?b@^X%T4&`qYq&)h;*w<#NKlaas-f!!C&+(^I;o$A$&3q zAotyu5zT;3I%yhO_Wy+P&Fc_y%`C_+xd!T@e6$?cf$%A_(U6{s>~(KKLV;8<35dRP zA!MfuQM>0`gipH-#S9oLe*VTDbjrv^ra@`}X~6=NVo*CQX`*_=H4MRFvbx4eRY=I>;q^2cY(W6&gRp z+_e~pONMR7CKPV@7@DY9B>m+vWUYA(jYTIAfB#dk4HyRVo~5B<*{YX_seAP;5|ZBunQ|8Mz&019%I*o+PJ_OL+705pgxNtnV1NkPH5D!M-d zN(ElbI)qZ1AMdySAz2kkvJd+!32sd_J!e<#@s5Lp26gsgN^KAl8R1I#S+!vWN{;Ne zN6xWK6$(;!L8|mY^1>Hjp(iQ&Y%TOBbM23W2!JCQ_0EV-Mt*HIex!MZlVdF0U&0v4 zNb+o71QmHhMv`t}T;&rL2W4bGh77z_M^2S7A+`H4I$FnKt= zhYu>U4x^cTAvOWhoa7<6DKZ`wsRWPg{Sk{sTtw4RPYK7$@GR_%}N zl@%x-IR>iHmqNyImE<(B7#0!#RF~r9rnNw2DZ*#c)LLCu>o zVJ_yxmZ>HZ^dEOQe5Wx+D#$`1Gks%y?HPb{1lErlQp1F?g)4jy1I|b9z8i;2iZK1T zr4&hmxygfZGZWN(b$UFPlY!{F{sw7Ge+H2&P<{AU`&c3g4xD)(EMQ!X{#9#pp;wgXG}sjefSrg+W0S+n;PxM z)HI8y>8iB^;XS(a{Z-}kO3AqQf{Ream7lleQ-rWQ@z$8}sBLJ%vW!E>5lQjFR~cie zQ1HSdFf;Fy(Mg0)y%j#p>-0Zufj;vnLhoCOW_qqhM%@yEFXwzJV*@pAI~pp>U1?A6 zXpk#VIxdATXN6MYG4!_9COM8W%^#U}0Q} zJ#&Bl_+ebj{AzMg7&eht{*iqYQfgAag)h^cn^ExQQUu*_2W-A9mI*>82cF)r68&&V2%btF0X;AHNd|tWsaXRU1wTgtwItPFYRWN|g3IZ`7ZcnxCYm~ueaJme zKvq$N(ruq3c+SHhO~aJF2Nm>?rn)M`(9~oXUk%C8eK2JmWFTopV_7jOGSl4w)4sMn zkAsAXbq2_pHVJ@+j2Vk77cRlJoMMva+E&is%F?&szgT*`H#z~w40U*c1YN}#NXc_v zx?loEFgiDx&G2EovW>@IOy37H&kLV;Ei}_^hcT4_C^aHx-rr!R+i#)pmFr$-TB1kF zk~d+Aj6=oRms;l|K=$$nBW^1-%7e{&fIKy^*kL1Z=km9p4%Fe@`S&1u?;gQS{Ig;{ zwP6?|shZ7kNvpZdJYhy zP>;Qs(4d6zlX3HNFC!o{7@u$aZ|F(3KGcM!gF7*fwVshA*gWQItB$3ksjc)mIW``P z5{Hqvk0HBJk3;39ZPG|^-h)rT7(WWN8`LzN zhF`a1Qhg;xFvZwjdJ11sgUoGrI3gGg-#cO~Rvg%ax|S9S*!onih@2BHy&M*e7G(sd zu`Qm`ghnEaCUTR zkAhj#k+BKZY2_XYN+1MR_;FQzD74=?+pFtXkU$Q>uSI_~J0C;PhGRHVcT7UWVU zOhV4DyU?WP?V=9%#oQ53hvU5ikf)P7>*wkI?t&#Uc43Yd&pehR+LZNU<(vD2b z*{XRWbo;qoG{u2dbnN5l!u5%XIRnVuMV$>3v$IUkOsX?h-fK{IE~GEOaRf$puBp%B zAfZ9s@nYREF=ra!i8=NnIN~zA(;!b%jgH{-h8Fd))^xmF?*a03#oYDt)RUb>aJ~0G0uDf{d>P5C! z*t+#Pl&CrJwzuL2KG(OL-viyvAkxhK>@^Y`MS2EQ+A%=0# zJA4dpVo!O;9dPc<(@Ox{ou0-Hx3HaL6J^XU@6x+^saL%I?a!7-klth)#_uXNp-Rg|n~FB0siBwh7dvf&BDgbNRl# zyB`?vQb2D`7aAhoZq8-f%_bg06W|E#argrR?tWN6kh9PvO&eI^yLhnF-Fe;!(U<26 zfCSG7kOU~A3C(G}73*O0L{I^UXyVmy0oZ@?Z+Nu-W`_Wzy*d5W1%a0*0JZmP2gcKL z`cf0T8M_@MkAC3fKV4XFfb!_va{#%4=^Q}k0P@I^oOb#j(?tL7zbvhl00000NkvXX Hu0mjf#B~Vg literal 0 HcmV?d00001 diff --git a/src/pt/mangalivre/res/mipmap-mdpi/ic_launcher.png b/src/pt/mangalivre/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..ec492d976c7797b54779fbf48eefadd34d09a07a GIT binary patch literal 2469 zcmV;W30n4vP)yp)wso2 zqn-+Co4T~dy(ezbEXHa?hr ze#+@&a{=yO&%ayt@%cZ{e5_v}5ZskYrQ7Uw`@G7^N<&Kq-Ux6B2?;9<2E)uiFW^gn z51Bx7g@%T%tEs6;r*T$K65a?XqN1XTZ8n?6m*v|7P$0nWe)qdXB9Y!=vBc7Srouf} z@Z#T$kXozNR{gi!CJ=Cc#vyms((~2+2neY&j0jYC^YcJ2_ZJ`Sp&Aj0pm#9ivY_^= zfQtZK6)hF;2EH|fI)uQ3s?b(qzR2=cfKq6a0{-0Me;wqlCJ;ygf0k~m3f`XQO+c+y z2UMWFW5PY3zgVF@enIRe(3FG490WoEtY)*@YnoPLNl*}5nqf8?UH3#{F=!2O-Q%-j zvk65)A#8TLYka#9P^nbS6i{~V0%52M)www?0-nJ7jh=vLFzmmwAivFlbb8g2I$*mfo0o-8c&X*lD$ z!Ej_J%=&w4oLCkNd2AwLo*#?c74N#1#t>Z>be-`&a^86zvBO3~UsVB1;Z-zN-a+!* zm8d&^5}`R?Bjec-h>VE9g`@4ivyZ6BfxD|*?n~VBh0}yOAq4a~Pkavnh$c#)F>1Dz_n{oHpKImpIfkhJm zfmDjh`O~1C{5x19b>O5NYCl^D-EZDQ+<`3^FOgyXiK8%+%jn4Z%ow@VRhaSCTNv~5 zD<~)^fYoY&km6$T;y>ZcnKPcQ#ZLi}ubBdIbC$!P)WS&tYTdRLA-@<2Q)FjA8U#o7 zQrI~OwBx3ucFz__UQ9#Hl3CDBoeRUc?;%U>2OBN?Ds43Sf4>(QBSv8Gv?+KoHUT3e zVjvZXG4s+HEZevd7cX6cQmvw(7C=miW6qqnQC-bSpQhMo9Ra3*kif8tVgfZR1A6M8OnAdjKss^~8veNfT-RjCd#1qnug{?#F&^a`KL(QeA$Z_(uxy4TaO~JuEwf(h2rvayU3)?G+XXOeSq@|QEkwWkYvir@5W0-z5SWY*+&B+Y zc^S%29S0XINB5T|q3Ya8n8`KnUN{Y>gZzg;Dq<2~xK-c+luCjAxF#IQN;L{;{n%%& z$K|V6Kr5}QU!_(Lv9mA_-BnubDanJ80+nqr`cg1oYp926*smyVf+1o+>#AVR z`37<1mZg0L(l(32neGdmcG$>JrH6Mj&wp?N?hGU+xlQE1c8jS=PJxJn?zu65{tk*M zqp<7Eq~7SQ3PbkwT+B-ugiH#|Q@4tUj0SHcCL_yeLc_!vF#mW0_UcMX1iyr(tOT{+ z9)xnr+i*72!I*auLUL1U{$-RO-`^5EdksGqlFQ{jYa!Pxaej%)-MG)9+u-4al1K&CVp5=ne#2#1D3*%r*9fIPI=fG530|oi(R&ur7rNzi1 z1vWe}1b2wYv5MRHAn7r@o^t}GLBkO=^d*#UUI8f?K$SWeRl7EWOGtvC-(YYSBZ4V? z8uo2Q@sWLPBM=-M>{9_Tfn9Ux2v&W08dsOjr69ECk5<|^rlbmorV7tfjg+B#1chYPc~k)2ZfHQ< ztV~!5VCD7=(7m^sGFmCh*33t@MVry^?E%zQmb-x4%Wk5cV!_A7F9w2wf_y5#7MfA( zwo&D#!sRPB5NfkP^N)3y6djB7AHK$20-K;zVRnzcSVW6oX#+b25g=v$DpXv^LGjK_ zh@b^fGj=-kCk{ao9RrE69vszG4ys(MzuJS6-CNp5KqiwlBj7okKqP`T^(old9>L*+ zgz6SqK`vs0elA33kvBNL`LewG{(}(+1lm1&Ah7-j1wwwmpC18L_5XA>nuILr>s8pyiy4DhIku00000NkvXXu0mjfd0d+v literal 0 HcmV?d00001 diff --git a/src/pt/mangalivre/res/mipmap-xhdpi/ic_launcher.png b/src/pt/mangalivre/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..fa44977fe3dc6c2b924b2e2f9dcb3aa6b52f2af2 GIT binary patch literal 7435 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 t;Gisf`=Bjl1=A literal 0 HcmV?d00001 diff --git a/src/pt/mangalivre/src/eu/kanade/tachiyomi/extension/pt/mangalivre/MangaLivre.kt b/src/pt/mangalivre/src/eu/kanade/tachiyomi/extension/pt/mangalivre/MangaLivre.kt new file mode 100644 index 000000000..d9241dd6d --- /dev/null +++ b/src/pt/mangalivre/src/eu/kanade/tachiyomi/extension/pt/mangalivre/MangaLivre.kt @@ -0,0 +1,150 @@ +package eu.kanade.tachiyomi.extension.pt.mangalivre + +import android.annotation.SuppressLint +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.interceptor.rateLimit +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.HttpSource +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.decodeFromStream +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Request +import okhttp3.Response +import uy.kohesive.injekt.injectLazy +import java.text.SimpleDateFormat + +class MangaLivre : HttpSource() { + + override val name = "Manga Livre" + + override val baseUrl = "https://mangalivre.one" + + override val lang = "pt-BR" + + override val supportsLatest = false + + private val json: Json by injectLazy() + + override val client = network.cloudflareClient.newBuilder() + .rateLimit(2) + .build() + + // ============================== Popular =============================== + + override fun popularMangaRequest(page: Int) = searchMangaRequest(page, "", FilterList()) + + override fun popularMangaParse(response: Response) = searchMangaParse(response) + + // ============================== Latest =============================== + + override fun latestUpdatesRequest(page: Int) = + throw UnsupportedOperationException() + + override fun latestUpdatesParse(response: Response) = + throw UnsupportedOperationException() + + // ============================== Search =============================== + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val url = "$API_URL/manga".toHttpUrl().newBuilder() + .addQueryParameter("per_page", "50") + .addQueryParameter("page", "$page") + .addQueryParameter("name", query) + .build() + return GET(url, headers) + } + + override fun searchMangaParse(response: Response): MangasPage { + val page = response.parseAs() + val mangas = page.mangas.map { + SManga.create().apply { + title = it.name + description = it.synopsis + thumbnail_url = "$CDN_URL/${it.photo}" + url = "/manga/slug/${it.slug}#${it.id}" + } + } + return MangasPage(mangas, page.hasNextPage()) + } + + // ============================== Details =============================== + + override fun getMangaUrl(manga: SManga): String { + val slug = manga.url + .substringAfterLast("/") + .removeComment() + return "$baseUrl/manga/$slug" + } + + override fun mangaDetailsRequest(manga: SManga) = + GET("$API_URL${manga.url.removeComment()}", headers) + + override fun mangaDetailsParse(response: Response): SManga { + val mangaDto = response.parseAs() + return SManga.create().apply { + title = mangaDto.name + description = mangaDto.synopsis + thumbnail_url = "$CDN_URL/${mangaDto.photo}" + genre = mangaDto.genre?.joinToString { it.value } + mangaDto.status?.let { + status = when (it.value) { + "Ativo" -> SManga.ONGOING + else -> SManga.UNKNOWN + } + } + url = "/manga/slug/${mangaDto.slug}#${mangaDto.id}" + } + } + + // ============================== Chapters =============================== + + override fun chapterListRequest(manga: SManga): Request { + val id = manga.url.substringAfterLast("#") + return GET("$API_URL/chapter/manga/all/$id", headers) + } + + override fun chapterListParse(response: Response): List { + return response.parseAs>().map { + SChapter.create().apply { + name = "${it.chapter} - ${it.title}" + date_upload = it.createdAt.toDate() + chapter_number = it.chapter.toFloat() + url = "/chapter/${it.id}" + } + } + } + + private fun String.toDate(): Long = dateFormat.parse(this)?.time ?: 0L + + // ============================== Pages =============================== + + override fun pageListRequest(chapter: SChapter) = GET("$API_URL${chapter.url}", headers) + + override fun pageListParse(response: Response): List { + return response.parseAs().pages.mapIndexed { index, page -> + Page(index, imageUrl = "$CDN_URL/${page.url}") + } + } + + override fun imageUrlParse(response: Response) = "" + + // ============================= Utilities ============================== + + private inline fun Response.parseAs(): T = use { + json.decodeFromStream(it.body.byteStream()) + } + + private fun String.removeComment() = this.substringBeforeLast("#") + + companion object { + const val API_URL = "https://api.mangalivre.one" + const val CDN_URL = "https://cdn.mangalivre.one" + + @SuppressLint("SimpleDateFormat") + val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'") + } +} diff --git a/src/pt/mangalivre/src/eu/kanade/tachiyomi/extension/pt/mangalivre/MangaLivreDto.kt b/src/pt/mangalivre/src/eu/kanade/tachiyomi/extension/pt/mangalivre/MangaLivreDto.kt new file mode 100644 index 000000000..6783d8612 --- /dev/null +++ b/src/pt/mangalivre/src/eu/kanade/tachiyomi/extension/pt/mangalivre/MangaLivreDto.kt @@ -0,0 +1,56 @@ +package eu.kanade.tachiyomi.extension.pt.mangalivre + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class MangaLivreDto( + @SerialName("data") + val mangas: List, + val path: String, + @SerialName("current_page") + val currentPage: Int, + @SerialName("last_page") + val lastPage: Int, +) { + fun hasNextPage(): Boolean = currentPage < lastPage +} + +@Serializable +data class MangaDto( + val id: Int, + val name: String, + val photo: String, + val slug: String, + val synopsis: String, + val status: Name?, + @SerialName("categories") + val genre: List?, +) + +@Serializable +data class Name( + @SerialName("name") + val value: String, +) + +@Serializable +data class ChapterDto( + val id: Int, + val title: String, + val chapter: String, + @SerialName("created_at") + val createdAt: String, +) + +@Serializable +data class MangaPageDto( + @SerialName("manga_pages") + val pages: List, +) + +@Serializable +data class PageDto( + @SerialName("page") + val url: String, +)