Initial commit

This commit is contained in:
FourTOne5
2024-01-09 04:12:39 +06:00
commit 600c345dfe
8593 changed files with 150590 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
package eu.kanade.tachiyomi.extension.tr.hentaizm
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.network.asObservable
import eu.kanade.tachiyomi.source.model.MangasPage
import okhttp3.FormBody
import okhttp3.Interceptor
import okhttp3.Response
import rx.Observable
class HentaiZM : Madara(
"HentaiZM",
"https://manga.hentaizm.fun",
"tr",
) {
override val client by lazy {
super.client.newBuilder().addInterceptor(::loginInterceptor).build()
}
private fun loginInterceptor(chain: Interceptor.Chain): Response {
val request = chain.request()
val url = request.url.toString()
if (baseUrl !in url) {
return chain.proceed(request)
}
val cookies = client.cookieJar.loadForRequest(request.url)
// Only log-in when necessary.
if (cookies.any { it.name.startsWith("wordpress_logged_in_") }) {
return chain.proceed(request)
}
// A login is required in order to load thumbnails and pages.
val body = FormBody.Builder()
.add("log", "demo") // Default user/password, provided in
.add("pwd", "demo") // the source itself.
.add("redirect_to", "$baseUrl/wp-admin/")
.add("rememberme", "forever")
.build()
val postUrl = "$baseUrl/wp-login.php"
val headers = headersBuilder()
.set("Origin", baseUrl)
.set("Referer", postUrl)
.build()
super.client.newCall(POST(postUrl, headers, body)).execute().close()
return chain.proceed(request)
}
// ============================== Popular ===============================
// Yep, asObservable instead of asObservableSuccess, because this source
// returns HTTP 404 after the first page even in the browser, while working
// perfectly.
// TODO: Replace with getPopularManga(page) when extensions-lib v1.5 gets released.
override fun fetchPopularManga(page: Int): Observable<MangasPage> {
return client.newCall(popularMangaRequest(page))
.asObservable()
.map(::popularMangaParse)
}
// =============================== Latest ===============================
// Same situation as above.
// TODO: Replace with getLatestUpdates(page) when extensions-lib v1.5 gets released.
override fun fetchLatestUpdates(page: Int): Observable<MangasPage> {
return client.newCall(latestUpdatesRequest(page))
.asObservable()
.map(::latestUpdatesParse)
}
}