Convert OkruExtractor to shared lib (#944)
This commit is contained in:
25
lib/okru-extractor/build.gradle.kts
Normal file
25
lib/okru-extractor/build.gradle.kts
Normal file
@ -0,0 +1,25 @@
|
||||
plugins {
|
||||
id("com.android.library")
|
||||
kotlin("android")
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdk = AndroidConfig.compileSdk
|
||||
|
||||
defaultConfig {
|
||||
minSdk = AndroidConfig.minSdk
|
||||
targetSdk = AndroidConfig.targetSdk
|
||||
}
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly(libs.kotlin.stdlib)
|
||||
compileOnly(libs.okhttp)
|
||||
compileOnly(libs.aniyomi.lib)
|
||||
compileOnly(libs.jsoup)
|
||||
}
|
||||
// BUMPS: 0
|
2
lib/okru-extractor/src/main/AndroidManifest.xml
Normal file
2
lib/okru-extractor/src/main/AndroidManifest.xml
Normal file
@ -0,0 +1,2 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="eu.kanade.tachiyomi.lib.okruextractor" />
|
@ -0,0 +1,46 @@
|
||||
package eu.kanade.tachiyomi.lib.okruextractor
|
||||
|
||||
import eu.kanade.tachiyomi.animesource.model.Video
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.util.asJsoup
|
||||
import okhttp3.OkHttpClient
|
||||
|
||||
class OkruExtractor(private val client: OkHttpClient) {
|
||||
|
||||
private fun fixQuality(quality: String): String {
|
||||
val qualities = listOf(
|
||||
Pair("full", "1080p"),
|
||||
Pair("hd", "720p"),
|
||||
Pair("sd", "480p"),
|
||||
Pair("low", "360p"),
|
||||
Pair("lowest", "240p"),
|
||||
Pair("mobile", "144p")
|
||||
)
|
||||
return qualities.find { it.first == quality }?.second ?: quality
|
||||
}
|
||||
|
||||
fun videosFromUrl(url: String, prefix: String = "", fixQualities: Boolean = true): List<Video> {
|
||||
val document = client.newCall(GET(url)).execute().asJsoup()
|
||||
val videosString = document.selectFirst("div[data-options]")
|
||||
?.attr("data-options")
|
||||
?.substringAfter("\\\"videos\\\":[{\\\"name\\\":\\\"")
|
||||
?.substringBefore("]")
|
||||
?: return emptyList<Video>()
|
||||
return videosString.split("{\\\"name\\\":\\\"").reversed().mapNotNull {
|
||||
val videoUrl = it.substringAfter("url\\\":\\\"")
|
||||
.substringBefore("\\\"")
|
||||
.replace("\\\\u0026", "&")
|
||||
val quality = it.substringBefore("\\\"").let {
|
||||
if (fixQualities) fixQuality(it)
|
||||
else it
|
||||
}
|
||||
val videoQuality = ("Okru:" + quality).let {
|
||||
if (prefix.isNotBlank()) "$prefix $it"
|
||||
else it
|
||||
}
|
||||
if (videoUrl.startsWith("https://"))
|
||||
Video(videoUrl, videoQuality, videoUrl)
|
||||
else null
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user