[RU closed]Risens Team (#15593)

[RU]Risens Team closed
This commit is contained in:
Eshlender 2023-03-06 02:42:55 +05:00 committed by GitHub
parent 0db9230fbd
commit 7d495942af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 0 additions and 159 deletions

View File

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="eu.kanade.tachiyomi.extension" />

View File

@ -1,12 +0,0 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlinx-serialization'
ext {
extName = 'Risens Team'
pkgNameSuffix = 'ru.risensteam'
extClass = '.RisensTeam'
extVersionCode = 4
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

View File

@ -1,145 +0,0 @@
package eu.kanade.tachiyomi.extension.ru.risensteam
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.network.asObservableSuccess
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.decodeFromString
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonArray
import kotlinx.serialization.json.JsonElement
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.contentOrNull
import kotlinx.serialization.json.int
import kotlinx.serialization.json.jsonArray
import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.Request
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.Response
import rx.Observable
import uy.kohesive.injekt.injectLazy
import java.text.ParseException
import java.text.SimpleDateFormat
import java.util.Locale
class RisensTeam : HttpSource() {
override val name = "Risens Team"
override val baseUrl = "https://risens.team"
override val lang = "ru"
override val supportsLatest = false
override val versionId: Int = 2
private val json: Json by injectLazy()
// Popular (source only returns manga sorted by latest)
override fun popularMangaRequest(page: Int): Request {
return GET("https://risens.team/api/title/list?type=1", headers)
}
private fun mangaFromJson(json: JsonElement): SManga {
return SManga.create().apply {
url = "${json.jsonObject["id"]!!.jsonPrimitive.int}/${json.jsonObject["furl"]!!.jsonPrimitive.content}"
title = json.jsonObject["title"]!!.jsonPrimitive.content
thumbnail_url = baseUrl + json.jsonObject["poster"]!!.jsonPrimitive.content
description = json.jsonObject["description"]!!.jsonPrimitive.contentOrNull
status = try { if (json.jsonObject["active"]!!.jsonPrimitive.int == 1) SManga.ONGOING else SManga.UNKNOWN } catch (_: Exception) { SManga.UNKNOWN }
}
}
override fun popularMangaParse(response: Response): MangasPage {
val mangas = json.decodeFromString<JsonArray>(response.body.string())
.map { json -> mangaFromJson(json) }
return MangasPage(mangas, false)
}
// Latest
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException("Not used")
override fun latestUpdatesParse(response: Response): MangasPage = throw UnsupportedOperationException("Not used")
// Search
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
val rbody =
"""{"queryString":"$query","limit":3}""".toRequestBody("application/json;charset=utf-8".toMediaTypeOrNull())
return POST("$baseUrl/api/title/search", headers, rbody)
}
override fun searchMangaParse(response: Response): MangasPage = popularMangaParse(response)
// Details
override fun fetchMangaDetails(manga: SManga): Observable<SManga> {
return client.newCall(apiMangaDetailsRequest(manga))
.asObservableSuccess()
.map { response ->
mangaDetailsParse(response).apply { initialized = true }
}
}
private fun apiMangaDetailsRequest(manga: SManga): Request {
return GET("$baseUrl/api/title/show/${manga.url.substringBefore("/")}")
}
override fun mangaDetailsRequest(manga: SManga): Request {
return GET("$baseUrl/title/${manga.url}")
}
override fun mangaDetailsParse(response: Response): SManga {
return mangaFromJson(json.decodeFromString<JsonObject>(response.body.string()))
}
// Chapters
override fun chapterListRequest(manga: SManga): Request = apiMangaDetailsRequest(manga)
override fun chapterListParse(response: Response): List<SChapter> {
return json.decodeFromString<JsonObject>(response.body.string())["entities"]!!.jsonArray.map { json ->
SChapter.create().apply {
url = json.jsonObject["id"]!!.jsonPrimitive.int.toString()
name = listOfNotNull(json.jsonObject["label"]!!.jsonPrimitive.contentOrNull, json.jsonObject["name"]!!.jsonPrimitive.contentOrNull).joinToString(" - ")
date_upload = json.jsonObject["updated_at"]!!.toDate()
}
}
}
private val simpleDateFormat by lazy {
SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault())
}
private fun JsonElement.toDate(): Long {
val date = this.jsonPrimitive.contentOrNull ?: return 0
return try {
simpleDateFormat.parse(date)?.time ?: 0
} catch (e: ParseException) {
0
}
}
// Pages
override fun pageListRequest(chapter: SChapter): Request {
return GET("$baseUrl/api/yandex/chapter/${chapter.url}", headers)
}
override fun pageListParse(response: Response): List<Page> {
return json.decodeFromString<JsonArray>(response.body.string())
.mapIndexed { i, json -> Page(i, "", json.jsonPrimitive.content) }
}
override fun imageUrlParse(response: Response): String = throw UnsupportedOperationException("Not used")
}